Ubuntu下安装Mamba干系模子环境,起首按照你要运行的代码创建环境,并安装相应的torch库
报错通常发生在 pip install causal-conv1d和pip install mamba-ssm时,特别是进入causal_conv1d或mamba-ssm目录运行python setup.py develop时,可能包括
- cuda版本错误
- 编译报错
- bimamba等import错误
- 两者版本不匹配引起的其他错误
1. cuda版本错误
起首 nvcc -V 看下环境中的cuda版本是否精确,需要在11.6以上,可以根据torch的后缀+cu118安装相应版本,在环境中运行以下命令:
- conda install -c "nvidia/label/cuda-11.8.0" cuda-nvcc
复制代码 假如需要安装其他版本的可以参考文末的链接
2. 编译报错如ERROR: Could not build wheels for mamba-ssm, which is required to install pyproject.toml-based projects
mamba-ssm可以换成别的如selective_scan/causal_conv1d,总之就是编译出错,而且在这一步要好久,由于是联网下载所以速率可能很慢
可以去下面两个网站中下载所需的whl版本并手动安装。
causal-conv1d:https://github.com/Dao-AILab/causal-conv1d/releases
mamba-ssm:https://github.com/state-spaces/mamba/releases
如何知道需要哪个版本的mamba-ssm和causal_conv1d呢?
- 编译失败时的报错末了面往上一点里会给出一个链接,类似https://github.com/state-spaces/mamba/releases/download/v1.0.1/mamba_ssm-1.0.1+cu118torch2.1cxx11abiFALSE-cp39-cp39-linux_x86_64.whl,按住ctrl点击该链接就可以直接下载(可能挂梯子)
- 参考论文作者运行的环境,看environment.yml 大概 requirements大概readme里是否提到原始版本
- 论文作者给出的github的issues中看看是否有别人成功复现的环境版本
- 假如以上都没有,则可以根据代码公开的时间来估计,找这之前发布的causal-conv1d和mamba-ssm版本,由于作者做实验需要一段时间,但这个方法不一定可行
- cu118表示cuda版本,torch2.1表示torch按本,通常选带FALSE的,cp39表示python版本为3.9
下载完成后,进入下载完成的whl文件目录,再进入你的conda环境,pip install ***.whl文件名安装
3. bimamba等import错误:ImportError: cannot import name ‘bimamba_inner_fn’ from ‘mamba_ssm.ops.selective_scan_interface’
以及在from mamba_ssm.ops.selective_scan_interface import bimamba_inner_fn, bimamba_inner_ref出现红线
这是由于论文作者修改了mamba-ssm导致与原始的(pip install的大概从官网release里下载whl后安装的)不一样了
需要用作者自己写的mamba-ssm库更换原来中安装的:
复制作者的mamba-ssm文件夹(留意是子文件夹,假如有父文件夹也叫mamba-ssm,就复制里面的子文件夹mamba-ssm),进入目录anaconda3/envs/mamba(你的环境名)/lib/python3.9(你的py版本)/site-packages/粘贴更换
causal-conv1d库不一定要更换,假如test_causal_conv1d.py能运行正常就可以
4. causal_conv1d和Mamba-ssm版本不匹配:TypeError: causal_conv1d_fwd(): incompatible function arguments. The following argument types are supported: 1. (arg0: torch.Tensor, arg1: torch.Tensor, arg2: Optional[torch.Tensor], arg3: Optional[torch.Tensor], arg4: bool) -> torch.Tensor
找到作者给出的版本重新安装,重新安装前最好先pip uninstall原来的版本,再pip install新版本 :
- pip uninstall causal_conv1d
- pip uninsntall mamba-ssm
复制代码- // 版本号请按照你要复现的代码来
- pip install causal_conv1d==1.0.0
- pip uninsntall mamba-ssm==1.0.1
复制代码 5. 其他衍生错误
衍生错误还可能包括以下这些,请根据以上4点问题举行排查:
- RuntimeError: Error compiling objects for extension
- ERROR: found no collectors for /home/lab/Documents/video-mamba-suite-main/mamba/tests/ops/test_selective_scan.py::test_bimamba_inner_fn_grad_check
- error: identifier “__cudaDeviceSynchronizeDeprecationAvoidance” is undefined
- ModuleNotFoundError: No module named ‘packaging’ 可以在安装mamba-ssm和causal_conv1d前先conda install packaging,详细参考文末链接[2]
- AttributeError: ‘str’ object has no attribute ‘contiguous’
验证是否安装成功
如何知道自己causal_conv1d和mamba-ssm版本是否安装成功,是否匹配?
- 运行test_causal_conv1d.py验证causal_conv1d,不报错说明当前版本可以
- 运行test_mamba_module.py和test_selective_scan.py验证mamba-ssm,假如报错,没关系,直接找到你要运行的谁人网络的文件,看看是否能正常输出,假如可以,就可以用了(有些时间作者修改了mamba_simple.py等文件,只要能保证你要用到的网络可以正常运行就行)
- 举例:在vivim.py里加入
- if __name__ == "__main__" :
- model = Vivim().cuda()
- x = torch.randn(4,5,3,256,256).cuda()
- y = model(x)
- print(y.size())
复制代码 总结
- 最好是按照作者给出的版本复现,不然你参考别人的环境设置也可能出错
- 环境中的版本改来改去可能出现各种新的报错,善用pip uninstall和找到最源头的错误举行解决
参考链接
- (超详细)解决在conda环境种Mamba库无法安装的问题:causal-conv1d和mamba-ssm安装踩坑+解决
- Mamba 环境安装踩坑问题汇总及解决方法(Windows已解决)
- VMamba 安装教程(无需更改base环境中的cuda版本
- causal_conv1d_fwd(): incompatible function arguments: https://github.com/hustvl/Vim/issues/41
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |