Linux下安裝mamba-ssm踩過的坑
起初的原因是,想要跑一個用到了mamba-ssm的項目,故嘗試在wsl中配置mamba-ssm庫。提示需要pip install mamba-ssm后報錯頻繁,遇到了許多問題。查閱了很多blog和issue,安裝了很多次環境,仿佛已經對注意事項倒背如流,但是就是無法解決最后的selective_scan_cuda.cpython-310-x86_64-linux-gnu.so: undefined symbol: ZN3c107Warning……
安裝mamba-ssm
原本,安裝mamba-ssm是非常簡單的:
pip install mamba-ssm
但是主要有兩個難點:
- 文件巨大,下載緩慢,以為是卡死
- 對python、CUDA、torch、numpy都有要求
更換Python版本
首先我直接在之前用過的環境中
pip install mamba-ssm
報錯
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?
查詢后發現,mamba-ssm 目前對 Python 3.12 支持不佳,同時windows中配置nvcc似乎比linux要更麻煩點。所以就選擇在wsl中配置該環境。
之后我選擇了Python 3.11。
創建新環境
這里我選擇python=3.11
conda create -n MAMBA_SSM python=3.11
conda activate MAMBA_SSM
安裝torch
這里我選擇torch=2.4.1。
詳細列表可參見Previous PyTorch Versions
pip install torch==2.4.1 torchvision==0.19.1 torchaudio==2.4.1 --index-url https://download.pytorch.org/whl/cu124
可以通過python -c "import torch; print(torch.__version__); print(torch.version.cuda)"來檢測當前torch版本。如果輸出:
2.4.1+cu124
12.4
加速安裝mamba_ssm
解決了上述問題后,如果在pip install mamba_ssm的過程中遇到
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 [Errno 110] Connection timed out>
ERROR: Failed building wheel for mamba_ssm
說明可能遇到了網絡波動問題(真網絡波動嗎?
可以去Releases · state-spaces/mamba手動下載,注意選擇與python、torch、CUDA版本均匹配的wheel文件。比如我是python=3.11.11,torch=2.4.1+cu124,CUDA=12.8,則下載mamba_ssm-2.2.2+cu122torch2.4cxx11abiFALSE-cp311-cp311-linux_x86_64.whl。(注:由于我選擇的是2.2.2舊版本,所以需要在Release v2.2.2 · state-spaces/mamba中尋找)
傳輸到wsl中。
如果是子用戶,可能還需要修改權限:
sudo chown xxx:xxx /home/xxx/mamba_ssm-2.2.2+cu122torch2.4cxx11abiFALSE-cp311-cp311-linux_x86_64.whl
然后使用pip安裝:
pip install /home/xxx/mamba_ssm-2.2.2+cu122torch2.4cxx11abiFALSE-cp311-cp311-linux_x86_64.whl
最后看到如:
Successfully installed ... mamba-ssm-2.2.2 ...
可知安裝成功。
手動編譯安裝
如果上述仍然沒有辦法成功安裝并運行,可選擇手動編譯。
可參考:
Issue #217 · state-spaces/mamba
安裝gcc
如果遇到報錯:
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.
這是triton在運行時需要用到C編譯器,如gcc,但系統沒有找到可用的C編譯器。
我是ubuntu系統。故我需要輸入:
sudo apt update
sudo apt install build-essential
會安裝 gcc、g++ 等常用編譯工具。
然后輸入:
gcc --version
會顯示版本號,如:
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.
則說明安裝正常。
后記
其實,上文的種種版本,我嘗試過了無數次組合。
最終,在友人的鼓勵下,翻了很多issue,我最終選擇重新創建一個環境,并且按照這條評論的版本,全部重裝了一邊。這次,一次性成功!

最后一次修改文章的各個版本號了,不改了。
參考文獻
Windows和Linux系統上的Mamba_ssm環境配置_mamba-ssm安裝-CSDN博客
但是其實上面這條blog基本沒用上。反復裝了無數種排列組合后,conda新開了個環境,采用9527MY這位同志的版本組合,一次性成功了。

浙公網安備 33010602011771號