找回密码
 会员注册
查看: 32|回复: 0

VMamba安装教程(无需更改base环境中的cuda版本)

[复制链接]

2万

主题

0

回帖

6万

积分

超级版主

积分
68594
发表于 2024-9-10 12:28:43 | 显示全部楼层 |阅读模式
导航Linux下Mamba及Vim安装问题参看本人之前博客:Mamba环境安装踩坑问题汇总及解决方法Windows下Mamba的安装参看本人之前博客:Window下Mamba环境安装踩坑问题汇总及解决方法(无需绕过selective_scan_cuda)Windows下VMamba的安装参看本人之前博客:Windows下VMamba安装教程(无需更改base环境中的cuda版本且可加速)Window下Vim环境安装参考本人之前博客:Window下Vim环境安装踩坑问题汇总及解决方法目录导航背景Linux下正确安装命令CUDA12.1CUDA11.8最后一步编译不成功报错及解决(20240714)1.基本报错信息2.CUDAversionmismatch3.fatalerror:cusparse.h网传方法解决方法4.fatalerror:cublas_v2.h5.fatalerror:cusolverDn.h6.fatalerror:crypt.h网传方法解决方法7.fatalerror:cuda_runtime.h报错及解决(20240715)8.正常安装Vmamba找不到找不到selective_scan_cuda模块9.无法导入selective_scan_cuda_oflex和selective_scan_cuda_core模块10.正常安装Vmamba找不到selective_scan_cuda_core模块11.g++版本不支持12.fatalerror:cuda_bf16.h:背景最近有不少小伙伴在Linux上安装VMamba(VMamba:VisualStateSpaceModel)时,按照官方的安装命令会遇到各种各样的错误,部分错误可以按照Mamba以及Vim中相似的方法进行处理(参考笔者之前的博客:Mamba环境安装踩坑问题汇总及解决方法),但是有些问题无法解决,特此汇总。注意,即使base环境中安装的CUDA版本过低,也不影响Mamba,Vim以及VMamba环境的正常安装。(安装问题/资源自取/论文合作想法请+vx:931744281)Linux下正确安装命令运行之前需要下载好Vmamba官方的源码,用git下载方式如下:gitclonehttps://github.com/MzeroMiko/VMamba.git1下面分别是CUDA12.1和CUDA11.8两种环境的安装,由于此时CUDA的内核以及相关文件均安装在虚拟环境中,可以不考虑base环境里CUDA的版本。具体安装哪个版本由读者自由选择。环境安装成功的关键是最后一步是否能编译成功。CUDA12.1condacreate-nvmambapython=3.10condaactivatevmambacondainstallcuda-nvcc==12.1.105pipinstall-rrequirements.txtcondainstallnvidia/label/cuda-12.1.0::libcusparse-dev#可选,根据最后一步报错condainstallnvidia/label/cuda-12.1.0::libcublas-dev#可选,根据最后一步报错condainstallnvidia/label/cuda-12.1.0::libcusolver-dev#可选,根据最后一步报错condainstalllibxcrypt#可选,根据最后一步报错cdkernels/selective_scan&pipinstall.123456789CUDA11.8condacreate-nvmambapython=3.10condaactivatevmambacondainstallcudatoolkit==11.8pipinstalltorch==2.1.1torchvision==0.16.1torchaudio==2.1.1--index-urlhttps://download.pytorch.org/whl/cu118pipinstallsetuptools==68.2.2condainstall-c"nvidia/label/cuda-11.8.0"cuda-nvccpipinstall-rrequirements.txtcondainstallnvidia/label/cuda-11.8.0::cuda-cudart-dev#可选,根据最后一步报错condainstallnvidia/label/cuda-11.8.0::libcusparse-dev#可选,根据最后一步报错condainstallnvidia/label/cuda-11.8.0::libcublas-dev#可选,根据最后一步报错condainstallnvidia/label/cuda-11.8.0::libcusolver-dev#可选,根据最后一步报错cdkernels/selective_scan&pipinstall.123456789101112最后一步编译不成功其中的部分命令实际是根据最后一步报错倒推的,根据大家实际环境的不同因人而异。最后一步的selective_scan笔者已经打包出whl安装包,见selective-scan-0.0.2-cp310-cp310-linux-x86-64.whl(CUDA12.1不含core)。可联系本人vx自取,安装命令为:pipinstallselective_scan-0.0.2-cp310-cp310-linux_x86_64.whl1selective-scan(CUDA11.8包含selective_scan_core)的whl为:selective-scan(CUDA11.8包含core)selective-scan(CUDA12.1包含selective_scan_core)的whl为:selective-scan(CUDA12.1包含core)报错及解决(20240714)几乎所有的报错都集中在最后一步的编译上,总结如下。1.基本报错信息出现报错:Buildingwheelsforcollectedpackages:selective_scanBuildingwheelforselective_scan(setup.py)...errorerror:subprocess-exited-with-error×pythonsetup.pybdist_wheeldidnotrunsuccessfully.│exitcode:1╰─>[61linesofoutput]torch.__version__=2.3.1+cu121.........[endofoutput]note:Thiserrororiginatesfromasubprocess,andislikelynotaproblemwithpip.ERROR:Failedbuildingwheelforselective_scanRunningsetup.pycleanforselective_scanFailedtobuildselective_scanERROR:Couldnotbuildwheelsforselective_scan,whichisrequiredtoinstallpyproject.toml-basedprojects12345678910111213141516171819202122只有编译过程中出现错误,就会以这种输出结尾。因此,本段输出开头和结尾的报错信息毫无用处,需要重点查看中间部分的报错输出。如以下画框部分。2.CUDAversionmismatch报错如下:RuntimeError:ThedetectedCUDAversion(11.8)mismatchestheversionthatwasusedtocompilePyTorch(12.1).PleasemakesuretousethesameCUDAversions.123原因是CUDA版本和PyTorch支持的CUDA版本不一致。解决方案为升高CUDA版本或降低PyTorch支持的版本,即:condauninstallcudatoolkit#如果之前装了cudatoolkit,先卸载;其最高版本只有11.8condainstallcuda-nvcc==12.1.10512或者先卸载高版本的pytorch,然后pipinstalltorch==2.1.1torchvision==0.16.1torchaudio==2.1.1--index-urlhttps://download.pytorch.org/whl/cu1181注意,不指定index-url会默认安装CUDA最新版本的pytorch。3.fatalerror:cusparse.h出现报错fatalerror:cusparse.h:Nosuchfileordirectory,如下:....xxxx/vmamba/lib/python3.10/site-packages/torch/include/ATen/cuda/CUDAContextLight.h:7:10:fatalerror:cusparse.h:Nosuchfileordirectory7|#include|^~~~~~~~~~~~compilationterminated.12345网传方法网上有些博客的方法治标不治本,例如:使用下列指令指定后解决问题:exportCUDA_HOME=/usr/local/cuda-10.2;(博客:Cuda程序编译报错:fatalerror:cusparse.h:Nosuchfileordirectory)修改文件~/.bashrc里的几个exportPATH;(博客:有效解决OSError:libcusparse.so.11:cannotopensharedobjectfile:Nosuchfileordirectory)将缺少的cusparse.h下载放入对应目录;(博客:cusparse.h:Nosuchfileordirectorycompilationterminated.)解决方法解决方法是安装相关的环境,有两种解决方法:在Linux环境下安装相关的包(不推荐且无必要,一般需要管理员权限),即apt-getinstallcuda-cusparse-dev-10-1(博客:fatalerror:cusparse.h:Nosuchfileordirectorycompilationterminated.error:command‘/usr/loca)。注意:cuda11起包名改成了libcusparse,因此,命令应改为:apt-getinstalllibcusparse-dev-11-8(博客:矩池云上缺少cusparse.h头文件解决方法)更好的解决方法是利用conda安装libcusparse-dev来解决,笔者发现,在Anaconda官方网站中,在nvidia仓库下面存在合适的包可供下载,它们将CUDA的各个核心算子都写成了可供conda安装的包。因此,缺少什么CUDA头文件,均可以从这个仓库里找到合适的包。因此,此处的命令是:condainstallnvidia/label/cuda-12.1.0::libcusparse-dev。4.fatalerror:cublas_v2.h出现报错fatalerror:cublas_v2.h:Nosuchfileordirectory,如下:....xxxx/vmamba/lib/python3.10/site-packages/torch/include/ATen/cuda/CUDAContextLight.h:7:10:fatalerror:cublas_v2.h:Nosuchfileordirectory|#include|^~~~~~~~~~~~compilationterminated.12345原因同报错3,因此解决方法为:condainstallnvidia/label/cuda-12.1.0::libcublas-dev。5.fatalerror:cusolverDn.h出现报错fatalerror:cusolverDn.h:Nosuchfileordirectory,如下:....xxxx/vmamba/lib/python3.10/site-packages/torch/include/ATen/cuda/CUDAContextLight.h:7:10:fatalerror:cusolverDn.h:Nosuchfileordirectory|#include|^~~~~~~~~~~~compilationterminated.12345原因同报错3,因此解决方法为:condainstallnvidia/label/cuda-12.1.0::libcusolver-dev。6.fatalerror:crypt.h出现报错fatalerror:crypt.h:Nosuchfileordirectory,原因同报错3,但此时nvidia下已经找不到对应的包了,出现报错的位置变成了Python。网传方法有的博客先在Ubuntu中使用apt命令安装必要的库,针对虚拟环境调整文件路径,以及通过conda-forge渠道安装libxcrypt。(博客:crypt.h:Nosuchfileordirectory亲测)方法较为复杂,不推荐且无必要,一般需要管理员权限。解决方法受网上博客最后一步启发,在Anaconda官方网站conda-forge仓库发现了一个包——libxcrypt,因此解决方法为:condainstalllibxcrypt。7.fatalerror:cuda_runtime.h配置CUDA11.8版本时,发现最后一步编译出现错误,fatalerror:cuda_runtime.h:Nosuchfileordirectory:....cc1plus:fatalerror:cuda_runtime.h:Nosuchfileordirectorycompilationterminated.123参考博客如何在anaconda环境中安装cuda.h和cuda_runtime.h,得到具体的anaconda环境下的解决方法:condainstallnvidia/label/cuda-11.8.0::cuda-cudart-dev#根据CUDA版本1报错及解决(20240715)8.正常安装Vmamba找不到找不到selective_scan_cuda模块VMamba中遇到selective_scan_cuda模块Nomodulenamed'selective_scan_cuda'VMamba的代码和Mamba是独立的,如果想有selective_scan_cuda包,则需要安装mamba_ssm,参考之前博客:Linux:Mamba环境安装踩坑问题汇总及解决方法Windows:Window下Mamba环境安装踩坑问题汇总及解决方法(无需绕过selective_scan_cuda)注意,mamba的这个包在Vmamba里面不是必须的。9.无法导入selective_scan_cuda_oflex和selective_scan_cuda_core模块同时出现以上报错,一般因为安装的是Mamba而不是VMamba,Mamba安装成功后环境中本来就没有selective_scan_cuda_oflex和selective_scan_cuda_core模块,请按前文Vmamba正确的顺序安装Vmamba的环境。10.正常安装Vmamba找不到selective_scan_cuda_core模块除了selective_scan_cuda_core模块,还有可能找不到selective_scan_cuda_nrow模块,这是因为在编译selective_scan时,在setup.py第40行选用的模式只有[‘oflex’]MODES=["oflex"]#MODES=["core","ndstate","oflex"]#MODES=["core","ndstate","oflex","nrow"]123改为:MODES=["core","oflex"]#MODES=["core","ndstate","oflex"]#MODES=["core","ndstate","oflex","nrow"]123修改此处再编译即可。注意,该模块也不是必须的。而ndstate在最新代码中源文件已经被删除,默认模式即可,不需要修改。selective-scan(CUDA11.8包含selective_scan_core)的whl为:selective-scan(CUDA11.8包含core)selective-scan(CUDA12.1包含selective_scan_core)的whl为:selective-scan(CUDA12.1包含core)11.g++版本不支持出现报错RuntimeError:Thecurrentinstalledversionofg++(4.8.5)islessthantheminimumrequiredversion,具体为:RuntimeError:Thecurrentinstalledversionofg++(4.8.5)islessthantheminimumrequiredversionbyCUDA11.7(6.0.0).Pleasemakesuretouseanadequateversionofg++(>=6.0.0,
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2025-1-5 09:37 , Processed in 0.462246 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表