Linux上复现Vision Mamba记录

宁睿  金牌会员 | 2024-12-29 00:03:18 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 870|帖子 870|积分 2620

一、环境设置

      需要安装的环境:Python3.10+cuda11.8+torch2.1.1
      由于Mamba中的某些包只支持Linux体系,因此是最好选择Linux体系。
1.安装cuda

使用如下下令查察显卡支持的最高cuda版本,待安装的cuda版本需低于该版本。如图,我的显卡最高支持cuda12.2.vision_mamba最好安装cuda11.8的版本 
  1. nvidia-smi
复制代码

在官网找到11.8:CUDA Toolkit Archive | NVIDIA Developer

(在下令行中查察自己体系的版本号和发行版本:)
  1. lsb_release -a
复制代码

按照自己的版本号举行选择,得到两行下令.

可以直接在下令行中输入以上下令举行安装,但是时间比较久。
因此我们可以复制下令行后面的链接直接举行下载,之后上传到Ubuntu体系上。链接如下:https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.run
直接复制该链接会弹出下载任务,将其保存在Ubuntu体系的home/root文件夹下。使用下令行进入该文件夹下:
  1. cd home/root
复制代码
输入第二条指令举行安装
  1. sudo sh cuda_11.8.0_520.61.05_linux.run
复制代码
安装过程中会弹出第一个对话框,这里默认已经安装过Nvidia驱动,因此选择  continue 。
在弹出的第二个对话框中输入 accept 。按下回车键
末了选择 install
安装成功

2.设置环境变量

首先在linux中安装vim编辑器:
  1. sudo apt-get install vim-gtk
复制代码
为方便使用,对vim举行简单设置(可跳过)
开始对vim举行设置
首先进入vim设置文件
  1. sudo vim /etc/vim/vimrc
复制代码
按下 "i" 进入编辑模式
  1. set ai                    自动缩进,与上一行保持一致的自动空格
  2. set ic                    在查询模型与匹配模式下忽略大小写
  3. set number                左侧显示行号
  4. set showmatch             显示括号配对,并高亮显示相匹配的括号
  5. set showmode              文本输入模型下,加亮显示模式指示器
  6. set showcmd               在状态栏显示所执行的指令,未完成的指令片段
  7. set warn                  长行显示自动折行
  8. set cindent               以C/C++模式缩进
  9. set ruler                 打开状态栏标尺
  10. set scrolloff=6           设置光标离窗口上下6行时窗口自动滚动
  11. set tabstop=4             设置Tab长度为4
  12. set wrap                  自动换行显示
  13. syntax enable
  14. syntax on                 自动语法高亮
复制代码
将上述设置粘贴在文件末尾
按 “Esc” 退出编辑模式  按“Shift+:” 输入下令“wq”保存并退出(注:Shift后的:必须是英笔墨符)
设置结束
在下令行中输入
  1. sudo vim ~/.bashrc
复制代码
在打开的文件末尾添加
  1. export PATH=/usr/local/cuda-11.8/bin${PATH:+:${PATH}}
  2. export LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
  3. export CUDA_HOME=/usr/local/cuda-11.8
复制代码
更新体系环境
  1. source ~/.bashrc
  2. sudo ldconfig
复制代码
查察安装的cuda版本
  1. nvcc -V
复制代码

显示11.8即安装成功.
3.安装Python3.10版本

参考这篇博客举行安装:Ubuntu python3.10 安装教程,并更新python,pip默认指向为python3.10, pip3(超详细教程)_ubuntu安装python3.10-CSDN博客
4.创建虚拟环境

这里如果安装了anaconda可以使用conda下令举行创建,可以参考这篇博客举行linux上安装Anaconda并创建一个虚拟环境_在虚拟机使用conda搭建python3.10环境linux-CSDN博客我使用的是venv创建虚拟环境
首先进入项目文件夹,创建虚拟环境,名称自己起
  1. cd vision_mamba
  2. python3 -m venv <name>
复制代码
使用source下令找到环境中bin文件下的activate文件来激活环境
(by the way :退出环境直接在终端输入 “deactivate”  )
  1. source vision_mamba/<环境名>/bin/activate
复制代码

我的环境名称是 vim ,但是我的环境没有创建在vision_mamba文件夹下,vision_mamba文件中原本含有vim文件。因此,为防止混淆,发起最好使用别的名称作为虚拟环境的名称。
5.安装Pytorch

使用离线安装方式,时间快且不易出错
进入PyTorch官网,选择Previous PyTorch Versions | PyTorch 选择要安装的torch版本,这里最好安装torch2.1.1

可以选择下令行安装,但是这里我选择离线安装.在欣赏器中输入下令行后面的链接。
  1. https://download.pytorch.org/whl/cu118
复制代码

分别选择torch2.1.1、torchvision0.16.1和torchaudio2.1.1的gpu、linux和python3.10版本举行下载。
 

进入保存的文件夹中
输入以下下令举行安装(pip源路径下载太慢 因此我使用的是清华源)
  1. pip install torch-2.1.1+cu118-cp310-cp310-linux_x86_64.whl -i https://pypi.tuna.tsinghua.edu.cn/simple
  2. pip install torchaudio-2.1.1+cu118-cp310-cp310-linux_x86_64.whl -i https://pypi.tuna.tsinghua.edu.cn/simple
  3. pip install torchvision-0.16.1+cu118-cp310-cp310-linux_x86_64.whl -i https://pypi.tuna.tsinghua.edu.cn/simple
复制代码
6.下载vision_mamba环境依赖

进入vim文件夹之后pip直接安装
  1. cd vision_mamba/vim
  2. pip install -r vim/vim_requirements.txt
复制代码
7.下载causal-conv1d

同样离线下载 进入该链接,下载保存在vision_mamba文件夹下
  1. https://github.com/Dao-AILab/causal-conv1d/releases/download/v1.1.3/causal_conv1d-1.1.3%2Bcu118torch2.1cxx11abiFALSE-cp310-cp310-linux_x86_64.whl
复制代码
安装 
  1. pip install causal_conv1d-1.1.3+cu118torch2.1cxx11abiFALSE-cp310-cp310-linux_x86_64.whl -i https://pypi.tuna.tsinghua.edu.cn/simple
复制代码
8.下载mamba_ssm

同样离线下载 进入该链接,下载保存在vision_mamba文件夹下
  1. https://github.com/state-spaces/mamba/releases/download/v1.1.1/mamba_ssm-1.1.1%2Bcu118torch2.1cxx11abiFALSE-cp310-cp310-linux_x86_64.whl
复制代码
安装
  1. pip install mamba_ssm-1.1.1+cu118torch2.1cxx11abiFALSE-cp310-cp310-linux_x86_64.whl -i https://pypi.tuna.tsinghua.edu.cn/simple
复制代码
此时mamba_ssm相干包已经被安装在虚拟环境中,我们需要用vision_mamba官方代码中的mamba1p1p文件中的mamba_ssm文件替换掉虚拟环境中的mamba_ssm文件夹。
首先删除虚拟环境中的mamba_ssm文件夹,路径是(1)
  1. <虚拟环境名称>/lib/python3.10/site-packages/mamba_ssm
复制代码
再复制官方代码中的mamba_ssm文件,路径为(2)
  1. vision_mamba/mamba-1p1p1/mamba_ssm
复制代码
将(2)中的mamba_ssm复制到以下文件中
  1. <虚拟环境名称>/lib/python3.10/site-packages/
复制代码
至此 环境设置结束.
二、运行代码

1.以cifar数据集为例

进入vision_mamba/vim/datasets.py文件中“Ctrl+F”找到Cifar数据集导入代码,加入红框中的代码
  1. download = True
复制代码

2.进入main.py文件

修改数据集路径和默认数据集

设置输出文件夹和device

修改epoch和batchsize之后可以输入下令实行代码
  1. python3.10 main.py
复制代码
运行截图:

by the way 如果误触导致练习中断,可以在output文件夹中找到checkpoint.pth文件继续举行练习

详细而言,在main.py文件中找到"resume"超参数 设置default为checkpoint.pth大概best_checkpoint.pth文件的路径。在start_epoch中设置想开始练习的轮次.

三、验证

1.修改超参数

1.找到main文件中的“--funtine”超参数,在default字段填写练习好的权重文件路径。

2.找到main文件中的“--eval”超参数,添加default字段,将其设置为“Ture”。

2.开始验证

 输入下令实行代码
  1. python3.10 main.py
复制代码
运行截图:

四、练习过程中的报错

1.TypeError: VisionTransformer.forward() got an unexpected keyword argument 'if_random_cls_token_position'

由于 VisionTransformer 类的 forward() 方法不接受名为 if_random_cls_token_position 和 if_random_token_rank 的参数。然而,代码中调用了 model(samples, if_random_cls_token_position=args.if_random_cls_token_position, if_random_token_rank=args.if_random_token_rank),传递了这两个参数,因此出现了 TypeError 错误。
需要更新 train_one_epoch 函数中的调用

根据报错找到engine.py中54行的位置

将55行取消注释 54行注释掉

问题解决。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

宁睿

金牌会员
这个人很懒什么都没写!

标签云

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