动机
随着mamba模型的出现,出现了mamba模型可以超越transformer的风头,视觉领域采用了vision mamba encoder(虽然说是mamba encoder, 更像是用了mamba的思想做的一个双向ssm的特征提取器), 个人认为这种新的架构应该可以用在自己的任务上, 因此进行了代码跑通尝试。 本文阐述一下我自己跑通的过程Windows系统(需要安装wsl2, linux虚拟内核)。
强调:需要电脑有nvidia的显卡!!!
wsl2的安装
本模块共参照了两个博客,分别是主要安装wsl2的安装换位, 以及anaconda安装, 次要安装nvidia的cudatoolkit
1. 安装wsl2
打开Windows powershell(管理员身份打开)
wsl --installdism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestartdism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
2. 重启电脑
wsl --set-default-version 2
从Microsoft store中搜索Ubuntu, 截图如下:
这里我选择的是20.04的版本
下载完毕后打开微软商店下载的ubuntu软件,会让你输入姓名和密码,姓名我输入的是我本电脑的名字,密码自己看情况,最好好记一点(应该是后面Linux sudo命令会输入,不要太复杂了记不住)。
3. 改wsl2的路径
wsl -l -v # 查看wsl的状态wsl --shutdown # 保证wsl是stopped状态wsl --export Ubuntu-20.04 your_expect_root # 如:f:\image_ubuntu20.04.tarwsl --unregister Ubuntu-20.04 # 移除原位置的wsl连接wsl -l -v # 查看wsl的状态"""
结果应该是:
适用于 Linux 的 Windows 子系统没有已安装的分发版。
可以通过访问 Microsoft Store 来安装分发版:
https://aka.ms/wslstore
"""wsl --import Ubuntu-20.04 f:\WSL-Ubuntu-20.04 f:\image_ubuntu20.04.tar # 建立新的连接wsl -l -v"""
结果应该是:
NAME STATE VERSION
* Ubuntu-20.04 Stopped 2
"""
然后,删除掉压缩包.tar文件。
anaconda的安装
进入wsl2, (即在Windows powershell 或者cmd中输入wsl即可)
cd# 2. 下载安装包:在此地址 https://www.anaconda.com/download/success 中找到安装包的链接
wget https://repo.anaconda.com/archive/Anaconda3-2024.02-1-Linux-x86_64.sh# 3. 安装 anaconda
## 1. 本体安装
bash Anaconda3-2024.02-1-Linux-x86_64.sh# 如果进入anaconda的同意协议, 按q快速到末尾, 接受(accept/yes)即可
最后会提示是否初始化环境变量(进入后就可以直接操作anaconda了), 选择Y, 结束
2. 换源
conda create -n 虚拟环境名称 python=3.10 # 创建虚拟环境conda activate 虚拟环境名称 # 进入虚拟环境pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple # 设置清华源, 不过有时候清华源比较慢,可以用中科大的源vim ~/.condarc # 进入后先按i切换到写入模式# 将下面代码复制到vim中
channels:- defaults
show_channel_urls: true
default_channels:- http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main- http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free- http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
custom_channels:conda-forge: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloudmsys2: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloudbioconda: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloudmenpo: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloudpytorch: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloudsimpleitk: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud# 按esc退出写入模式, 输入:wq保证写入保存退出source ~/.condarc # 进行更新
3. nvidia cudatoolkit安装
nvidia-smi # 查看自己的cuda号
# 以我的为例
"""
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 551.86 Driver Version: 551.86 CUDA Version: 12.4 |
|-----------------------------------------+------------------------+----------------------+
| GPU Name TCC/WDDM | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+========================+======================|
| 0 NVIDIA GeForce RTX 3060 ... WDDM | 00000000:01:00.0 Off | N/A |
| N/A 85C P0 65W / 105W | 1180MiB / 6144MiB | 41% Default |
| | | N/A |
+-----------------------------------------+------------------------+----------------------++-----------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=========================================================================================|
+-----------------------------------------------------------------------------------------+
"""
# 我可以安装12.4以下的cudatoolkit, 为了符合咱们装vision mamba的要求,这里装cudatoolkit-11.8
进入nvidia官网, 执行下面的命令(此时最好在根目录下[cd命令以下])
# 此时先安装gcc, 要不然无法安装
sudo apt update
sudo apt-get install gccwget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.run
sudo sh cuda_11.8.0_520.61.05_linux.run
静等一段时间, 这个装的比较慢, 但是正常操作后应该没有问题了
4. 配置vision mamba的环境
参考了大佬的配置
1. 粗略配置
按照网上的配置,最好是torch 2.1版本的, 注:所有的安装时间偏慢,
conda activate 虚拟环境名称conda install pytorch==2.1.1 torchvision==0.16.1 torchaudio==2.1.1 pytorch-cuda=11.8 -c pytorch -c nvidiaconda install cudatoolkit==11.8 -c nvidiaconda install -c "nvidia/label/cuda-11.8.0" cuda-nvccconda install packagingpip install causal-conv1d==1.1.1pip install mamba-ssm==1.2.0.post1
2. 细配
先去GitHub官网下载vision mamba的工程项目, 到一个路径, 假设下载到了E:/github, 打开到E:/github/Vim的位置
# shift + 鼠标右键到"在此处打开Linux shell"cp -rf mamba-1p1p1/mamba_ssm /home/用户名(如果按照我上面的话, 应该是root)/anaconda3/envs/mamba/lib/python3.10/site-packagespip install -r vim/vim_requirements.txt
5. 运行(训练为例)
参考:大佬
利用本地的pycharm先进入vim的dataset.py中改一下数据集进行下载,如图:
打开wsl,输入如下指令:
CUDA_VISIBLE_DEVICES=0 torchrun --master_port=6666 --nproc_per_node=1 vim/main.py \
--model vim_small_patch16_224_bimambav2_final_pool_mean_abs_pos_embed_with_midclstok_div2 --batch-size 2 \
--drop-path 0.05 --weight-decay 0.05 --lr 1e-3 --num_workers 1 \
--data-set CIFAR \
--data-path ./data # 自己建一个文件夹,放数据集的 \
--output_dir ./vim/output/vim_small_patch16_224_bimambav2_final_pool_mean_abs_pos_embed_with_midclstok_div2 \
--no_amp
结束!!(截一个正在训练的图)
参考资料:
- https://blog.csdn.net/weixin_44878336/article/details/133967607
- https://blog.csdn.net/zhoulizhu/article/details/135419603
- https://github.com/hustvl/Vim/
- https://github.com/hustvl/Vim/issues/67
- https://blog.csdn.net/weixin_45667052/article/details/136311600
感谢各位百忙观看!!