Linux DCU 上基于 PaddlePaddle 完成 MobileNetV3 训练、评估与预测全流程实战
人工智能深度学习计算机视觉NLP语音【免费下载链接】modelsOfficially maintained, supported by PaddlePaddle, including CV, NLP, Speech, Rec, TS, big models and so on.项目地址https://gitcode.com/gh_mirrors/mo/models点击查看免费下载本篇文章围绕 tutorials/mobilenetv3_prod/Step6 中 MobileNetV3 分类模型的完整工程展开重点讲解如何在 Linux DCU国产加速卡兼容 ROCm/HIP 生态上完成与 Linux GPU 完全一致的单机单卡、单机多卡训练以及模型评估、单图预测和推理部署。读完本文后你将掌握 DCU 环境下HIP_VISIBLE_DEVICES环境变量的正确用法、train.py的完整参数体系、基于 Paddle Inference 的动转静导出与推理流程以及 TIPC 训推一体自动化测试的配置方式可直接在 DCU 服务器上落地复现。1. DCU 与 Linux GPU 教程的关系只差一个环境变量在开始之前需要先明确一个核心结论在 Linux DCU 上进行训练、评估、预测等操作与 Linux GPU 基础使用教程完全一致。这一点在 linux_dcu_train_infer_python.md 中明确说明同时也被仓库内 TIPC 开发规范文档 tutorials/tipc/linux_dcu_train_infer_python/README.md 印证——Linux DCU 基础训练推理的开发与测试流程均直接参考 Linux GPU/CPU 对应文档唯一的差异在于环境变量。1.1 核心HIP_VISIBLE_DEVICES 环境变量Linux GPU 下我们用CUDA_VISIBLE_DEVICES指定对程序可见的 GPU 设备而在 Linux DCU 下将其替换为HIP_VISIBLE_DEVICES即可二者作用完全相同——控制程序可见的设备编号。单卡场景启动前执行export HIP_VISIBLE_DEVICES0多卡场景例如 4 卡启动前执行export HIP_VISIBLE_DEVICES0,1,2,3设置完成后所有训练、评估、预测命令均与 Linux GPU 完全相同无需对脚本做任何其他修改。这一点在 Step6/README.md 的第 4.1 节和扩展教程清单第 175 行中被反复强调。1.2 底层设备设置逻辑从 Step6/train.py 的源码可以看到训练入口通过paddle.set_device(args.device)完成设备初始化--device默认值为gpu并在paddle.distributed.get_world_size() 1时调用paddle.distributed.init_parallel_env()初始化并行环境。也就是说DCU 是否可见、以哪张卡可见完全由启动进程前的HIP_VISIBLE_DEVICES决定程序内部并不需要区分 GPU 与 DCU。2. 准备环境PaddlePaddle 安装与校验DCU 上的环境准备步骤与 Linux GPU 完全一致参考 Step6/README.md获取代码git clone https://github.com/PaddlePaddle/models.git cd models/tutorials/mobilenetv3_prod/Step6安装 PaddlePaddle 2.2 及以上版本若已安装可跳过# 安装 GPU 版本的 Paddle pip install paddlepaddle-gpu2.2.0 # 安装 CPU 版本的 Paddle pip install paddlepaddle2.2.0校验安装是否成功import paddle paddle.utils.run_check()如果输出中包含PaddlePaddle works well on 1 GPU、PaddlePaddle works well on 8 GPUs以及PaddlePaddle is installed successfully! Lets start deep learning with PaddlePaddle now.等字样则说明安装成功。安装依赖pip install -r requirements.txt3. 准备数据与预训练模型3.1 数据集完整 ImageNet1k训练集包含 1281167 张图像验证集包含 50000 张图像可自行申请下载解压后目录结构需包含train/与val/子目录train.py 会基于--data-path拼接这两个子目录。快速体验数据仓库内置了test_images/lite_data.tar16 张训练图像 16 张验证图像直接解压即可体验完整训练流程tar -xf test_images/lite_data.tar3.2 预训练模型如果只想直接体验评估、预测或推理部署可以跳过训练直接下载官方复现的预训练参数wget https://paddle-model-ecology.bj.bcebos.com/model/mobilenetv3_reprod/mobilenet_v3_small_pretrained.pdparams根据 Step6/README.md 中的复现精度表mobilenet_v3_small参考精度 top1 为 0.602复现精度 top1/top5 为 0.601/0.826。4. 在 DCU 上进行模型训练4.1 单机单卡训练在启动前设置好HIP_VISIBLE_DEVICES其余命令与 Linux GPU 完全一致export HIP_VISIBLE_DEVICES0 python3 train.py --data-path./ILSVRC2012 --lr0.1 --batch-size256训练过程中的部分日志如下与 GPU 环境输出格式完全一致[Epoch 1, iter: 4780] top1: 0.10312, top5: 0.27344, lr: 0.01000, loss: 5.34719, avg_reader_cost: 0.03644 sec, avg_batch_cost: 0.05536 sec, avg_samples: 64.0, avg_ips: 1156.08863 images/sec. [Epoch 1, iter: 4790] top1: 0.08750, top5: 0.24531, lr: 0.01000, loss: 5.28853, avg_reader_cost: 0.05164 sec, avg_batch_cost: 0.06852 sec, avg_samples: 64.0, avg_ips: 934.08427 images/sec.日志字段说明top1/top5为当前统计窗口内的准确率lr为当前学习率loss为交叉熵损失avg_reader_cost为数据读取平均耗时avg_batch_cost为单 batch 平均总耗时avg_ips为每秒处理图像数吞吐率。这些统计逻辑位于 train.py 的train_one_epoch中。4.2 单机多卡训练DCU 多卡训练同样只需将CUDA_VISIBLE_DEVICES替换为HIP_VISIBLE_DEVICES并借助paddle.distributed.launch启动export HIP_VISIBLE_DEVICES0,1,2,3 python3 -m paddle.distributed.launch --gpus0,1,2,3 train.py --data-path./ILSVRC2012 --lr0.4 --batch-size256注意多卡时学习率需要随 batch size 同步放大此处 4 卡、单卡 batch size 256等效总 batch 1024lr 由 0.1 调整为 0.4这与 shell/train_dist.sh 中 8 卡训练使用--lr0.8的缩放逻辑一致。仓库同时提供了可直接参考的脚本 shell/train.sh单卡与 shell/train_dist.sh8 卡分布式。4.3 train.py 完整参数说明完整参数解析定义在 train.py 的get_args_parser函数中以下是 DCU 训练最常用的参数及默认值参数默认值说明--data-path./data数据集根目录需含train/、val/子目录--modelmobilenet_v3_small模型名称通过paddlevision.models.__dict__[args.model]动态实例化--devicegpu设备类型gpu/cpu均可-b, --batch-size256单卡 batch size--epochs90训练总轮数ImageNet 标准对齐为 120--lr0.1初始学习率多卡按倍数放大--momentum0.9SGD 动量--wd, --weight-decay1e-4权重衰减--lr-step-size30学习率阶梯下降的间隔轮数Piecewise Decay30 epoch 下降 10 倍--lr-gamma0.1学习率下降倍数-j, --workers8数据加载进程数--print-freq10日志打印间隔iter--output-dir.模型与优化器状态保存目录--resume断点续训读取.pdparams与.pdopt--test-onlyFalsestore_true仅执行评估不训练--pretrainedNone加载预训练权重--optsgd优化器支持sgd/rmsprop--amp_levelNone混合精度等级可设O1/O2详见混合精度教程--pact_quantFalsestore_true开启 PACT 量化感知训练需安装 paddleslim其中学习率调度使用paddle.optimizer.lr.StepDecaytrain.py训练/评估均通过CrossEntropyLoss与utils.accuracy(topk(1,5))统计 top1/top5 指标。4.4 扩展训练方法本文档聚焦 Linux 基础训练推理流程DCU 上同样支持更多进阶训练方式参考 Step6 下docs/目录混合精度训练docs/train_amp_infer_python.md多机多卡训练docs/train_fleet_infer_python.mdPACT 在线量化训练docs/train_pact_infer_python.mdWindows 平台训练docs/windows_train_infer_python.md这些教程在 DCU 上的使用方式完全相同只需把环境变量设置为export HIP_VISIBLE_DEVICES0,1,2,3视卡数而定其余命令与 Linux GPU 一致。5. 在 DCU 上进行模型评估本项目训练与评估共用train.py通过--test-only参数切换为评估模式DCU 下命令如下export HIP_VISIBLE_DEVICES0 python train.py --test-only --data-path/paddle/data/ILSVRC2012 --pretrained./mobilenet_v3_small_paddle.pdparams期望输出片段Test: [ 0/1563] eta: 1:14:20 loss: 1.0456 (1.0456) acc1: 0.7812 (0.7812) acc5: 0.9062 (0.9062) time: 2.8539 data: 2.8262 ... Test: Total time: 0:02:05 * Acc1 0.564 Acc5 0.790从源码看--test-only分支在 train.py 中直接调用evaluate()该函数在paddle.no_grad()下逐 batch 统计 top1/top5 并输出最终* Acc1 ... Acc5 ...结果train.py。6. 在 DCU 上进行单图预测预测脚本为 tools/predict.py它会加载模型、执行预处理默认Resize(256) CenterCrop(224)对应ClassificationPresetEval、前向计算 Softmax 概率并打印 top1 类别。GPU/DCU 预测export HIP_VISIBLE_DEVICES0 python tools/predict.py --pretrained./mobilenet_v3_small_pretrained.pdparams --img-pathimages/demo.jpg对仓库自带示例图 images/demo.jpg 进行预测最终输出为class_id: 8, prob: 0.9091238975524902表示预测类别 ID 为8置信度约0.909。CPU 预测指定--devicecpu即可命令与 GPU 仅差该参数python tools/predict.py --pretrained./mobilenet_v3_small_pretrained.pdparams --img-pathimages/demo.jpg --devicecpupredict.py支持的参数包括--model默认mobilenet_v3_small、--device默认gpu、--resize-size/--crop-size预处理尺寸、--img-path、--pretrained、--num-classes默认 1000。7. 推理部署动转静导出与 Paddle Inference训练、评估、预测都属于训练引擎流程若要进入高性能推理阶段需要先通过动转静动态图转静态图导出推理模型再使用 Paddle Inference 推理库加载。完整教程见 deploy/inference_python/README.mdDCU 下流程与 Linux GPU 完全一致。Step 1导出推理模型# 下载预训练好的参数若已下载可跳过 wget https://paddle-model-ecology.bj.bcebos.com/model/mobilenetv3_reprod/mobilenet_v3_small_pretrained.pdparams # 动转静导出 python tools/export_model.py --pretrained./mobilenet_v3_small_pretrained.pdparams --save-inference-dir./mobilenet_v3_small_infer --modelmobilenet_v3_small导出后mobilenet_v3_small_infer/目录下会生成 3 个文件mobilenet_v3_small_infer |----inference.pdiparams : 模型参数文件 |----inference.pdmodel : 模型结构文件 |----inference.pdiparams.info: 模型参数信息文件Step 2Paddle Inference 推理python deploy/inference_python/infer.py --model-dir./mobilenet_v3_small_infer/ --img-path./images/demo.jpg终端输出image_name: ./images/demo.jpg, class_id: 8, prob: 0.9091264605522156该结果与基于训练引擎的预测结果class_id: 8, prob: 0.909完全一致说明动转静导出保持了精度。此外Step6 工程还提供了更多部署形态供扩展Paddle Serving 服务化部署deploy/serving_python/README.md、Paddle Lite ARM CPU 部署deploy/lite_infer_cpp_arm_cpu/README.md、Paddle2ONNX 导出deploy/onnx_python/README.md以及 PaddleSlim 离线量化deploy/ptq_python/README.md。8. TIPC 训推一体自动化测试飞桨训推一体全流程TIPCTraining and Inference Pipeline Criterion功能测试工具可以一键打通并验证训练、评估、推理、部署全链路。DCU 环境的 TIPC 使用方式与 Linux GPU 一致测试开发规范同样参考 Linux GPU 对应文档见 tutorials/tipc/linux_dcu_train_infer_python/README.md。以 MobileNetV3 为例训练-推理链路的自动化配置位于 test_tipc/configs/mobilenet_v3_small/train_infer_python.txt其核心字段包括训练参数区train_paramsmodel_name:mobilenet_v3_small、gpu_list:0|0,1单卡/双卡两种模式、use-gpu:True|True、--epochs:lite_train_lite_infer5|whole_train_whole_infer90、--batch-size:lite_train_lite_infer4|whole_train_whole_infer128、--data-path:./lite_data评估参数区eval_paramseval:train.py --test-only即复用训练脚本的评估分支推理参数区infer_paramsnorm_export:tools/export_model.py --modelmobilenet_v3_small完成动转静导出inference:deploy/inference_python/infer.py --batch-size:1 --model-dir:./output/mobilenet_v3_small_infer/ --img-path:./images/demo.jpg --benchmark:True执行推理并统计性能。执行测试时通过 test_tipc/test_train_inference_python.sh 配合 test_tipc/common_func.sh 与 test_tipc/prepare.sh 即可一键跑通「精简训练 → 导出 → 推理」链路TIPC 框架的整体说明见 test_tipc/README.md。9. 小结与注意事项综合全文在 Linux DCU 上使用 PaddlePaddle 完成 MobileNetV3 的完整训推流程可以归纳为四条要点环境变量替换将CUDA_VISIBLE_DEVICES统一替换为HIP_VISIBLE_DEVICES单卡设0多卡设逗号分隔的设备编号其余环境准备PaddlePaddle 2.2、requirements与 Linux GPU 完全一致命令零修改训练train.py、评估--test-only、预测tools/predict.py、动转静导出tools/export_model.py、Paddle Inference 推理deploy/inference_python/infer.py的启动命令均与 Linux GPU 相同多卡并行使用python3 -m paddle.distributed.launch --gpus0,1,2,3 train.py启动分布式训练学习率随卡数放大自动化验证DCU 下可直接复用 TIPC 训推一体测试train_infer_python.txt一键验证「训练 → 评估 → 导出 → 推理」全链路。只要把握住「启动前设置HIP_VISIBLE_DEVICES」这一关键差异Linux GPU 上的全部经验与命令都可以无缝迁移到 DCU 平台。赞分享人工智能深度学习计算机视觉NLP语音【免费下载链接】modelsOfficially maintained, supported by PaddlePaddle, including CV, NLP, Speech, Rec, TS, big models and so on.项目地址https://gitcode.com/gh_mirrors/mo/models点击查看免费下载相关推荐PaddlePaddle 复现 MobileNetV3基于 Step6 的完整训练、评估、预测与推理部署实战指南PaddlePaddle 复现 MobileNetV3基于 Step6 的完整训练、评估、预测与推理部署实战指南 本指南以 tutorials/mobilen人工智能深度学习计算机视觉NLP语音insightface 基于 PaddlePaddle 的 BlazeFace 人脸检测实战训练、WIDER-FACE 评估与部署全流程解析insightface 基于 PaddlePaddle 的 BlazeFace 人脸检测实战训练、WIDER FACE 评估与部署全流程解析 Arcface人工智能计算机视觉深度学习PaddleNLP Trainer 详解基于 PaddlePaddle 的统一训练、评估与预测引擎PaddleNLP Trainer 详解基于 PaddlePaddle 的统一训练、评估与预测引擎 导读 本文围绕 PaddleNLP 文档中 docs/zh人工智能AI Agent多模态语音AI 应用上一篇如何高效使用在线LaTeX编译服务免安装的终极解决方案下一篇如何快速配置网盘直链下载助手新手友好型完整指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考