ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

飞桨 TIPC 训推一体全流程测试指南:基于 Linux GPU/CPU 基础训练推理的一键化验证方案

飞桨 TIPC 训推一体全流程测试指南:基于 Linux GPU/CPU 基础训练推理的一键化验证方案 人工智能深度学习计算机视觉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训推一体全流程Training and Inference Pipeline CriterionTIPC测试体系展开以docs/tipc/train_infer_python/template/test/doc/README.md为骨架系统讲解如何通过test_tipc目录下的配置与脚本对模型完成从训练、评估、动转静导出到 Paddle Inference 推理的端到端一键测试。读完本文你将掌握train_infer_python.txt配置文件的完整字段语义、test_train_inference_python.sh的解析与执行逻辑、五种测试模式MODE的适用场景以及数据与环境准备、结果日志判读的完整实战流程并可将这套模板直接复用到你自己的模型仓库中。图为 TIPC 测试体系总览展示了从训练、压缩、导出到多端推理部署的一体化测试链路。1. TIPC 是什么从训练到部署的一体化验收飞桨除了提供基本的模型训练与预测能力外还提供了支持多端多平台的高性能推理部署工具如 Paddle Inference、Paddle Serving、Paddle-Lite 等。TIPC 的作用是把训练是否跑通、模型能否导出、推理是否对齐这一整条链路固化为一套可复现、可自动执行的测试工具方便模型作者与使用者查阅每种模型的训练推理部署打通情况并一键执行测试。在当前仓库中该体系的完整模板位于 docs/tipc/train_infer_python/template/test/包含四个核心文件test_tipc |--configs # 配置目录 | |--model_name # 您的模型名称 | |--train_infer_python.txt # 基础训练推理测试配置文件 |--docs # 文档目录 | |--test_train_inference_python.md # 基础训练推理测试说明文档 |----README.md # TIPC说明文档 |----test_train_inference_python.sh # TIPC基础训练推理测试解析脚本无需改动 |----common_func.sh # TIPC基础训练推理测试常用函数无需改动其中configs/model_name/train_infer_python.txt是唯一需要按模型定制的部分声明训练、导出、推理的命令模板与参数组合test_train_inference_python.sh与common_func.sh是通用解析与执行框架无需改动README.md与docs/test_train_inference_python.md分别描述支持情况总览与具体测试说明对应模板中的 README.md 和 test_train_inference_python.md。2. 打通情况汇总表如何声明模型能力模板 README 以一张汇总表声明模型各环节的打通状态已填写的部分表示可以使用本工具一键测试未填写-表示正在支持中算法论文模型名称模型类型基础训练预测更多训练方式模型压缩其他预测部署---支持---字段语义说明基础训练预测包括模型训练、Paddle Inference Python 预测更多训练方式包括多机多卡、混合精度AMP模型压缩包括裁剪FPGM、离线/在线量化PACT、KL 量化、蒸馏Distill其他预测部署包括 Paddle Inference C 预测、Paddle Serving 部署、Paddle-Lite 部署等。更详细的 MKLDNN、TensorRT 等预测加速功能支持情况可查阅各测试工具的更多教程见第 6 章。3. 配置文件train_infer_python.txt全字段详解配置文件是整个 TIPC 测试的输入由test_train_inference_python.sh按行解析。模板文件位于 train_infer_python.txt全文件按三段组织train_params、eval_params、infer_params。3.1 训练参数段train_paramsmodel_name:your_model_name python:python3.7 gpu_list:0 use_gpu:True autocast:null epoch_num:lite_train_lite_infer1 output_dir:./output/ train_batch_size:lite_train_lite_infer4 pretrained_model:null train_model_name:latest字段说明model_name模型名称用于日志与目录标识测试时替换为你的模型名python测试使用的 Python 解释器模板中为python3.7可按环境替换gpu_list参与训练的 GPU 编号列表-1表示纯 CPU 训练use_gpu训练是否使用 GPUTrue/Falseautocast混合精度开关null表示不使用测试脚本中若为amp会追加Global.use_ampTrue Global.scale_loss1024.0 Global.use_dynamic_loss_scalingTrueepoch_num训练轮数支持按 MODE 取值lite_train_lite_infer1表示轻量训练只跑 1 个 epochoutput_dir训练输出目录train_batch_sizebatch size同样可按 MODE 取值模板中 lite 模式为 4pretrained_model预训练模型路径null表示不加载train_model_name训练产出模型名如latest供后续导出与评估使用注意epoch_num与train_batch_size的取值语法是模式数值由common_func.sh中的func_parser_params依据当前 MODE 动态解析这是实现轻量模式快速跑通、完整模式全量验证的关键机制。3.2 训练器段trainertrainer:norm_train norm_train:tools/train.py -c config.yaml -o pact_train:null fpgm_train:null distill_train:nulltrainer字段声明需要执行的训练器列表可多个用|分隔。模板中每种训练器对应一条命令模板norm_train常规训练命令为tools/train.py -c config.yaml -o脚本会在此模板后追加--use_gpu/--epochs/--pretrained_model/--batch_size等键值对pact_trainPACT 量化训练模型压缩中的在线量化fpgm_trainFPGM 结构化裁剪训练distill_train蒸馏训练。测试脚本中test_train_inference_python.sh 第 281–302 行会根据 trainer 名称选择对应的run_train与run_export命令值为null的训练器会被continue跳过。若某个训练器未实现配置中填null即可。3.3 评估参数段eval_paramseval:nulleval声明评估脚本命令如tools/eval.py -c config.yaml -o。测试脚本在训练完成后若该值不为null会以训练产出的模型为--pretrained_model执行一次评估对应脚本第 348–353 行。模板示例留空实际使用时需填充。3.4 推理参数段infer_paramssave_dir:./output/ pretrained_model: norm_export:tools/export_model.py -c config.yaml -o quant_export:null fpgm_export:null distill_export:null export1:null export2:null ## infer_model:null infer_export:tools/export_model.py infer_quant:False inference:infer.py --use_gpu:True|False --use_mkldnn:True|False --cpu_threads:1|6 --batch_size:1 --use_tensorrt:False --null:null --model_dir:./infer --image_dir:./inference/rec_inference --save_log_path:null --benchmark:False字段说明save_dir导出模型保存目录pretrained_model导出所用的权重路径norm_export/quant_export/fpgm_export/distill_export各类训练产出模型的动转静导出命令模板export1/export2预留的自定义导出命令可追加infer_model直接指定已有推理模型目录非null时跳过导出步骤直接推理infer_export纯推理模式下whole_infer使用的导出命令infer_quant推理的模型是否为量化模型True/False影响后续 precision 组合的过滤逻辑inference基于 Paddle Inference 的预测脚本模板为 infer.py--use_gpu推理设备枚举True|False表示 GPU 与 CPU 都测--use_mkldnn是否启用 MKLDNN 加速枚举--cpu_threadsCPU 线程数枚举如1|6--batch_size推理 batch size 枚举--use_tensorrt是否启用 TensorRT--model_dir推理模型目录参数名值由脚本动态填充--image_dir推理输入数据目录--save_log_path日志保存路径--benchmark是否开启 benchmark 模式依赖 AutoLog 输出规范化性能日志推理参数的关键设计所有--xxx行中参数名的:后跟的是枚举值列表用|分隔脚本会对这些枚举做笛卡尔积组合遍历。例如 CPU 场景会遍历use_mkldnn × cpu_threads × batch_size × precision的所有组合每个组合生成一条完整推理命令并执行。null值的行如--null:null用于占位对齐行号func_set_params会将其跳过不会拼入命令。4. 测试脚本执行原理从行解析到命令拼接4.1 入口与 MODE 机制测试入口为bash test_tipc/test_train_inference_python.sh 参数配置文件 MODEMODE 支持五种取值MODE含义lite_train_lite_infer轻量训练 轻量推理用lite_data小数据集快速跑通全流程CI 默认模式lite_train_whole_infer轻量训练 完整推理验证完整推理参数组合whole_train_whole_infer完整训练 完整推理全量数据、全量参数whole_infer仅做完整推理直接对已有模型做全组合推理验证klquant_whole_inferKL 离线量化 完整推理klquant_whole_infer模式下脚本会按配置文件前 17 行重新解析量化推理参数脚本第 8 行awk NR1, NR51{print} $FILENAME按固定行号区间截取配置再用IFS分行解析因此配置文件的行顺序与行数不能随意增删新增参数时务必遵循模板行号布局。4.2 common_func.sh 中的五个核心函数common_func.sh 提供了解析与状态检查的基础能力func_parser_key取key:value行的 key按:分割取第一个字段func_parser_value取key:value行的 valuefunc_parser_params解析模式数值格式匹配当前 MODE 并返回对应值支持lite_train_lite_infer1这类写法func_set_params将key与value拼成keyvalue若 key 或 value 为null/空则返回空串从而安全地动态裁剪命令参数status_check根据命令退出码输出Run successfully with command - xxx或Run failed with command - xxx并追加写入结果日志。4.3 训练命令的拼接与执行脚本第 249–379 行对每个gpu_list中的 GPU、每个autocast取值、每个trainer脚本分别构造命令CPU 或单卡训练${python} ${run_train} --use_gpu... --output_dir... --epochs... --batch_size... [--amp配置]多卡训练${python} -m paddle.distributed.launch --gpus${gpu} ...多机训练${python} -m paddle.distributed.launch --ips${ips} --gpus${gpu} ...。训练结束后依次执行评估若eval非 null、动转静导出paddle.jit.save产出inference.pdmodel/inference.pdiparams、推理。PACT/FPGM 训练器会复用常规训练产出的模型作为预训练权重脚本第 325–327 行load_norm_train_model机制。4.4 推理组合遍历func_inference脚本第 133–211 行func_inference按设备分两大分支CPU 分支use_gpuFalse遍历use_mkldnn × cpu_threads × batch_size × precision。规则量化模型必须用 MKLDNNuse_mkldnnFalse且量化时跳过fp16 精度必须开启 MKLDNN量化模型推理精度必须为int8GPU 分支use_gpuTrue遍历use_tensorrt × precision × batch_size。规则fp16/int8 精度必须开启 TensorRT量化模型必须配合 TensorRT 或 int8。每个组合生成形如python infer.py --use_gpuFalse --use_mkldnnTrue --cpu_threads6 --model_dir... --batch_size1 --image_dir... --benchmarkFalse --precisionfp32的命令执行后输出日志文件python_infer_cpu_usemkldnn_*_threads_*_precision_*_batchsize_*.log或python_infer_gpu_usetrt_*并经status_check汇总到test_tipc/output/results_python.log。5. 一键测试实战流程5.1 准备数据用于基础训练推理测试的小数据集为test_images/lite_data.tar直接解压即可已解压则跳过tar -xf test_images/lite_data.tar该小数据集能快速验证训练过程是否跑通同时其中的数据也可用于验证推理部署过程。5.2 准备环境安装 PaddlePaddle要求版本 2.1安装模型依赖pip3 install -r ../requirements.txt安装 AutoLog规范化日志输出工具--benchmark模式依赖它输出性能报告git clone AutoLog 官方仓库 cd AutoLog pip install -r requirements.txt python setup.py bdist_wheel pip3 install ./dist/auto_log-1.0.0-py3-none-any.whl cd ../infer.py中通过auto_log.AutoLogger(model_name..., batch_size..., inference_config..., gpu_ids...)初始化日志器并借助times.start()/stamp()/end()自动统计各阶段耗时见 infer.py 第 117–146 行。5.3 运行测试测试方法如下更换为自己的参数配置文件即可完成对应模型的测试bash test_tipc/test_train_inference_python.sh ${your_params_file} lite_train_lite_infer以某模型模板中示例为 AlexNet的 Linux GPU/CPU 基础训练推理测试为例bash test_tipc/test_train_inference_python.sh test_tipc/configs/AlexNet/train_infer_python.txt lite_train_lite_infer5.4 结果判读所有结果汇总于test_tipc/output/results_python.log。每条命令运行成功时输出Run successfully with command - xxx若某条组合命令失败status_check会输出Run failed with command - xxx配合对应组合的详细日志位于test_tipc/output/下按trainer_gpus_*_autocast_*或python_infer_*命名的 log 文件即可快速定位失败环节。6. 更多测试功能本文聚焦的是 Linux GPU/CPU 基础训练推理Python 版的一键测试。同属 TIPC 体系的更多能力与教程还包括Linux GPU/CPU 基础训练推理测试说明文档单机单卡/单机多卡训练、正常模型与量化模型的推理支持情况汇总与测试细节Paddle Serving 测试文档基于 Serving 的模型服务化部署测试Linux GPU/CPU 基础训练推理开发文档从模型复现参考 模型复现指南→ Paddle Inference 推理开发infer_python.md→ TIPC 测试开发的完整三步开发规范与核验点仓库中还有 infer_cpp、lite_infer_cpp_arm_cpu、paddle2onnx、train_amp_infer_python、train_fleet_infer_python 等专题文档覆盖 C 推理、端侧部署、ONNX 转换、混合精度与分布式训练等扩展场景。7. 模板复用要点小结将test_tipc目录整体复制到你的模型仓库根目录保留test_train_inference_python.sh与common_func.sh不动按 train_infer_python.txt 的行号布局填写你的训练、导出、推理命令模板与参数枚举新增的--xxx推理参数务必追加在固定行号区间内确保你的仓库具备lite_data小数据集、符合规范的训练日志至少包含loss、avg_reader_cost、avg_batch_cost、avg_ips字段见 开发文档 第 2.2.3 节、export_model.py动转静脚本与infer.py推理脚本模板可参考 export_model.py其核心是paddle.jit.to_staticpaddle.jit.save依次跑通lite_train_lite_infer→whole_train_whole_infer→whole_infer→klquant_whole_infer即可完整验证模型从训练到部署的整条链路。最终TIPC 的意义在于让模型能否训练、能否导出、推理结果是否对齐、各加速选项是否生效全部变成一条命令即可复现的客观事实这正是模型开源后保证可复现性、可维护性的关键基础设施。赞分享人工智能深度学习计算机视觉NLP语音【免费下载链接】modelsOfficially maintained, supported by PaddlePaddle, including CV, NLP, Speech, Rec, TS, big models and so on.项目地址https://gitcode.com/gh_mirrors/mo/models点击查看免费下载相关推荐如何10分钟上手Capn Proto从安装到编译第一个Schema的完整教程如何10分钟上手Capn Proto从安装到编译第一个Schema的完整教程 Capn Proto 是一款极速的数据序列化与能力式 RPC远程过程调用人工智能深度学习计算机视觉NLP语音PaddlePaddle Linux GPU/CPU 基础训练推理全流程开发与 TIPC 一键测试实战指南PaddlePaddle Linux GPU/CPU 基础训练推理全流程开发与 TIPC 一键测试实战指南 本指南以飞桨PaddlePaddle模型仓库的人工智能深度学习计算机视觉NLP语音InsightFace ArcFace Paddle 飞桨训推一体认证TIPC测试指南从训练、推理到 Serving 部署的一键验证InsightFace ArcFace Paddle 飞桨训推一体认证TIPC测试指南从训练、推理到 Serving 部署的一键验证 飞桨PaddleP人工智能计算机视觉深度学习上一篇7个实用技巧GitLens终极远程仓库管理指南RemotesView集成方案详解下一篇Area51渲染线程与主线程通信消息队列设计创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表