首页 > 其他分享 >Docker环境搭建CUDA12.2 + Yolov5 7.0 GPU训练环境(单卡训练)

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

时间:2024-11-15 16:22:02浏览次数:1  
标签:Yolov5 训练 CUDA12.2 apt start ssh install root dev

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

找到容器中原有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/ 需要根据你自己安装的位置寻找)

并将文件名中“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 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可见性环境变量

vim ~/.bashrc

export CUDA_VISIBLE_DEVICES=0

source ~/.bashrc

 

标签:Yolov5,训练,CUDA12.2,apt,start,ssh,install,root,dev
From: https://www.cnblogs.com/jinyuanbao/p/18548166

相关文章

  • 量化训练及精度调优经验分享
    本文提纲:fx和eager两种量化训练方式介绍量化训练的流程介绍:以mmdet的yolov3为例常用的精度调优debug工具介绍案例分析:模型精度调优经验分享第一部分:fx和eager两种量化训练方式介绍首先介绍一下量化训练的原理。上图为单个神经元的计算,计算形式是加权求和,再......
  • 李沐《动手学深度学习》kaggle树叶分类(ResNet18无预训练)python代码实现
    前言    在尝试这个树叶分类之前,作者仅仅看完了ResNet残差网络一章,并没有看后面关于数据增强的部分,这导致在第一次使用最原始的ResNet18直接跑完训练数据之后的效果十分的差,提交kaggle后的准确仅有20%左右。本文最后依然使用未经预训练的手写ResNet18网络,但做了一定的......
  • 如何利用1%的数据优化特定领域LLM预训练? | EMNLP'24
    来源:晓飞的算法工程笔记公众号,转载请注明出处论文:Target-AwareLanguageModelingviaGranularDataSampling论文地址:https://arxiv.org/abs/2409.14705创新点提出了一种将预先训练好的标记符与多粒度标记符合并的算法,生成高效的n-gram特征,而且与下游任务的性能有......
  • 代码随想录算法训练营day46| 647. 回文子串 516.最长回文子序列
    学习资料:https://programmercarl.com/0647.回文子串.html#算法公开课动态规划最后一部分:回文字符串子串是从原字符串中连续截取的;子序列可以是从原字符串中不连续提取出元素构成的学习记录:647.回文子串(难构造dp数组,dp数组是从原字符串截取[i,j]范围的片段是否是回文字符串,布尔......
  • 代码随想录算法训练营第一天| 704. 二分查找、35.搜索插入位置、27. 移除元素、977.有
    文档讲解:代码随想录视频讲解:代码随想录状态:完成4道题一、数组理论基础数组:连续内存空间,存储类型相同的元素集合,适合读不适合写注意:Python里可以存储不同类型的元素,但刷题时都是按照相同元素去做的相同元素占用存储的空间大小是一样的,下一个元素的位置就确定了数组时间......
  • 代码随想录算法训练营第二天| 209.长度最小的子数组、59. 螺旋矩阵 II
    文档讲解:代码随想录视频讲解:代码随想录状态:完成2道题滑动窗口滑动窗口:两个指针一前一后组成滑动窗口,并计算滑动窗口中的元素的问题适用场景:字符串匹配问题、子数组问题、定长问题滑动窗口模板:如果一个字符进入窗口,应该增加windows计数器;如果一个字符将移除窗口的......
  • Spring Boot编程训练系统:核心特性与实现策略
    3系统分析3.1可行性分析通过对本编程训练系统实行的目的初步调查和分析,提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。3.1.1技术可行性本编程训练系统采用SSM框架,JAVA作为开发语言,是基于WEB平台的B/S架构系统......
  • Spring Boot编程训练系统:从概念到实现
    2相关技术2.1MYSQL数据库MySQL是一个真正的多用户、多线程SQL数据库服务器。是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常适用于Web站点或者其他......
  • Spring Boot编程训练系统:设计与实现要点
    5系统详细实现5.1管理员模块的实现5.1.1用户信息管理管理员对用户信息修改删除以及查询操作。具体界面的展示如图5.1所示。图5.1用户信息管理界面5.1.2题库资源管理系统管理员可以对题库资源信息进行添加,修改,删除以及查询操作。具体界面如图5.2所示。图5.2题......
  • 代码随想录算法训练营第三十天| 452. 用最少数量的箭引爆气球 、435. 无重叠区间 、76
    452.用最少数量的箭引爆气球思路:以前做过最大不相交子序列的题,这次也是往这根据某一端排序的思路想的,排序后如下图,只需要维护一个公共序列的右边界r就可以了,下一次判断时,只需要判断子区间的左边是否小于r。这个题有点坑的是使用Arrays排序,如果使用昨天的方法:Arra......