ARTICLE DETAIL

资讯详情

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

Linux 端飞桨基础训练推理功能测试(TIPC)开发与实战指南

Linux 端飞桨基础训练推理功能测试(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点击查看免费下载飞桨训推一体全流程Training and Inference Pipeline CriterionTIPC是一套把模型训练、动转静导出、Paddle Inference 推理串成一条自动化流水线的测试体系。本文以test_train_inference_python.sh主测试程序为线索系统讲解 Linux GPU/CPU 下基础训练推理功能测试的结论汇总、环境与数据准备、一键测试命令、51 行配置文件的全字段解析以及测试脚本的底层解析机制与 6 步开发流程帮助你在自己的模型仓库中快速落地一套可复用、可核查的训练推理回归测试。一、什么是 Linux 端基础训练推理功能测试Linux 端基础训练推理功能测试是 TIPC 体系中覆盖范围最广、门槛最低的一环其主程序为test_train_inference_python.sh仓库模板位于 template/test/test_train_inference_python.sh。该脚本可以测试基于 Python 的模型训练、评估、推理等基本功能并预留了**裁剪FPGM、量化PACT、蒸馏Distill**等模型压缩方式的配置位。具体测试点可归纳为三类模型训练单机单卡 / 单机多卡训练跑通多机多卡、混合精度作为扩展能力支持模型转换通过“模型动转静”将训练得到的动态图模型保存为静态图 Inference 模型Paddle Inference 推理基于静态图模型完成 Python 推理流程跑通并可在 GPU可选 TensorRT与 CPU可选 MKLDNN、多线程两种后端下组合验证。该测试以“命令能否成功运行”为第一目标不追求精度与速度指标因此使用小数据集即可快速闭环非常适合作为模型仓库的入门级 CI 检查项。二、测试结论汇总先明确你的模型支持什么在编写测试文档时第一步是用两张汇总表把模型当前的支持情况说清楚这也是后续一切测试动作的验收依据。训练相关结论表关注单机单卡、单机多卡、多机多卡、模型压缩单机多卡四类训练方式。算法名称模型名称单机单卡单机多卡多机多卡模型压缩单机多卡--正常训练正常训练--推理相关结论表基于训练是否使用量化可将训练产出的模型分为正常模型和量化模型两类模型对应的推理功能分别汇总。算法名称模型名称模型类型devicebatchsizetensorrtmkldnncpu多线程--正常模型GPU1-----正常模型CPU1-fp32支持两张表均以-表示当前模型暂不支持该项实际操作时需按自己模型的真实能力填写。更全面的字段说明可参考 TIPC 总览文档模板见 community/repo_template/test_tipc/README.md基础训练预测指模型训练 Paddle Inference Python 预测更多训练方式指多机多卡、混合精度模型压缩指裁剪、离线/在线量化、蒸馏其他预测部署指 Paddle Inference C 预测、Paddle Serving 部署、Paddle-Lite 部署等。三、测试工具组成两个脚本 一个配置文件一键测试的核心资产只有 3 个文件其中两个脚本无需改动文件作用是否需要修改test_train_inference_python.sh解析配置文件并拼装、执行训练/动转静/推理命令否common_func.sh提供配置解析、参数拼装、状态检查等公共函数否train_infer_python.txt以key:value形式声明全部命令参数是按模型修改测试脚本test_train_inference_python.sh模板见 template/test/test_train_inference_python.sh公共函数common_func.sh模板见 template/test/common_func.sh配置文件train_infer_python.txt模板见 template/test/train_infer_python.txt。三者的协作关系是test_train_inference_python.sh读取配置文件的 51 行内容脚本中通过awk NR1, NR51{print} $FILENAME截取见 test_train_inference_python.sh#L8-L12再借助common_func.sh中的func_parser_key/func_parser_value将每一行拆解为key与value最终拼装出完整命令并逐条执行、记录状态。四、测试流程三步走4.1 准备数据基础训练推理测试使用小数据集lite_data压缩包为test_images/lite_data.tar解压即可已解压则跳过此步tar -xf test_images/lite_data.tar小数据集建议由训练集和验证集各 8~16 张图像构成压缩后数据大小控制在20M以内便于在 GitHub 上直接托管并快速验证训练/评估/推理链路。为方便管理可先用tar -zcf lite_data.tar lite_data打包后上传测试时再解压。4.2 准备环境依次完成三件事安装 PaddlePaddle 2.1GPU 版本需与 CUDA 环境匹配安装模型依赖进入模型仓库后执行pip3 install -r ../requirements.txt路径为模型仓库内相对路径请替换为自身仓库的依赖文件如本仓库 paddlecv/requirements.txt 所列依赖安装 AutoLogAutoLog 是规范化日志输出工具用于自动计时、统计 CPU/GPU 资源并输出结构化推理日志git clone https://github.com/LDOUBLEV/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 ../若需要测试量化、裁剪等模型压缩功能还需额外安装paddleSlimpip3 install paddleslim可选。4.3 功能测试一键跑通训练→动转静→推理测试方法非常简单更换为自己的参数配置文件即可完成对应模型的测试。bash test_tipc/test_train_inference_python.sh ${your_params_file} lite_train_lite_infer其中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_infer注test_tipc目录位于各模型仓库根目录configs/AlexNet/train_infer_python.txt是 AlexNet 模型的配置文件test_tipc的整体目录约定可参考 community/repo_template/test_tipc 的目录结构。每条命令执行完毕后脚本会通过status_check函数见 common_func.sh#L55-L64打印运行状态。全部成功时输出Run successfully with command - xxx若某条命令失败则输出Run failed with command - xxx失败信息中会包含完整命令可直接据此排查配置文件问题。所有命令的日志会汇总到test_tipc/output/results_python.log中按Run successfully / Run failed关键字即可快速定位失败指令。五、train_infer_python.txt 配置文件全解析完整配置文件共51 行分为 5 个部分行号范围内容第 1~14 行训练参数第 15~22 行训练脚本配置含裁剪/量化/蒸馏训练入口第 23~26 行评估脚本与配置常规基础测试无需关注第 27~36 行模型动转静导出脚本与配置第 37~51 行模型 Inference 推理参数文本行共有 3 种类型key:value格式以冒号为分隔符可被解析为键值对需按实际含义修改xxxxx注释信息无需修改##段落分隔符无实际意义无需修改。5.1 训练配置参数第 1~14 行行号参考内容含义key 是否需改value 是否需改修改内容2model_name:alexnet模型名字否是value 改为自己的模型名字3python:python3.7python 环境否是value 改为自己的 python 环境4gpu_list:0GPU id否是value 改为自己的 GPU ID5use_gpu:True是否使用 GPU是是key 改为代码中设置 GPU 的参数value 改为对应值6auto_cast:null是否使用混合精度否否-7epoch_num:lite_train_lite_infer1迭代 epoch 数是否key 改为代码中设置 epoch 数量的参数8output_dir:./output/输出目录是否key 改为代码中设置输出路径的参数9train_batch_size:lite_train_lite_infer4训练 batch size是否key 改为代码中设置 batch size 的参数10pretrained_model:null预训练模型是是训练指定预训练模型时key 与 value 对应修改11train_model_name:latest训练产出的模型名否是value 改为训练后保存的模型名供动转静使用12~13null:null预留字段否否-映射示例对于训练命令python3.7 train.py --devicegpu --epochs2 --data-path./lite_data --lr0.001包含 4 个超参数运行设备--devicegpu→ 修改第 5 行为--device:gpu迭代轮数--epochs2→ 修改第 7 行为--epochs:lite_train_lite_infer2lite_train_lite_infer为模式标记表示少量数据训练 少量数据推理此处勿改数据路径--data-path./lite_data与学习率--lr0.001配置文件没有对应行可将二者并入norm_train训练命令见 5.2也可在第 12 行添加自定义字段--data-path:./lite_data。5.2 训练命令配置第 15~22 行行号参考内容含义key 是否需改value 是否需改修改内容15trainer:norm_train训练方法否否-16norm_train:tools/train.py -c config.yaml -o正常训练脚本否是value 改为自己的训练命令17pact_train:null量化训练脚本配置否否-18fpgm_train:null裁剪训练脚本配置否否-19distill_train:null蒸馏训练脚本配置否否-20~21null:null预留字段否否-映射示例对于正常训练命令python3.7 train.py --devicegpu --epochs1 --data-path./lite_data --lr0.001第 15 行直接写norm_train第 16 行配置入口脚本并把无法单独成行的超参数并入norm_train:train.py --data-path./lite_data --lr0.001其他训练方式量化/裁剪/蒸馏暂不支持时第 17~21 行保持null即可。5.3 模型动转静配置第 27~36 行注意动转静过程中程序会自动指定输入/输出目录因此只需提供可配置输入、输出目录的参数即可。行号参考内容含义key 是否需改value 是否需改修改内容28save_dir:./output/动转静输出目录是否key 改为代码中设置输出目录的参数29pretrained_model:预训练模型路径是否key 改为代码中设置预训练模型路径的参数30norm_export:tools/export_model.py -c config.yaml -o正常模型导出命令否是value 改为实际动转静导出命令31quant_export:null量化模型动转静否否-32fpgm_export:null裁剪模型动转静否否-33distill_export:null蒸馏模型动转静否否-34~35null:null预留字段否否-映射示例对于动转静命令python tools/export_model.py --pretrained./alexnet_paddle.pdparams --save-inference-dir./alexnet_infer --modelalexnet预训练模型路径--pretrained...→ 第 29 行修改为--pretrained:保存目录--save-inference-dir...→ 第 28 行修改为--save-inference-dir:导出命令中额外参数--modelalexnet并入第 30 行norm_export:tools/export_model.py --modelalexnet。5.4 模型推理配置第 37~51 行行号参考内容含义key 是否需改value 是否需改修改内容37infer_model:null推理模型保存路径否否-38infer_export:tools/export_model.py -c config.yaml -o推理前是否需要导出否是value 改为与第 30 行一致39infer_quant:False是否量化推理否否-40inference:infer.py推理脚本否是value 改为自己的推理脚本41--use_gpu:True\|False是否使用 GPU是是key/value 改为设置 GPU 的参数与取值42--use_mkldnn:True\|False是否使用 MKLDNN否否-43--cpu_threads:1\|6MKLDNN 线程数否否-44--batch_size:1推理 batch size是否key 改为代码中设置 batch size 的参数45--use_tensorrt:False是否开启 TensorRT否否-46--null:null精度范围不对该项测试否否-47--model_dir:./infer模型目录是否key 改为代码中设置 inference model 目录的参数48--image_dir:./inference/rec_inference图片路径或文件夹路径是否key/value 改为自己的输入数据参数49--save_log_path:null推理日志输出路径否否-50--benchmark:False是否输出规范化推理日志是是key/value 改为规范化日志输出的设置参数51null:null预留字段否否-映射示例对于推理命令python deploy/inference_python/infer.py --model-dir./alexnet_infer/ --img-path./lite_data/test/demo.jpg推理入口脚本 → 第 40 行修改为inference:deploy/inference_python/infer.pyInference 模型目录 → 第 47 行修改为--model-dir:./alexnet_infer/测试图像路径 → 第 48 行修改为--img-path:./lite_data/test/demo.jpg。六、测试脚本工作机制配置如何变成命令从源码结构看test_train_inference_python.sh的解析与执行遵循“三段式”拼装逻辑。任何训练、动转静、推理命令都可以拆解为三个部分python run_script set_configs例如python3.7 train.py -c config.yaml -o epoch_num120python部分为python3.7run_script部分为train.pyset_configs部分为-c config.yaml -o epoch_num120。set_configs一般通过分隔 key 与 value配置文件模板即据此拼出完整命令。脚本内部的关键机制包括按行定位参数脚本以 0 起始索引直接引用lines[i]例如model_name取lines[1]第 2 行、推理脚本取lines[39]第 40 行因此配置文件的行序不能随意增删预留null字段就是为保持行号稳定模式化取值func_parser_params解析形如lite_train_lite_infer1的字段根据MODE参数如lite_train_lite_infer取出对应值见 common_func.sh#L31-L53多值遍历推理段的值支持|分隔的多取值如--use_gpu:True|False、--cpu_threads:1|6func_inference函数会对 GPU/CPU、MKLDNN、线程数、batch size、TensorRT、精度等做笛卡尔组合遍历执行并为每个组合生成独立日志见 test_train_inference_python.sh#L133-L211分布式扩展训练命令根据gpu_list长度自动切换执行方式——单卡直接执行、多卡使用python -m paddle.distributed.launch --gpus...、多机追加--ips...见 test_train_inference_python.sh#L330-L336。此外量化pact/裁剪fpgm训练会自动以正常训练产出的模型为预训练权重load_norm_train_model确保压缩训练从正常训练结果继续。七、测试功能开发6 个步骤与 2 个核验点在正式开发本测试前需要先完成模型复现训练 基于训练引擎的预测与基于 Paddle Inference 的推理开发对应文档分别为 《模型复现指南》 与 《Linux GPU/CPU 模型推理开发文档》。基础训练推理测试的完整开发流程如下流程共 6 步其中第 5 步“验证配置正确性”与第 6 步“撰写说明文档”为核验点。准备待测试的命令准备好训练、动转静、推理三条命令。以 AlexNet 为例# 模型训练 python3.7 train.py --devicegpu --epochs2 --data-path./lite_data --lr0.001 # 模型动转静 python tools/export_model.py --pretrained./alexnet_paddle.pdparams --save-inference-dir./alexnet_infer --modelalexnet # 推理 python deploy/inference_python/infer.py --model-dir./alexnet_infer/ --img-path./lite_data/test/demo.jpg准备数据与环境按 4.1、4.2 节准备lite_data小数据集与 PaddlePaddle 环境准备开发所需脚本在模型仓库新建test_tipc目录将 common_func.sh 与 test_train_inference_python.sh 拷贝进去两个脚本无需改动填写配置文件在test_tipc/configs/model_name下放置 train_infer_python.txtmodel_name替换为模型名并按第 5 章完成参数映射验证配置正确性运行bash test_tipc/test_train_inference_python.sh ${your_params_file} lite_train_lite_infer若失败会输出具体报错命令例如Run failed with command - python3.7 tools/export_model.py --modelalexnet --pretrained./test_tipc/output/norm_train_gpus_0_autocast_null/latest --save-inference-dir./test_tipc/output/norm_train_gpus_0_autocast_null!从报错可知pretrained参数缺少.pdparams后缀修改配置文件后重跑即可。核验标准为基于修改后的配置文件全部命令测试通过撰写说明文档编写 TIPC 功能总览文档test_tipc/README.md与 Linux GPU/CPU 基础训练推理测试说明文档test_tipc/docs/test_train_inference_python.md模板分别位于 template/test/doc/README.md 与 template/test/doc/test_train_inference_python.md。仓库中的完整范例见 community/repo_template/test_tipc含 test_train_inference_python.sh、common_func.sh、prepare.sh 与配置示例 train_infer_python.txt。最终仓库目录结构应如下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基础训练推理测试常用函数无需改动八、运行模式与日志产物test_train_inference_python.sh支持 5 种运行模式脚本注释中声明见 test_train_inference_python.sh#L5模式数据规模用途lite_train_lite_infer少量数据训练 少量数据推理快速验证训练到推理的流程走通基础测试必做项lite_train_whole_infer少量数据训练 全量数据推理训练精度较低但推理覆盖全量whole_train_whole_infer全量数据训练 全量数据推理完整精度验证whole_infer仅全量推理直接对已有模型做全量推理klquant_whole_infer离线量化 全量推理KL 量化推理验证运行后所有日志保存在test_tipc/output/目录下test_tipc/output/ |- results_python.log # 运行指令状态汇总日志 |- norm_train_gpus_0_autocast_null/ # GPU 0 号卡正常训练的训练日志与模型保存目录 |- python_infer_cpu_usemkldnn_*_threads_*_precision_*_batchsize_*.log # CPU 推理各组合日志 |- python_infer_gpu_usetrt_*_precision_*_batchsize_*.log # GPU 推理各组合日志results_python.log中逐条记录了每条指令的运行状态Run successfully with .../Run failed with ...结合日志文件名中的usemkldnn、threads、precision、batchsize、usetrt等标记可以精确定位到具体参数组合下的失败命令。九、从测试到部署完整 TIPC 体系基础训练推理测试是 TIPC 体系的起点。打通该测试后模型仓库即可进一步接入更丰富的测试与部署能力Paddle Inference 推理开发训练推理测试依赖的推理脚本按 9 步流程开发初始化推理引擎、数据预处理、推理、后处理、日志规范化等详见 《Linux GPU/CPU 模型推理开发文档》配套代码模板为 export_model.py 与 infer.py模型复现全流程训练侧的训练日志需包含loss、avg_reader_cost、avg_batch_cost、avg_ips等关键字段动转静产出的推理结果需与训练引擎预测结果保持一致可用reprod_logger保存结果对比具体规范见 《模型复现指南》更多部署形态Paddle Serving、Paddle-Lite、C 推理等测试文档可参考 docs/tipc 目录下的对应子模块文档以及社区模板 community/repo_template/deploy 中的部署说明。本文档为功能测试用更丰富的训练预测使用教程请参考 《Linux GPU/CPU 基础训练推理开发文档》 与 社区 repo 模板首页。赞分享人工智能深度学习计算机视觉NLP语音【免费下载链接】modelsOfficially maintained, supported by PaddlePaddle, including CV, NLP, Speech, Rec, TS, big models and so on.项目地址https://gitcode.com/gh_mirrors/mo/models点击查看免费下载相关推荐PaddleOCR Mac 端基础训练预测功能测试TIPC实战指南PaddleOCR Mac 端基础训练预测功能测试TIPC实战指南 本文档围绕 PaddleOCR 仓库 test_tipc https://link.gi人工智能计算机视觉OCR深度学习大模型RAGPaddleOCR Windows 端 TIPC 基础训练预测功能测试实战指南PaddleOCR Windows 端 TIPC 基础训练预测功能测试实战指南 本文档基于 PaddleOCR 仓库 test_tipc 目录下的 win_te人工智能计算机视觉OCR深度学习大模型RAG国家中小学智慧教育平台电子课本下载快速上手从预览页到本地 PDF 的完整流程国家中小学智慧教育平台电子课本下载快速上手从预览页到本地 PDF 的完整流程 tchMaterial parser 是一款面向国家中小学智慧教育平台的图形化电网页爬虫教育上一篇企业级图表工具安全架构drawio-desktop的离线优先设计哲学下一篇如何用drawio-desktop彻底告别Visio兼容性烦恼创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表