曙光云深度学习环境配置全攻略:从零搭建YOLOv5训练平台

张开发
2026/4/12 18:14:54 15 分钟阅读

分享文章

曙光云深度学习环境配置全攻略:从零搭建YOLOv5训练平台
1. 曙光云平台入门指南第一次接触曙光云平台可能会觉得有点懵但别担心跟着我的步骤来保证你能快速上手。曙光云是国内领先的云计算平台特别适合深度学习训练这类需要高性能计算的任务。我去年在做一个工业质检项目时就用的这个平台实测下来确实很稳。首先打开浏览器访问曙光云官网https://ac.sugon.com用你的账号登录后就能看到控制台界面。这里有个小技巧建议先把E-Shell菜单栏收藏起来后面会经常用到。我第一次用的时候就找了半天这个入口白白浪费了半小时。登录后第一件事就是创建个人工作目录。点击E-Shell进入终端输入mkdir your_project_name这个目录就是你以后存放代码和数据的大本营了。我习惯用项目名称日期的方式命名比如yolov5_202406这样后期管理起来特别方便。2. 环境配置全流程2.1 MiniConda安装指南在深度学习领域环境隔离特别重要。我推荐使用MiniConda而不是直接装Python因为后期切换不同版本的PyTorch时会轻松很多。下面是详细安装步骤先下载MiniConda安装包建议用清华源加速wget https://repo.anaconda.com/miniconda/Miniconda3-py37_4.9.2-Linux-x86_64.sh这个下载可能会有点慢我第一次装的时候去喝了杯咖啡才回来。下载完成后别急着安装先给脚本添加执行权限chmod x Miniconda3-py37_4.9.2-Linux-x86_64.sh安装时建议指定安装路径我一般放在用户目录下bash Miniconda3-py37_4.9.2-Linux-x86_64.sh -b -f -p ~/miniconda3/安装完成后记得初始化conda环境~/miniconda3/bin/conda init source ~/.bashrc2.2 配置国内镜像源为了加速包下载一定要换国内源。我整理了一套完整的清华源配置命令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/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/menpo/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/ conda config --set show_channel_urls yes配置完可以执行conda config --show channels检查是否生效。这个步骤看似简单但能让你后续的安装速度提升10倍不止。3. YOLOv5专用环境搭建3.1 创建Python环境YOLOv5官方推荐Python3.7环境我们用conda来创建conda create -n yolov5 python3.7 conda activate yolov5激活环境后命令行前面会出现(yolov5)的提示。如果没看到这个提示说明激活失败了可以试试source ~/.bashrc重新加载配置。3.2 PyTorch安装注意事项这里有个大坑要特别注意曙光云使用的是国产DCU显卡不能直接用PyTorch官网的安装命令。我刚开始不知道这个直接pip install torch结果训练时GPU根本调用不起来。正确的做法是使用平台预编译的whl文件cd /public/software/apps/DeepLearning/whl/dtk-21.04 pip install torch-1.8.0a056b43f4-cp37-cp37m-linux_x86_64.whl pip install torchvision-0.9.0a0-cp37-cp37m-linux_x86_64.whl安装完成后一定要验证DCU是否可用import torch print(torch.cuda.is_available()) # 应该返回True print(torch.__version__) # 应该显示1.8.03.3 其他依赖安装YOLOv5还需要一些基础库建议按这个顺序安装pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple pip install Pillow pip install scipy pip install tqdm pip install matplotlib pip install seaborn pip install opencv-python安装opencv时可能会遇到问题如果报错可以试试pip install opencv-python-headless。4. 训练任务实战操作4.1 计算资源申请曙光云采用队列管理系统使用前需要申请计算资源。查看可用队列whichpartition申请2块DCU的计算节点以wzhdtest队列为例salloc -p wzhdtest -N 1 --gresdcu:2申请成功后会返回节点信息比如b01r4n05用ssh连接该节点ssh b01r4n054.2 关键环境配置登录计算节点后有三件事必须做切换rocm编译器版本module switch compiler/dtk/21.04设置PyTorch环境变量建议写入pytorch_env.sh文件echo export LD_LIBRARY_PATH/public/software/apps/DeepLearning/PyTorch_Lib/lib:/public/software/apps/DeepLearning/PyTorch_Lib/lmdb-0.9.24-build/lib:/public/software/apps/DeepLearning/PyTorch_Lib/opencv-2.4.13.6-build/lib:/public/software/apps/DeepLearning/PyTorch_Lib/openblas-0.3.7-build/lib:$LD_LIBRARY_PATH ~/pytorch_env.sh source ~/pytorch_env.sh重新激活conda环境conda activate yolov54.3 启动训练任务进入项目目录启动训练cd ~/your_project_name/yolov5 python train.py --data data/custom.yaml --cfg models/yolov5s.yaml --weights weights/yolov5s.pt --epochs 100 --batch-size 16这里有几个实用参数可以调整--img-size 640增大图像尺寸能提升精度但会降低速度--device 0,1指定使用哪些DCU卡--workers 4增加数据加载线程数训练过程中可以用hy-smi命令监控DCU状态类似nvidia-smi。我一般会开两个终端窗口一个跑训练一个实时监控资源使用情况。5. 高级技巧与避坑指南5.1 后台任务提交方法用salloc方式运行任务时如果关闭E-Shell窗口任务会被终止。推荐使用sbatch提交后台任务先创建yolo.sh脚本#!/bin/bash #SBATCH -o yolo.out #SBATCH --partitionwzhdtest #SBATCH --qoslow #SBATCH -J yolov5_train #SBATCH --nodes1 #SBATCH --ntasks-per-node6 #SBATCH --gresdcu:2 module switch compiler/dtk/21.04 source ~/pytorch_env.sh source ~/miniconda3/etc/profile.d/conda.sh conda activate yolov5 cd ~/your_project_name/yolov5 python train.py --data data/custom.yaml --cfg models/yolov5s.yaml --weights weights/yolov5s.pt --epochs 100 --batch-size 16然后提交任务sbatch yolo.sh用squeue -u your_username可以查看任务状态。这种方式即使关闭浏览器也不会中断训练特别适合长时间任务。5.2 数据准备技巧YOLOv5的数据集需要特定格式dataset/ ├── images/ │ ├── train/ │ └── val/ └── labels/ ├── train/ └── val/每个图像对应一个.txt标注文件格式为class_id x_center y_center width height这些坐标需要是归一化后的值0-1之间。我写了个转换脚本可以帮你快速整理数据集import os from PIL import Image def convert(size, box): dw 1./size[0] dh 1./size[1] x (box[0] box[1])/2.0 y (box[2] box[3])/2.0 w box[1] - box[0] h box[3] - box[2] x x*dw w w*dw y y*dh h h*dh return (x,y,w,h) # 使用示例 img_path example.jpg img Image.open(img_path) w, h img.size bbox [100, 300, 150, 400] # xmin,xmax,ymin,ymax yolo_bbox convert((w,h), bbox)5.3 模型调优经验经过多个项目的实践我总结出几个提升YOLOv5性能的技巧学习率调整初始阶段可以用较大的学习率(0.01)后期逐步降低数据增强适当启用mosaic和mixup能显著提升小目标检测效果锚框优化用k-means算法针对你的数据集重新计算锚框尺寸模型瘦身训练完成后用python export.py --weights best.pt --include onnx导出onnx模型再用工具量化训练过程中如果出现loss震荡可以尝试减小batch size降低学习率增加warmup epochs检查数据标注质量6. 常见问题解决方案6.1 DCU不可用问题如果torch.cuda.is_available()返回False按这个流程排查确认已加载正确的dtk版本module switch compiler/dtk/21.04检查环境变量是否设置echo $LD_LIBRARY_PATH查看DCU状态hy-smi验证PyTorch版本python -c import torch; print(torch.__version__)我遇到过最棘手的情况是环境变量冲突解决方法是在pytorch_env.sh最前面加上unset LD_LIBRARY_PATH。6.2 内存不足处理当遇到CUDA out of memory错误时可以减小batch size最直接有效使用更小的模型如yolov5s换成yolov5n启用梯度累积# 在train.py中添加 accumulate max(round(64 / batch_size), 1)使用半精度训练python train.py --half6.3 训练中断恢复如果训练意外中断可以用--resume参数继续训练python train.py --resume runs/train/exp/weights/last.pt曙光云的作业系统有时会因为排队策略中断任务建议重要实验都用sbatch提交并定期保存checkpoint。7. 性能监控与优化7.1 资源监控命令曙光云提供了丰富的监控工具hy-smi查看DCU使用情况top查看CPU和内存占用nvidia-smi虽然叫nvidia但也能监控DCUsacct查看作业资源使用统计我习惯用watch -n 1 hy-smi实时刷新监控信息关键要看DCU利用率一般应70%显存占用避免爆显存温度维持在80℃以下7.2 训练速度优化通过以下几个方法可以提升训练效率使用更快的存储把数据集放在/public目录下速度比home目录快3倍增加数据加载线程--workers 8根据CPU核心数调整启用pin_memory在train.py中设置DataLoader的pin_memoryTrue使用混合精度--half参数可以加速训练同时减少显存占用在最近的测试中通过优化配置YOLOv5s在曙光云DCU上的训练速度能达到约120 images/sec比默认配置提升约30%。7.3 成本控制建议曙光云采用资源计费模式几个省钱技巧使用低优先级队列--qoslow合理申请资源不要过度申请DCU数量利用空闲时段夜间和周末的资源更充裕及时释放资源训练完成后用scancel jobid释放资源对于长期项目可以考虑购买资源包比按需计费节省约40%费用。

更多文章