WSL2系统下mamba-yolo模型的深度学习环境搭建
本文将介绍如何在WSL2系统(WSL(Windows Subsyetem for Linux,适用于 Linux 的 Windows 子系统))下配置目标检测模型mamba-yolo的深度学习环境
mamba的模块目前只看到有linux系统版本的,虽然有人改出来了windows版本的,但是似乎不太理想(被阉割、效率低等......),我没有linux服务器,只能在Win10下面创建WSL2系统,安装ubuntu22.04,以此使用mamba模块来改进图像分类和目标检测模型,以目前的训练结果来看,mamba确实有一定的优势,期待后续的改进效果。
1. 环境要求
Python >= 3.9 ,本文使用python-3.11
CUDA >= 11.6 ,本文使用CUDA-11.8
cuDNN(看安装的Pyorch版本,原因后面有解释),本文使用cuDNN8.9.7-11.x
Pyorch >= 1.12.1 ,本文使用PyTorch-2.4.0
Linux,本文使用Ubuntu-22.04
请先确定系统的GLIBC版本大于等于2.32(本文使用2.35), 否则会导致python无法正常import动态链接库(python >= 3.7 import动态链接库需要 GLIBC >= 2.32), 如需查看GLIBC版本可使用以下命令查看:
ldd --version
gcc,具体版本要求未知,本文使用11.4.0 ,可用以下命令查看gcc版本
gcc --version
gcc未安装的话依次执行下面的命令
sudo apt update
sudo apt install gcc
2. CudaToolKit安装
2.1 cuda安装
先打开英伟达CudaToolKit官网:https://developer.nvidia.com/cuda-toolkit-archive ,然后选择cuda11.8(也可以按照自己的需求来选择其他版本,但是要求大于11.6)
之后按照自己的系统情况进行选择:
如果当前账户有root权限的话,Installer Type就正常选第一个就好,根据下方给出的提示进行安装即可
如果没有root权限的话,可以使用第三项runfile的方式进行安装,具体可以参考博客:linux系统非root用户安装cuda和cudnn,不同版本cuda切换_安装多版本cudnn-CSDN博客
2.2 环境变量修改
打开bash配置文件: 使用文本编辑器打开用户的bash配置文件。对于大多数用户,这个文件通常是~/.bashrc。如果您使用的是root用户,那么配置文件可能是~/.bashrc或者/root/.bashrc。在终端中输入以下命令:
nano ~/.bashrc # 如果想修改所有用户可以在前面加上sudo
在打开的.bashrc
文件中,使用键盘(或者鼠标滚轮)将光标移动到文件的末尾,添加以下路径在文件最后(注意,具体路径请修改为自己安装路径,代码示例为默认安装路径):
export PATH=/usr/local/cuda-11.8/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64:$LD_LIBRARY_PATH
export CUDA_HOME=/usr/local/cuda-11.8
保存并关闭文件: 在nano编辑器中,按下Ctrl + O来保存文件,然后按下Enter确认文件名。接着,按下Ctrl + X退出编辑器,输入y一次,然后回车即可
使更改生效: 为了让刚才的更改立即生效,需要重新加载.bashrc文件。在终端中执行以下命令:
source ~/.bashrc
接下来就可以输入:
nvcc -V
查看是否安装成功即可,正常应输出如下信息:
3. cuDNN安装
先打开官网:https://developer.nvidia.com/rdp/cudnn-archive ,然后选择对应版本进行下载(本案例选择v8.9.7-11.x),这里下载需要注册NVIDIA账号
注意:选择cuDNN8.9.7-11.x版本安装PyTorch2.3.0版本的话,跑mamba-yolo模型会报错
RuntimeError: cuDNN error: CUDNN_STATUS_INTERNAL_ERROR
看报错信息问题应该是安装的cuDNN版本与PyTorch版本不兼容,可以尝试安装重新安装低版本的cuDNN或者安装更新版本的PyTorch
然后将下载好的压缩包传到linux服务器中,并在终端cd到对应上传目录,然后进行解压:
tar -xvf cudnn** # **省略部分按tab自动补全
解压完成后cd进解压文件夹
然后运行以下代码(如果没有root权限,cuda安装目录应当在自己账户目录下,此时以下命令无需sudo命令):
sudo cp -r ./lib/* /usr/local/cuda-11.8(根据你的cuda安装目录进行修改)/lib64/
sudo cp -r ./include/* /usr/local/cuda-11.8(根据你的cuda安装目录进行修改)/include/
接下来修改权限:
sudo chmod a+r /usr/local/cuda-11.8(根据你的cuda安装目录进行修改)/include/cudnn*
sudo chmod a+r /usr/local/cuda-11.8(根据你的cuda安装目录进行修改)/lib64/libcudnn*
最后检查是否安装成功:
cat /usr/local/cuda-11.8(根据你的cuda安装目录进行修改)/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
正常应该输出下面的信息
rep CUDNN_MAJOR -A 2
#define CUDNN_MAJOR 8
#define CUDNN_MINOR 9
#define CUDNN_PATCHLEVEL 7
--
#define CUDNN_VERSION (CUDNN_MAJOR * 1000 + CUDNN_MINOR * 100 + CUDNN_PATCHLEVEL)
/* cannot use constexpr here since this is a C-only file */
至此,cuda安装完成
4. Anaconda安装
这个网上教程一大堆,这里我就只简单说一下。 首先下载安装程序,方法有很多,下面提供两种方法:
-
前往Anaconda官网(Download Anaconda Distribution | Anaconda )选择linux版本,直接下载
-
直接使用wget下载:
wget https://repo.anaconda.com/archive/Anaconda3-2024.06-1-Linux-x86_64.sh
下载完成如下图
之后cd到你的下载目录,直接执行即可:
sh Anaconda3-2024.06-1-Linux-x86_64.sh
按下enter键,接着也是继续按enter键,直到出现选择yes或者no,输入yes,接下来按enter即可
这里需要选择是否要conda修改你的shell脚本,直接按enter继续(输入yes也可以)
出现了 Thank you for installing Anaconda3! 即为安装完成
5. Conda环境创建和pytorch环境配置
5.1 虚拟环境创建
先新建一个conda虚拟环境:
conda create --name mamba python=3.11
或者
conda create -n mamba python=3.11
激活环境:
conda activate mamba
然后安装pytorch(这是使用conda下载,如需pip下载【conda下载最后得到的包文件名为pytorch,pip是torch】或者安装其他版本,具体命令可以前往Pytorch官网 PyTorch ):
conda install pytorch==2.4.0 torchvision==0.19.0 torchaudio==2.4.0 pytorch-cuda=11.8 -c pytorch -c nvidia
5.2 pytorch构建工具配置修改
先查看虚拟环境mamba的路径
conda env list
然后进入具体环境路径后,打开📁 lib/📁 python3.11/📁 site-package/ 📁 torch(conda下载为pytorch,pip下载为torch)/📁 utils/cpp_extension.py
在CUDA_GCC_VERSIONS和MINIMUM_CLANG_VERSION中添加11.8的版本信息
CUDA_GCC_VERSIONS: VersionMap = {
'11.0': (MINIMUM_GCC_VERSION, (10, 0)),
'11.1': (MINIMUM_GCC_VERSION, (11, 0)),
'11.2': (MINIMUM_GCC_VERSION, (11, 0)),
'11.3': (MINIMUM_GCC_VERSION, (11, 0)),
'11.4': ((6, 0, 0), (12, 0)),
'11.5': ((6, 0, 0), (12, 0)),
'11.6': ((6, 0, 0), (12, 0)),
'11.7': ((6, 0, 0), (12, 0)),
'11.8': ((6, 0, 0), (12, 0)), # 添加这一行
}
MINIMUM_CLANG_VERSION = (3, 3, 0)
CUDA_CLANG_VERSIONS: VersionMap = {
'11.1': (MINIMUM_CLANG_VERSION, (11, 0)),
'11.2': (MINIMUM_CLANG_VERSION, (12, 0)),
'11.3': (MINIMUM_CLANG_VERSION, (12, 0)),
'11.4': (MINIMUM_CLANG_VERSION, (13, 0)),
'11.5': (MINIMUM_CLANG_VERSION, (13, 0)),
'11.6': (MINIMUM_CLANG_VERSION, (14, 0)),
'11.7': (MINIMUM_CLANG_VERSION, (14, 0)),
'11.8': (MINIMUM_CLANG_VERSION, (14, 0)), # 添加这一行
}
安装packaging包(setup需要):
conda install packaging
备注:可以在安装包时指定镜像源:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
或者可以直接在 pip install
命令后面加上 --index-url
参数来指定镜像地址。这样不需要修改全局的配置文件,而是仅对这次安装有效
# 清华镜像
pip install --index-url https://pypi.tuna.tsinghua.edu.cn/simple seaborn
# 阿里云镜像
pip install --index-url http://mirrors.aliyun.com/pypi/simple/ seaborn
6. Mamba-YOLO安装
下载mamba-yolo源码到自己指定的路径,解压缩进入文件夹,在激活的mamba环境中依次输入下面的命令(要注意先后顺序,先进入解压的文件夹再依次执行命令):
pip install seaborn thop timm einops
cd selective_scan
pip install .
cd ..
pip install -v -e .
至此,环境配置完成,设置源码中的mamba-yolo.py等脚本,运行mbyolo_train.py即可开始训练
我在使用mamba-yolo源码中的mbyolo_train.py脚本进行训练的时候有问题,即训练的时候loss有在降,但是map50,map50-90一直不变,我自己写的一个训练脚本就没有这个问题,暂时不知道是什么原因导致的
如果有大神知道原因,欢迎告知,互相交流探讨一下