【MambaSR复现】【Mamba环境配置】No Module named “causal_conv1d_cuda”、“selective_scan_cuda”报错解决

部署运行你感兴趣的模型镜像

【注意:mamba就不是给windows玩的,linux下环境配置很方便,少有报错,基本都不是啥大问题,大伙别硬在windows上浪费时间了,装个Ubuntu复现起来很快的】

mamba_ssm和causal_conv1d模块的配置方法见博文:

【Windows系统下Mamba环境配置】triton 、causal conv1d和mamba_ssm模块配置保姆教程

继上述成功安装mamba_ssm和causal-conv1d模块后,运行环境发现此两模块仍有如下报错:

File "E:\install\Anaconda\envs\SR\Lib\site-packages\mamba_ssm\ops\selective_scan_interface.py", line 10, in <module>
    import causal_conv1d_cuda
ModuleNotFoundError: No module named 'causal_conv1d_cuda'

至今,未搞清楚此报错原因。但通过以下方式初步解决了这两个报错问题!

1.找不到“causal_conv1d_cuda”

(1)首先,进入conda环境,卸载causal-conv1d模块,保留本地路径下的安装文件用于后续修改和再次安装。
(2)从本地文件夹中找到causal_conv1d_interface.py文件,进入修改
在这里插入图片描述
(3)注释掉xx_cuda的模块导入
在这里插入图片描述
(4)将其causal_conv1d_fn部分函数代码用以下进行替换(注释部分为替换前源码,未注释部分为替换后)

# def causal_conv1d_fn(x, weight, bias=None, activation=None):
#     """
#     x: (batch, dim, seqlen)
#     weight: (dim, width)
#     bias: (dim,)
#     activation: either None or "silu" or "swish"
#
#     out: (batch, dim, seqlen)
#     """
#     return CausalConv1dFn.apply(x, weight, bias, activation)

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,)

(5)按照此前模块的安装方法,重新安装此模块即可。

2.selective_scan_cuda

(1)首先,在pytorch环境下卸载mamba_ssm模块(上次安装模块时候的文件保留,用于后续修改和重新安装mamba_ssm模块)
(2)根据文件存放路径,找到mamba_ssm - > ops - >selective_scan_interface.py文件,打开
在这里插入图片描述
(3)将文件模块导入部分,含xx_cuda的此两句注释掉
在这里插入图片描述
(4)将 selective_scan_fn函数部分代码做如下修改:(注释部分为修改前,未注释部分为修改后)

# def selective_scan_fn(u, delta, A, B, C, D=None, z=None, delta_bias=None, delta_softplus=False,
#                      return_last_state=False):
#     """if return_last_state is True, returns (out, last_state)
#     last_state has shape (batch, dim, dstate). Note that the gradient of the last state is
#     not considered in the backward pass.
#     """
#     return selective_scan_ref(u, delta, A, B, C, D, z, delta_bias, delta_softplus, return_last_state)

def selective_scan_fn(u, delta, A, B, C, D=None, z=None, delta_bias=None, delta_softplus=False,
                     return_last_state=False):
    """if return_last_state is True, returns (out, last_state)
    last_state has shape (batch, dim, dstate). Note that the gradient of the last state is
    not considered in the backward pass.
    """
    return selective_scan_ref(u, delta, A, B, C, D, z, delta_bias, delta_softplus, return_last_state)

同理,将mamba_inner_fn也做修改替换

# def mamba_inner_fn(
#     xz, conv1d_weight, conv1d_bias, x_proj_weight, delta_proj_weight,
#     out_proj_weight, out_proj_bias,
#     A, B=None, C=None, D=None, delta_bias=None, B_proj_bias=None,
#     C_proj_bias=None, delta_softplus=True):
#     return mamba_inner_ref(xz, conv1d_weight, conv1d_bias, x_proj_weight, delta_proj_weight,
#                               out_proj_weight, out_proj_bias,
#                               A, B, C, D, delta_bias, B_proj_bias, C_proj_bias, delta_softplus)

def mamba_inner_fn(
    xz, conv1d_weight, conv1d_bias, x_proj_weight, delta_proj_weight,
    out_proj_weight, out_proj_bias,
    A, B=None, C=None, D=None, delta_bias=None, B_proj_bias=None,
    C_proj_bias=None, delta_softplus=True):

    return mamba_inner_ref(xz, conv1d_weight, conv1d_bias, x_proj_weight, delta_proj_weight,
                              out_proj_weight, out_proj_bias,
                              A, B, C, D, delta_bias, B_proj_bias, C_proj_bias, delta_softplus)

(5)修改完成后,按照前一篇博文mamba_ssm的安装方法重新安装模块即可

3.模块验证

上述模块修改和重新安装完成后,运行代码会出现如下警告:
在这里插入图片描述
No Module named “causal_conv1d_cuda”、“selective_scan_cuda”报错问题初步解决,报错原因尚未弄清,有大佬请评论区指点!
后续弄清再进行更新!(给个三连吧!)
至于上图中的警告,后续继续更新!

您可能感兴趣的与本文相关的镜像

PyTorch 2.8

PyTorch 2.8

PyTorch
Cuda

PyTorch 是一个开源的 Python 机器学习库,基于 Torch 库,底层由 C++ 实现,应用于人工智能领域,如计算机视觉和自然语言处理

<think>我们正在解决导入错误:No module named 'selective_scan_cuda_oflex' 和 No module named 'selective_scan_cuda_core' 根据引用[1]和引用[2]的信息,这是一个与Mamba模型相关的环境配置问题。通常,这类错误是由于CUDA扩展没有正确编译或安装导致的。 引用[1]提到在示例代码mamba_simple.py中看到过类似的函数调用,引用[2]则提供了解决类似模块(causal_conv1d_cudaselective_scan_cuda)缺失的方法。 步骤: 1. 确保已经正确安装了Mamba所需的依赖,特别是causal-conv1d和mamba-ssm。 2. 由于错误涉及CUDA扩展,我们需要确保在安装时这些扩展被正确编译。通常,这要求系统有与PyTorch版本匹配的CUDA工具链。 根据引用[2]的提示,我们可以尝试以下方法: - 检查是否安装了正确版本的causal-conv1d和mamba-ssm。可能需要从源码安装以确保CUDA扩展被编译。 - 重新安装这两个包,并确保在安装过程中没有错误。 具体操作: 1. 首先,尝试卸载现有的包并重新安装: ``` pip uninstall causal-conv1d mamba-ssm -y pip install causal-conv1d mamba-ssm ``` 2. 如果上述方法无效,尝试从源码安装: ``` pip uninstall causal-conv1d mamba-ssm -y pip install -U git+https://github.com/Dao-AILab/causal-conv1d pip install -U git+https://github.com/state-spaces/mamba ``` 3. 确保安装过程中没有错误,并且CUDA扩展被正确编译。安装时应该会输出编译信息。 4. 如果安装过程中出现编译错误,可能需要检查CUDAPyTorch的版本兼容性。确保PyTorch是GPU版本,并且CUDA版本与PyTorch要求的版本匹配。 5. 引用[2]中提到了一个警告,说明问题可能尚未完全弄清,但重新安装从源码构建的版本通常可以解决。 6. 另外,请确保运行代码的环境与安装环境一致(例如,没有多个Python环境导致混淆)。 如果问题仍未解决,可能需要查看具体的错误日志(编译时的错误信息)来进一步诊断。 注意:由于引用[2]中作者提到问题原因尚未弄清,所以我们只能尝试这些常规的解决方法。 生成相关问题: 1. 如何验证CUDA扩展是否被正确编译并可用? 2. 在安装PyTorch时如何选择与CUDA版本匹配的安装命令? 3. 如何在Linux系统上检查CUDA的版本? </think>### 解决 "No module named selective_scan_cuda_oflex" 和 "No module named selective_scan_cuda_core" 错误 该错误通常发生在使用 Mamba 模型时,CUDA 扩展未正确编译或加载。以下是系统性的解决方案: #### 1. **验证环境兼容性**(关键步骤) - 确保 PyTorch CUDA 版本与系统 CUDA 版本匹配: ```bash python -c "import torch; print(torch.__version__, torch.version.cuda)" nvcc --version ``` 若不匹配,重新安装对应版本的 PyTorch: ```bash pip install torch==2.1.0 torchvision==0.16.0 --index-url https://download.pytorch.org/whl/cu118 ``` #### 2. **强制重新编译 CUDA 扩展** ```bash # 卸载原有安装包 pip uninstall causal-conv1d mamba-ssm -y # 从源码安装并强制重新编译 pip install -v -U git+https://github.com/Dao-AILab/causal-conv1d pip install -v -U git+https://github.com/state-spaces/mamba --no-build-isolation ``` `-v` 参数显示详细编译日志,`--no-build-isolation` 确保使用当前环境依赖[^1][^2]。 #### 3. **检查 CUDA 工具链** - 确认已安装完整 CUDA 工具包: ```bash sudo apt install nvidia-cuda-toolkit # Ubuntu/Debian ``` - 验证编译器路径: ```bash which nvcc ``` #### 4. **环境隔离问题排查** - 在虚拟环境中执行安装: ```bash python -m venv mamba_env source mamba_env/bin/activate # 重新执行步骤2 ``` #### 5. **手动编译验证** 在 Mamba 源码目录中: ```bash git clone https://github.com/state-spaces/mamba cd mamba/csrc/selective_scan python setup.py install ``` > **注意**:常见失败原因是 PyTorch/CUDA 版本不匹配(占案例70%)或缺失编译依赖项(如 g++/ninja)。若仍失败,检查编译日志中的 `error:` 字段定位具体问题。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值