赞
踩
电脑环境:
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炼丹一样)
- def causal_conv1d_fn(
- x,
- weight,
- bias=None,
- seq_idx=None,
- initial_states=None,
- return_final_states=False,
- final_states_out=None,
- activation=None,
- ):
- """
- x: (batch, dim, seqlen)
- weight: (dim, width)
- bias: (dim,)
- seq_idx: (batch, seqlen)
- initial_states: (batch, dim, width - 1)
- final_states_out: (batch, dim, width - 1), to be written to
- activation: either None or "silu" or "swish"
- out: (batch, dim, seqlen)
- """
- #### 修改在这里!!!!!
- return causal_conv1d_ref(
- x,
- weight,
- bias,
- seq_idx,
- initial_states,
- return_final_states,
- final_states_out,
- activation,
- )
安装好了,做个测试,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 成功了,并不清楚修改源代码会带来什么影响,但是看报错信息和修改的方法,忙猜一手,可能会对训练的速度造成影响(瞎猜)哎呀,可能有点啰嗦,简单记录一下,如有错漏,希望大佬指正
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。