自学内容网 自学内容网

windows:Mamba_ssm踩坑

最近复现一个3D目标检测+mamba的深度学习框架。踩坑不断,码住之后补全!
问题是这样的,openpcdet好不容易在cuda11.7-Py38的环境配置好了,结果mamba_ssm全网都是在py10的一个whl编译安装的。没办法,先装manba重开openpcdet撞撞运气吧,win11真的难受。
安装mamba_sam从Triton到causal_conv1d到mamba_ssm过五关斩六将,还有sharedArray,最后一步需要编译安装,发现mamba其实一直都是cuda11.8装的torch和其他包,真无语了。没办法,直接跟教程安装了
conda install cudatoolkit==11.8 -c nvidia,喜提编译错误:

      nvcc fatal   : Unsupported gpu architecture 'compute_89'
      error: command 'C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v11.7\\bin\\nvcc' failed with exit code 1
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for pcdet
  Running setup.py clean for pcdet
Failed to build pcdet
ERROR: ERROR: Failed to build installable wheels for some pyproject.toml based projects (pcdet)

其实我的当前python虚拟环境都是cuda11.8的:

(mamba) D:\Mamba-master>nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2022 NVIDIA Corporation
Built on Wed_Sep_21_10:41:10_Pacific_Daylight_Time_2022
Cuda compilation tools, release 11.8, V11.8.89
Build cuda_11.8.r11.8/compiler.31833905_0

(mamba) D:\Mamba-master>where nvcc
C:\Users\anaconda3\envs\mamba\bin\nvcc.exe
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\bin\nvcc.exe

我的RTX4090也是支持89算力的,兜兜转转,我需要再装一个cuda11.8完整版继续了。
主要原因
conda 安装的cuda toolkit和nvidia下载的完整版cuda不一样!!!
Conda的Cudatoolkit本身并不直接提供C++编译功能,它主要是一个用于数据科学工具的开发和部署的包,包含了数据预处理、数据可视化、机器学习和深度学习等功能。然而,在某些特定情况下,如需要为PyTorch框架添加CUDA相关的拓展时,你可能需要编译CUDA相关的C++程序。

对于这种情况,你需要安装完整的NVIDIA官方提供的CUDA Toolkit,它包含了进行CUDA相关程序开发的编译、调试等过程相关的所有组件。Conda安装的Cudatoolkit通常只包含支持已经编译好的CUDA程序运行的相关的动态链接库,这在大多数情况下可以满足PyTorch等深度学习框架的使用需求。

总结来说,如果你需要使用C++进行CUDA编程和编译,你需要安装NVIDIA官方的CUDA Toolkit,而不是仅仅依赖于Conda的Cudatoolkit。

其他问题:安装selective_scan和causal_conv1d本来是装好了的,但是windows编译有问题,没有生成selective_scan_cuda_oflex.cp310-win_amd64.pyd 和causal_conv1d_cuda.cp310-win_amd64.pyd(在C:\Users\anaconda3\envs\mamba\Lib\site-packages)导致分别import causal_conv1d 和 selective_scan都可以,加上cuda就不行。

   import selective_scan_cuda
ModuleNotFoundError: No module named 'selective_scan_cuda'
python-BaseException

>>> import selective_scan
>>> import selective_scan_cuda
Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
 

import causal_conv1d_cuda
ModuleNotFoundError: No module named 'causal_conv1d_cuda'
python-BaseException

>>> import causal_conv1d
>>> import causal_conv1d_cuda
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'causal_conv1d_cuda'

我只能重新安装causal_conv1d和selective_scan,本来这两个安装的是1.1.3post的版本,我选择直接安装whl:可以参考https://blog.csdn.net/yyywxk/article/details/140422758,这个博主参考文章有这俩的编译好的selective-scan-0.0.2-cp310-cp310-win-amd64.whl、 causal_conv1d-1.1.1-cp310-cp310-win_amd64.whl,虽然是1.1.1版本,我的torch正好是2.1,可以用的!

当然,最后安装好还是有ModuleNotFoundError: No module named ‘selective_scan_cuda’,仔细一看我的库里是selective_scan_cuda_oflex.cp310-win_amd64.pyd不是selective_scan_cuda.cp310-win_amd64.pyd

因此我选择在报错的地方引用selective_scan_cuda_oflex

import causal_conv1d_cuda
import selective_scan_cuda_oflex as selective_scan_cuda

然后成功了。


原文地址:https://blog.csdn.net/weixin_42112760/article/details/142521407

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!