当前位置: 首页 > article >正文

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一直不变,我自己写的一个训练脚本就没有这个问题,暂时不知道是什么原因导致的

        如果有大神知道原因,欢迎告知,互相交流探讨一下


http://www.kler.cn/news/357269.html

相关文章:

  • 有口才的从业者一定是位人才
  • Android 11.0 系统默认蓝牙打开状态栏显示蓝牙图标功能实现
  • ★ C++进阶篇 ★ 红黑树实现
  • 机器学习的优缺点
  • 2024产品管理新风向:项目管理软件不懂敏捷开发?
  • 【mod分享】波斯王子遗忘之沙高清重置,纹理,字体,贴图全部重置,特效增强,支持光追
  • 三、MyBatis实践(3):多表映射,动态语句,高级扩展
  • Hadoop生态圈三大组件:HDFS的读写流程、MapReduce计算流程、Yarn资源调度
  • Cesium 实战 - 自定义纹理材质 - 立体墙(旋转材质)
  • 如何利用kafka实现高效数据同步?
  • SpringBoot项目启动报错:命令行太长解决
  • Java中的集合(1)——List、Map和Set
  • CSS3 动画相关属性实例大全(三)(columns、filter、flex、flex-basis 、flex-grow、flex-shrink属性)
  • Docker本地镜像发布到阿里云镜像服务的简易指南
  • 力扣题51~55
  • 《使用Gin框架构建分布式应用》阅读笔记:p52-p76
  • svn安装完成,但在cmd窗口运行是报错svn不是内部或外部命令
  • ChatGPT01-preivew体验报告:内置思维链和多个llm组合出的COT有啥区别呢?丹田与练气+中学生物理奥赛题测试,名不虚传还是名副其实?
  • CAN_FD无效诊断帧举例_传输网络层判断
  • Python日志模块(logging)教程 - 从初学者到生产环境