Mamba相关环境安装通用教程(causal_conv1d及mamba-ssm)

Ubuntu下安装Mamba相关模型环境,首先按照你要运行的代码创建环境,并安装相应的torch库

报错通常发生在 pip install causal-conv1d和pip install mamba-ssm时,特别是进入causal_conv1d或mamba-ssm目录运行python setup.py develop时,可能包括

  1. cuda版本错误
  2. 编译报错
  3. bimamba等import错误
  4. 两者版本不匹配引起的其他错误

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呢?

  1. 编译失败时的报错最后面往上一点里会给出一个链接,类似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点击该链接就可以直接下载(可能挂梯子)
  2. 参考论文作者运行的环境,看environment.yml 或者 requirements或者readme里是否提到原始版本
  3. 论文作者给出的github的issues中看看是否有别人成功复现的环境版本
  4. 如果以上都没有,则可以根据代码公开的时间来估计,找这之前发布的causal-conv1d和mamba-ssm版本,因为作者做实验需要一段时间,但这个方法不一定可行
  5. 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版本是否安装成功,是否匹配?

  1. 运行test_causal_conv1d.py验证causal_conv1d,不报错说明当前版本可以

  2. 运行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())

总结

  1. 最好是按照作者给出的版本复现,不然你参考别人的环境配置也可能出错
  2. 环境中的版本改来改去可能出现各种新的报错,善用pip uninstall和找到最源头的错误进行解决

参考链接

  1. (超详细)解决在conda环境种Mamba库无法安装的问题:causal-conv1d和mamba-ssm安装踩坑+解决
  2. Mamba 环境安装踩坑问题汇总及解决方法(Windows已解决)
  3. VMamba 安装教程(无需更改base环境中的cuda版本
  4. causal_conv1d_fwd(): incompatible function arguments: https://github.com/hustvl/Vim/issues/41
  • 19
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值