当前位置:   article > 正文

Mamba windows 环境安装踩坑 ModuleNotFoundError: No module named ‘causal_conv1d_cuda‘|‘selective_scan_cuda‘

Mamba windows 环境安装踩坑 ModuleNotFoundError: No module named ‘causal_conv1d_cuda‘|‘selective_scan_cuda‘

电脑环境:

windows11   cuda11.6(最高只到11.6了,呜呜)

torch 1.13  python 3.10

这里有一个点需要注意,安装mamba的时候需要安装一个依赖包 triton ,本来triton 没有windows版,于是github上有大佬编译了triton-windows版本,我去查看的时候只有适配py3.10版本的(这个点我记得比较清楚,当时我搜索的时候只有适配 py3.1 0的,为此我安装了python3.10)。

目前triton更新了多少,我并不清楚,所以最好提前搜索一下 trition 的wheel下载,确定一下现在有多少适配的版本,如果适配现有python版本的话就不用换python版本了,省了一个步骤。

回到正题,对于mamba安装,在github上只能找到cu118的wheel, 所以我选择的是源代码安装,方法参考下面的文章(在此说明,我并不清楚cu116的环境,下载cu118的wheel是不是能安装使用,不过你们可以试试,最好反馈一下,如果可以的话,下次我就不用这么麻烦了)

安装以后就会出现

ModuleNotFoundError: No module named  'selective_scan_cuda'

根据下面这篇文章的说法是cuda版本不兼容

windows系统下anaconda中配置Mamba官方代码环境_windows配置mamba-ssm-CSDN博客

参考这篇文章可以解决 ModuleNotFoundError: No module named 'selective_scan_cuda'的问题

安装好了mamba-ssm,接着安装causal_conv1d ,又出现了!!!

ModuleNotFoundError: No module named 'causal_conv1d_cuda'

这时候我到网上没有搜到相关的解决办法,之前我看过一点源码,感觉原作者写代码的时候,功能类似的函数都是近似的写法(命名方式,代码的排列等等)

我又跑回去看ModuleNotFoundError: No module named 'selective_scan_cuda'的解决办法,果然这两个函数调用我在示例代码mamba_simple.py里看到过,在使用的时候是类似的,

于是我顺着报错信息跳转到

causal_conv1d/causal_conv1d_interface.py 这个文件,查看源代码,与mamba_ssm/ops/selective_scan_interface.py 中的写法是相似的,然后我感觉可以借鉴ModuleNotFoundError: No module named 'selective_scan_cuda'的解决办法

就注释这行代码

import causal_conv1d_cuda

然后 接着找到def causal_conv1d_fn() 这个函数,把这个函数的return 调用改成下面这个代码的样子,结果就通了(我不知道为什么通,但是我直觉是这样,跟cv炼丹一样)

  1. def causal_conv1d_fn(
  2. x,
  3. weight,
  4. bias=None,
  5. seq_idx=None,
  6. initial_states=None,
  7. return_final_states=False,
  8. final_states_out=None,
  9. activation=None,
  10. ):
  11. """
  12. x: (batch, dim, seqlen)
  13. weight: (dim, width)
  14. bias: (dim,)
  15. seq_idx: (batch, seqlen)
  16. initial_states: (batch, dim, width - 1)
  17. final_states_out: (batch, dim, width - 1), to be written to
  18. activation: either None or "silu" or "swish"
  19. out: (batch, dim, seqlen)
  20. """
  21. #### 修改在这里!!!!!
  22. return causal_conv1d_ref(
  23. x,
  24. weight,
  25. bias,
  26. seq_idx,
  27. initial_states,
  28. return_final_states,
  29. final_states_out,
  30. activation,
  31. )

安装好了,做个测试,import一下,没有报错,很奈斯

如果你是因为ModuleNotFoundError: No module named 'causal_conv1d_cuda'的问题,查找到这篇文章的话,那么说明你已经安装了causal_conv1d 但是 import 的时候会出现问题

这里应该先卸载 causal_conv1d

pip uninstall causal_conv1d

在应用上面的方法修改完causal_conv1d/causal_conv1d_interface.py后,跳转到causal_conv1d文件夹setup.py当前文件夹下运行指令重新安装

pip setup.py install

如果不这么做的话,你会发现import mamba_ssm 和 causal_conv1d 都只会在他们自己所在的项目文件夹下有效,这可能涉及path路径修改,不过这太麻烦了,还不如卸载重装。

目前只是import 成功了,并不清楚修改源代码会带来什么影响,但是看报错信息和修改的方法,忙猜一手,可能会对训练的速度造成影响(瞎猜)哎呀,可能有点啰嗦,简单记录一下,如有错漏,希望大佬指正

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/677666
推荐阅读
相关标签
  

闽ICP备14008679号