Docker环境搭建CUDA12.2 + Yolov5 7.0 GPU训练环境(单卡训练)

1、建立Docker容器,指定Shm共享内存。

docker run -d -it --name yolov5 --gpus all -p 20000:22 --shm-size 16g dockerproxy.cn/nvidia/cuda:12.2.0-devel-ubuntu22.04

2、进入容器,升级安装器apt

docker exec -it f7383b766c6d /bin/bash

apt-get update
apt-get install vim

3、安装ssh连接,并设置密码、开机启动

apt-get install openssh-server
passwd

添加root连接权限

vim /etc/ssh/sshd_config

注释这一行PermitRootLogin prohibit-password

添加一行PermitRootLogin yes

然后保存退出,重启服务

/etc/init.d/ssh restart

在 /root 目录下新建一个 start_ssh.sh文件,并给予该文件可执行权限 

vim /root/start_ssh.sh

脚本内容为

#!/bin/bash
 
LOGTIME=$(date "+%Y-%m-%d %H:%M:%S")
echo "[$LOGTIME] startup run..." >>/root/start_ssh.log
service ssh start >>/root/start_ssh.log
chmod +x /root/start_ssh.sh

将start_ssh.sh脚本添加到启动文件中

vim ~/.bashrc

# startup run
if [ -f /root/start_ssh.sh ]; then
      /root/start_ssh.sh
fi

source ~/.bashrc

4、设置CUDA环境变量

vim ~/.bashrc

export LD_LIBRARY_PATH=/usr/local/cuda/lib
export PATH=$PATH:/usr/local/cuda/bin

source ~/.bashrc

 5、测试CUDA可用性

nvidia-smi
nvcc -V

6、安装Python3.8.10

安装底层包

apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev wget
apt-get install lzma
apt-get install liblzma-dev
apt-get install libbz2-dev

下载Python-3.8.10.tar.xz,并拷贝至容器中,解压安装

tar xvJf Python-3.8.10.tar.xz
cd Python-3.8.10

./configure --enable-optimizations
make
make install

测试版本

python3 -V

检查是否缺少bz包,如缺少,按以下方式处理

cd /usr/local/lib/python3.8/lib-dynload/
find -name _bz2.cpython-38-x86_64-linux-gnu.so

找到容器中原有Python3对应的bzip2 的 .so 文件_bz2.cpython-36m-x86_64-linux-gnu.so,我的是在3.6环境下安装的因此位置在 /usr/lib/python3.6/lib-dynload/ 下,将对应的 .so 文件 复制python3.8 对应的目录下(我的是/usr/local/lib/python3.8/lib-dynload/ 需要根据你自己安装的位置寻找)

此处提供可直接下载:

x86_64

通过百度网盘分享的文件:_bz2.cpython-38-x86_64-linux-gnu.so
链接:https://pan.baidu.com/s/118rJFroStucKDW3T3kBiyQ?pwd=g8m7 
提取码:g8m7 
--来自百度网盘超级会员V7的分享

ARM64(aarch64)

通过网盘分享的文件:_bz2.cpython-312m-aarch64-linux-gnu.so
链接: https://pan.baidu.com/s/1Q_ObUh2Pam4b3yq-MIeJPQ?pwd=dq8h 提取码: dq8h 
--来自百度网盘超级会员v7的分享

并将文件名中“36m” 修改为 “38” 即可。

tips:(find命令) find (目录起点) -name 加上文件名 查找文件比较快

可以使用whereis python3 来找到系统默认的python 环境的位置。

7、安装git并拉取yolov5代码,此时tag为7.0

apt-get install git

mkdir /project

cd /project

git clone https://github.com/ultralytics/yolov5.git

cd yolov5

8、安装pytorch,因为此时在容器内部,所以不再安装虚拟环境,pytorch与torchvision版本选取如下,下载拷贝安装即可

pip3 install /work/torch-2.3.0+cu121-cp38-cp38-linux_x86_64.whl -i https://pypi.tuna.tsinghua.edu.cn/simple
pip3 install /work/torchvision-0.18.0+cu121-cp38-cp38-linux_x86_64.whl -i https://pypi.tuna.tsinghua.edu.cn/simple

9、安装其他依赖,安装前,使用vim打开requirements.txt,将torch与torchvision注释,因为这是cpu版本

pip3 install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

安装额外依赖

pip3 install opencv-python-headless -i https://pypi.tuna.tsinghua.edu.cn/simple

10、设置gpu可见性环境变量,注意这个环境变量非常重要,如果训练过程一直卡在0%,但CUDA、Pytorch一切正常,就是因为这个变量没有设置。

vim ~/.bashrc

export CUDA_VISIBLE_DEVICES=0

source ~/.bashrc

11、准备训练集、测试集、验证集,结构均如下

此处提供车辆图片数据集

通过百度网盘分享的文件:det_vehicle_4kinds_yolo.rar
链接:https://pan.baidu.com/s/1H4bfFREvVOWhRjYjYNAsSQ?pwd=965t 
提取码:965t 
--来自百度网盘超级会员V7的分享

其中yaml文件配置如下

train: /project/yolov5/dataset/det_vehicle_4kinds_yolo/train/images
val: /project/yolov5/dataset/det_vehicle_4kinds_yolo/val/images

nc: 4
names: [ 'car', 'bus','van', 'others']

12、开始训练

python3 train.py --batch 32 --data ./dataset/det_vehicle_4kinds_yolo/data.yaml --device 0

posted @ 2024-11-15 16:22  金元宝骑骑  阅读(596)  评论(0)    收藏  举报