
在曙光云DCU上跑通YOLOv8从环境配置到sbatch脚本提交的保姆级避坑记录国产算力平台的崛起为AI开发者提供了更多选择曙光云DCU作为基于ROCm架构的国产GPU解决方案正在成为PyTorch项目部署的新兴选择。本文将分享如何在曙光云DCU上完整部署YOLOv8目标检测模型的实战经验涵盖从环境配置到作业提交的全流程特别针对实际开发中可能遇到的坑提供解决方案。1. 环境准备构建适配DCU的Python生态1.1 Python版本与虚拟环境创建YOLOv8对Python版本有较高要求推荐使用Python 3.8-3.10版本。在曙光云上创建虚拟环境时需要特别注意与后续PyTorch版本的兼容性conda create -n yolov8 python3.8 conda activate yolov8提示conda环境命名应具有描述性便于后续在多项目场景下管理。例如yolov8_dtk23.10能清晰体现环境和框架版本。1.2 PyTorch的特殊安装方式由于DCU基于ROCm架构无法直接使用PyTorch官方版本必须使用曙光云提供的定制编译版本。当前dtk-23.10版本的安装路径如下cd /public/software/apps/DeepLearning/whl/dtk-23.10/pytorch/py38 pip install torch-1.13.1git7d2dd01.abi0.dtk2310-cp38-cp38-manylinux2014_x86_64.whl pip install torchvision-0.14.1gitf78f29f.abi0.dtk2310.torch1.13-cp38-cp38-manylinux2014_x86_64.whl关键参数对比参数官方版本曙光云DCU版本架构支持CUDAROCm/DCU安装方式pip install本地whl安装版本同步最新版定制编译版性能优化NVIDIA GPU国产DCU卡2. DCU资源申请与环境变量配置2.1 计算资源申请曙光云采用Slurm作业调度系统申请DCU资源的典型命令如下salloc -p hebhdnormal -N 1 --gresdcu:4登录计算节点后必须加载正确的dtk版本module load compiler/dtk/23.102.2 环境变量设置创建pytorch_env.sh文件配置关键环境变量export LD_LIBRARY_PATH/public/software/apps/DeepLearning/PyTorch_Lib/lib:$LD_LIBRARY_PATH注意每次登录新节点都需要执行source ~/pytorch_env.sh否则PyTorch将无法找到必要的库文件。验证安装成功的完整流程python -c import torch; print(torch.__version__, torch.cuda.is_available())3. 常见问题排查与解决方案3.1 内核崩溃问题分析在交互式命令行直接运行训练脚本时常遇到内核崩溃问题。这通常是由于未正确加载dtk模块环境变量未正确设置资源分配不足3.2 依赖库安装问题部分Python包可能因网络权限无法安装解决方案联系客服开通外网访问权限使用conda镜像源安装手动下载whl包离线安装典型错误处理流程# 尝试使用清华源安装 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple some-package # 离线安装方案 wget https://example.com/some-package.whl pip install some-package.whl4. 使用sbatch提交训练作业4.1 脚本编写规范创建test.sh作业提交脚本#!/bin/bash #SBATCH -p hebhdnormal #SBATCH -N 1 #SBATCH -n 32 #SBATCH --gresdcu:4 #SBATCH -J yolo source /path/to/conda.sh conda activate yolov8 source ~/pytorch_env.sh module load compiler/dtk/23.10 python train.py --data coco.yaml --weights yolov8n.pt --img 6404.2 作业管理命令常用Slurm命令速查命令功能示例sbatch提交作业sbatch test.shsqueue查看作业squeue -u $USERscancel取消作业scancel 12345tail查看输出tail -f slurm-12345.out4.3 资源使用建议根据实际测试经验提供以下资源配置建议每张DCU卡配8个CPU核心小规模训练使用4卡配置大规模数据建议申请最大资源8DCU5. 性能优化技巧5.1 数据加载优化使用DALI加速数据预处理from nvidia.dali import pipeline_def import nvidia.dali.fn as fn pipeline_def def create_pipeline(): images fn.readers.file(file_rootimage_dir) images fn.decoders.image(images, devicemixed) return images5.2 混合精度训练启用AMP自动混合精度from torch.cuda.amp import autocast with autocast(): outputs model(inputs) loss criterion(outputs, targets)5.3 内存管理监控DCU内存使用rocm-smi优化策略调整batch size使内存占用在90%左右使用梯度累积模拟更大batch及时清空不需要的缓存torch.cuda.empty_cache()在实际项目中发现合理设置--workers参数能显著提升数据加载效率。对于SSD存储建议设置为CPU核心数的50-70%对于高速NVMe存储可适当提高至80%。