Ubuntu下VMamba环境1080ti显卡踩坑问题和解决
刘俊仪1216 2024-10-03 15:37:11 阅读 66
前言
Mamba应用在视觉领域的衍生的模型层出不穷,诸如 Vmamba 和Vision Mamba等。笔者在配置相关环境(版本安装要求:PyTorch 1.12+;CUDA 11.6+)时,发现按照他们给的安装方法安装时会遇到非常多的bug,原因都是版本兼容问题,特此记录。
笔者的设备如下:
设备一:笔者自己的笔记本显卡是 RTX 4060ti,cuda版本是 12.3,nvcc版本是 12.4。设备二:笔者的实验室继承设备显卡 GTX 1080ti, cuda版本是 10.1,nvcc版本是 10.1。
由此可知,笔者继承的设备的配置不满足VMamba环境配置的最低要求,因此在配置环境之前需要进行升级,本文会给出详细步骤。
因此,在开始之前你需要检查你的设备是否满足VMamba环境配置的最低要求!打开终端,依次输入以下命令行:
<code>nvidia-smi
nvcc -V
如图所示。
如果你的设备满足要求,那么你可以跳过更新步骤了。
如果你的设备不满足要求,在这里有几点注意事项:
首先我建议驱动版本和nvcc都设置为11.8,因为根据笔者经验,很多教程都是在11.8版本的基础上写的,并且11.8可能会比12.0版本以上更不容易出现问题。
配置VMamba环境
下载源码
打开终端,输入以下命令:
<code>git clone https://github.com/MzeroMiko/VMamba.git
这一步用git指令将该项目文件下载下来,你会得到一个名为VMamba的文件夹,其中包括这个项目的所有代码。
配置环境
这一步至关重要,笔者在这一步也是遇到了种种问题。请你在终端依次输入如下指令。
1.创建虚拟环境
切记不要在base环境里进行操作,以防出现各种问题,很麻烦。因此创建一个名为vmamba的虚拟环境,你的一切操作都在该环境中,不会对base环境有任何影响。
conda create -n vmamba python=3.10
2. 激活该环境
conda activate vmamba
3.安装cudatoolkit
这一步是原项目中没有的。我认为加上还是很有必要,否则容易出现后续版本不对应的问题。
conda install cudatoolkit==11.8
4.安装pytorch
pip install torch==2.1.1 torchvision==0.16.1 torchaudio==2.1.1 --index-url https://download.pytorch.org/whl/cu118
5.
pip install setuptools==68.2.2
conda install -c "nvidia/label/cuda-11.8.0" cuda-nvcc
6.安装各种依赖包
进入你刚刚下载的VMamba文件夹,下载该项目所需的各种依赖包。
cd VMamba
pip install -r requirements.txt
7.最后一步 安装selective_scan包
前面一般不会有什么问题,问题基本都集中在此。在这里会运行一个setup.py文件,如果运行成功,则表明你已经成功安装该包。
cd kernels/selective_scan && pip install .
问题
虽然显示成功安装该包,但是会出现各种各样的问题j。基本都是由于pytorch版本与cuda版本不对应导致。
笔者反复尝试卸载安装不同版本的pytorch,但都无济于事。在运行train.py文件时报如下错误:
由于笔者之前给笔记本(4060ti)以及租用的服务器(3080ti)都配过该环境,并且可以成功运行,因此考虑是否是显卡型号导致的与pytorch版本不对应。
通过查阅资料,可知确实如猜测一样,10系列显卡最好使用2.0版本以前的torch。但是pytorch官网显示,2.0版本以前的torch最高支持cuda版本为11.7,然而我的cuda版本为11.8,这就又会导致版本不对应的问题。
幸运的是,该帖子为问题的解决提供了思路。https://blog.csdn.net/qq_57433916/article/details/138139534
该帖子在算力角度对该问题进行解决,使用的是1070显卡。通过查阅资料显示,我的1080ti算力为6.1,selective_scan包同样不支持该算力的设备。
因此,借鉴该文章思路,首先使用如下命令行对原来安装的selective_scan包进行卸载:
<code>pip uninstall selective_scan
卸载完成后,在VMamba文件夹中找到kernels文件夹,再找到selective_scan文件夹,其中有一个名为setup.py的文件,打开,找到如下代码部分:
在if CUDA_HOME is not None:下,添加如下两行代码:
<code>cc_flag.append("-gencode")
cc_flag.append("arch=compute_60,code=sm_60")
添加完成后,关闭该setup.py文件。
打开终端,激活环境,进入对应目录,重新输入:
cd kernels/selective_scan && pip install .
成功安装。
回到项目中,运行train.py文件,成功运行,无报错。
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。