Linux下安装mamba-ssm踩过的坑
<p>起初的原因是,想要跑一个用到了mamba-ssm的项目,故尝试在wsl中配置mamba-ssm库。提示需要<code>pip install mamba-ssm</code>后报错频繁,遇到了许多问题。查阅了很多blog和issue,安装了很多次环境,仿佛已经对注意事项倒背如流,但是就是无法解决最后的<strong>selective_scan_cuda.cpython-310-x86_64-linux-gnu.so: undefined symbol: ZN3c107Warning</strong>……</p><h2 id="安装mamba-ssm">安装mamba-ssm</h2>
<p>原本,安装mamba-ssm是非常简单的:</p>
<pre><code>pip install mamba-ssm
</code></pre>
<p>但是主要有两个难点:</p>
<ol>
<li>文件巨大,下载缓慢,以为是卡死</li>
<li>对python、CUDA、torch、numpy都有要求</li>
</ol>
<h2 id="更换python版本">更换Python版本</h2>
<p>首先我直接在之前用过的环境中</p>
<pre><code class="language-bash">pip install mamba-ssm
</code></pre>
<p>报错</p>
<pre><code class="language-bash">NameError: name 'bare_metal_version' is not defined
mamba_ssm was requested, but nvcc was not found.Are you sure your environment has nvcc available?
</code></pre>
<p>查询后发现,mamba-ssm 目前对 Python 3.12 支持不佳,同时windows中配置nvcc似乎比linux要更麻烦点。所以就选择在wsl中配置该环境。</p>
<p>之后我选择了Python 3.11。</p>
<h2 id="创建新环境">创建新环境</h2>
<p>这里我选择<code>python=3.11</code></p>
<pre><code class="language-bash">conda create -n MAMBA_SSM python=3.11
conda activate MAMBA_SSM
</code></pre>
<h2 id="安装torch">安装torch</h2>
<p>这里我选择<code>torch=2.4.1</code>。</p>
<p>详细列表可参见Previous PyTorch Versions</p>
<pre><code class="language-bash">pip install torch==2.4.1 torchvision==0.19.1 torchaudio==2.4.1 --index-url https://download.pytorch.org/whl/cu124
</code></pre>
<p>可以通过<code>python -c "import torch; print(torch.__version__); print(torch.version.cuda)"</code>来检测当前torch版本。如果输出:</p>
<pre><code>2.4.1+cu124
12.4
</code></pre>
<h2 id="加速安装mamba_ssm">加速安装mamba_ssm</h2>
<p>解决了上述问题后,如果在<code>pip install mamba_ssm</code>的过程中遇到</p>
<pre><code>Guessing wheel URL:https://github.com/state-spaces/mamba/releases/download/v2.2.4/mamba_ssm-2.2.4+cu12torch2.7cxx11abiTRUE-cp310-cp310-linux_x86_64.whl
error: <urlopen error Connection timed out>
ERROR: Failed building wheel for mamba_ssm
</code></pre>
<p>说明可能遇到了网络波动问题(真网络波动吗?</p>
<p>可以去Releases · state-spaces/mamba手动下载,<strong>注意选择与python、torch、CUDA版本均匹配的wheel文件</strong>。比如我是<code>python=3.11.11,torch=2.4.1+cu124,CUDA=12.8</code>,则下载<code>mamba_ssm-2.2.2+cu122torch2.4cxx11abiFALSE-cp311-cp311-linux_x86_64.whl</code>。(注:由于我选择的是2.2.2旧版本,所以需要在Release v2.2.2 · state-spaces/mamba中寻找)</p>
<p>传输到wsl中。</p>
<p>如果是子用户,可能还需要修改权限:</p>
<pre><code class="language-bash">sudo chown xxx:xxx /home/xxx/mamba_ssm-2.2.2+cu122torch2.4cxx11abiFALSE-cp311-cp311-linux_x86_64.whl
</code></pre>
<p>然后使用pip安装:</p>
<pre><code>pip install /home/xxx/mamba_ssm-2.2.2+cu122torch2.4cxx11abiFALSE-cp311-cp311-linux_x86_64.whl
</code></pre>
<p>最后看到如:</p>
<pre><code>Successfully installed ... mamba-ssm-2.2.2 ...
</code></pre>
<p>可知安装成功。</p>
<h2 id="手动编译安装">手动编译安装</h2>
<p>如果上述仍然没有办法成功安装并运行,可选择手动编译。</p>
<p>可参考:</p>
<p>Issue #217 · state-spaces/mamba</p>
<h2 id="安装gcc">安装gcc</h2>
<p>如果遇到报错:</p>
<pre><code class="language-python">raise RuntimeError("Failed to find C compiler. Please specify via CC environment variable.")
RuntimeError: Failed to find C compiler. Please specify via CC environment variable.
</code></pre>
<p>这是triton在运行时需要用到C编译器,如gcc,但系统没有找到可用的C编译器。</p>
<p>我是ubuntu系统。故我需要输入:</p>
<pre><code class="language-bash">sudo apt update
sudo apt install build-essential
</code></pre>
<p>会安装 gcc、g++ 等常用编译工具。</p>
<p>然后输入:</p>
<pre><code class="language-bash">gcc --version
</code></pre>
<p>会显示版本号,如:</p>
<pre><code>gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
</code></pre>
<p>则说明安装正常。</p>
<h2 id="后记">后记</h2>
<p>其实,上文的种种版本,我尝试过了无数次组合。</p>
<p>最终,在友人的鼓励下,翻了很多issue,我最终选择重新创建一个环境,并且按照这条评论的版本,全部重装了一边。这次,一次性成功!</p>
<p><img src="https://vanilla-picture-with-picgo.oss-cn-shenzhen.aliyuncs.com/img-from-OSS-uploader/20250524-192522-43481.png" alt="" loading="lazy"></p>
<p>最后一次修改文章的各个版本号了,不改了。</p>
<h2 id="参考文献">参考文献</h2>
<p>Windows和Linux系统上的Mamba_ssm环境配置_mamba-ssm安装-CSDN博客</p>
<p>但是其实上面这条blog基本没用上。反复装了无数种排列组合后,conda新开了个环境,采用9527MY这位同志的版本组合,一次性成功了。</p><br><br>
来源:https://www.cnblogs.com/Vanilla-chan/p/18894647
頁:
[1]