VMamba模型复现(linux+Anaconda+vscode)
VMamba模型代码地址:MzeroMiko/VMamba: VMamba: Visual State Space Models,code is based on mambahttps://github.com/MzeroMiko/VMamba
默认前提是,已经配置好了linux+Anaconda环境,这里只介绍怎样配置用于VMamba模型的虚拟环境以及vscode链接测试模型。
1.创建虚拟环境,直接在Ubuntu终端输入指令
conda create -n VMamba python==3.10.13
2.激活虚拟环境
conda activate VMamba
3.下载cuda-11.8,一定要是这个版本,别的版本不行!大多数manba环境的搭建都是因为cuda版本导致的错误,所以这里一定注意。
conda install cudatoolkit==11.8 -c nvidia
4.验证cuda是否正确安装
conda list cudatoolkit
5.安装torchvision和torchaudio
pip install torch==2.1.1 torchvision==0.16.1 torchaudio==2.1.1 --index-url https://download.pytorch.org/whl/cu118
6.安装ncvv
conda install -c "nvidia/label/cuda-11.8.0" cuda-nvcc
7.安装打包工具packaging
conda install packaging
8.安装openlab环境,顺序运行以下指令
pip install mmcv==2.1.0 -f https://download.openmmlab.com/mmcv/dist/cu118/torch2.1/index.html
pip install mmengine==0.10.1
pip install mmdet==3.3.0 mmsegmentation==1.2.2 mmpretrain==1.2.0
9.安装causal-conv1d 和 mamba-ssm,最容易报错的地方。
pip install causal-conv1d==1.1.1
pip install mamba-ssm==1.1.2
10.找到地址wsl.localhostUbuntu-20.04home你自己的用户名称,创建project文件夹用于存放项目文件,将从github上下载的VMamba-main文件夹拷贝至其中。
11.vscode打开项目,通过左下角的wsl连接,打开终端激活VMamba环境
12.在classification/models/vmamba.py最后添加
device = torch.device("cuda:0")
hidden_dim = 3 # 假设 VSSBlock 的隐藏维度为 64
network = VSSM(hidden_dim).to('cuda:0')
# 随机生成一张输入图片作为示例
input_image = torch.randn(1, 3, 224, 224) # 假设输入图片大小为 224x224,通道数为 3(RGB图像)
input_image = input_image.to(device)
# 前向传播
output = network(input_image)
# 输出结果的大小
print("Output shape:", output.shape)
13.在终端运行vmamba.py,这里不出意外会报一个错Can not import selective_scan_cuda_oflex,
14.这个错误是由于虚拟环境和外面的环境的cuda版本不一致的问题导致的,所以我们不仅仅虚拟环境的cuda版本为11.8,而且base的cuda版本也要为11.8才行,具体可以输入指令nvcc -V查看版本,先卸载原来的版本,再重新下载cuda11.8。
sudo apt-get --purge remove 'cuda*' #卸载原本的cuda
#下载cuda11.8
sudo wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin
sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600
sudo wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda-repo-wsl-ubuntu-11-8-local_11.8.0-1_amd64.deb
sudo dpkg -i cuda-repo-wsl-ubuntu-11-8-local_11.8.0-1_amd64.deb
sudo cp /var/cuda-repo-wsl-ubuntu-11-8-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda
15.更新cuda的路径,完成后输入指令nvcc -V查看是否成功安装,这部分内容有不懂的网上很多教程,这里只简单说一下过程。
# 编辑路径
vim ~/.bashrc
# 在最下方添加路径 i进入编辑模式 esc退出编辑模式,输入:wq保存更改
export PATH=/usr/local/cuda-11.8/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64:$LD_LIBRARY_PATH
# 保存配置
source ~/.bashrc
退出终端重新进去
# 检查是否正确安装
nvcc -V
16.安装selective_scan,指令来自官网,在vscode终端运行,不出意外还会报错,这里就是报错最多的地方,具体解决方案参考这篇博客:VMamba 安装教程(无需更改base环境中的cuda版本)_vmamba安装-CSDN博客https://blog.csdn.net/yyywxk/article/details/140418043
cd kernels/selective_scan && pip install .
17.作者到这一步崩溃了,报了个错,解决不了啊!有大神指导下吗????
UserWarning: There are no g++ version bounds defined for CUDA version 11.8
18.咨询了一下大佬,说这个模块只影响速度,还是可以跑训练的,所以基本上可以了。