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

打印 上一主题 下一主题

主题 768|帖子 768|积分 2304

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安装相应版本,在环境中运行以下命令:
  1. 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新版本 :
  1. pip uninstall causal_conv1d
  2. pip uninsntall mamba-ssm
复制代码
  1. // 版本号请按照你要复现的代码来
  2. pip install causal_conv1d==1.0.0
  3. 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等文件,只要能保证你要用到的网络可以正常运行就行)
  1. 举例:在vivim.py里加入
  2. if __name__ == "__main__" :
  3.         model = Vivim().cuda()
  4.         x = torch.randn(4,5,3,256,256).cuda()
  5.         y = model(x)
  6.         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企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

曹旭辉

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表