Mamba环境安装指南:包括causal_conv1d及mamba-ssm的安装教程

目录

  • 1. cuda版本错误
  • 2. 编译报错如ERROR: Could not build wheels for mamba-ssm, which is required to install pyproject.toml-based projects
  • 3. bimamba等import错误:ImportError: cannot import name 'bimamba_inner_fn' from 'mamba_ssm.ops.selective_scan_interface'
  • 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
  • 5. 其他衍生错误
  • 验证是否安装成功
  • 总结
  • 参考链接
  • 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

    作者:JACOBWHY

    物联沃分享整理
    物联沃-IOTWORD物联网 » Mamba环境安装指南:包括causal_conv1d及mamba-ssm的安装教程

    发表回复