vision mamba的跑通(wsl2, 单卡)

news/2024/9/29 23:36:54

动机

随着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 

结束!!(截一个正在训练的图)

参考资料:

  1. https://blog.csdn.net/weixin_44878336/article/details/133967607
  2. https://blog.csdn.net/zhoulizhu/article/details/135419603
  3. https://github.com/hustvl/Vim/
  4. https://github.com/hustvl/Vim/issues/67
  5. https://blog.csdn.net/weixin_45667052/article/details/136311600
    感谢各位百忙观看!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/29961.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

springboot支持国际化

Spring Boot支持本地化的消息,这样你的应用程序就可以满足不同语言偏好的用户。 默认情况下,Spring Boot会在classpath的根部寻找 messages 资源包(resource bundle)的存在。 自动配置只有在资源包中存在默认的properties文件(默认为 messages.properties )时才生效。如果…

【Azure App Service】列举为App Service集成虚拟网络(VNET)操作时所需要的最小权限

问题描述 作为Azure资源管理人员,对每一种资源操作时,都需要考虑权限设置。否则,会遇见类似如下错误:The client *************** with object id ********-****-****-****-************ does not have authorization to perform action Microsoft.Network/virtualNetworks…

Makdown语法合集

目录页 1. Markdown使用平台1.1. VS Code 平台1.1.1. 安装链接 1.1.2. Markdown使用的插件安装1.1.2.1. Markdown All in On 1.1.2.2. Markdown Preview Enhanced2. 普通文本编写规则2.1. 标题使用样式 2.2. 标题目录的生成 2.3. 自动添加章节号码 2.4. 常规格式 2…

【Java】获取近六个月的年月

以当前月份为标准,向前获取近6个月的年月(year_month)形成列表数据库里面存储的字段类型就是varchar,数据格式就是类似2024-12这样的年月格式。 目标: 以当前月份为标准,向前获取近6个月的年月(year_month)形成列表// 获取近6个月的年月列表List<String> recentM…

全局异常处理器

项目中的全局异常是如何处理的? 全局异常处理逻辑 一般项目开发有两种异常:预期异常(程序员手动抛出)运行时异常在目前的项目中已经提供了全局异常处理器BaseException 基础异常,如果业务中需要手动抛出异常,则需要抛出该异常package com.zzyl.exception;​​import com.…

T2,3,4,5,9动态背包问题

本文主要介绍常见的四种背包问题前言 本文主要介绍常见的四种背包问题,思维导图如下:一、01背包💡 现有 N 件物品和一个最多能承重 M 的背包,第 i 件物品的重量是 wi​,价值是 vi​。在背包能承受的范围内,试问将哪些物品装入背包后可使总价值最大,求这个最大价值。因为…

luogu P4342[IOI1998]Polygon

题目大意 给定一个多边形,对应节点上标记有一个数字,每条边上标记有加(t)或乘(x)表示相邻两个节点可进行的操作,操作后两个节点将合并为一个节点,首先删去一条边(不进行操作),之后在若干次操作后使得该多边形只剩一个节点,且要求所剩节点标记的数最大化,询问最大的…

ES底层原理

1、倒排索引 Elasticsearch 使用一种称为倒排索引的结构,它适用于快速的全文搜索。 有倒排索引,肯定会对应有正向索引:正向索引(forward index) 反向索引(inverted index,实际就是倒排索引)所谓的正向索引,就是搜索引擎会将待搜索的文件都对应一个文件ID,搜索时将这个…