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炼丹一样)

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

  • 27
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值