ARTICLE DETAIL

资讯详情

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

飞桨 PaddlePaddle macOS CPU 训推一体(TIPC)基础训练推理测试开发规范实战指南

飞桨 PaddlePaddle macOS CPU 训推一体(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 预测部署测试框架用于一键验证每个模型的训练推理打通情况。本文以 PaddleOCR 文本检测模型样板间为主线系统讲解 macOS CPU 环境下 TIPC 基础训练推理链条的开发接入规范、参数配置文件逐行含义与自动化测试执行方式读者完成后即可为自己的模型编写 macOS 端 TIPC 参数配置并跑通CPU 训练 → 动转静 → CPU inference 预测全链路。本文档规范基于当前仓库 development_specification_docs/macos_train_infer_python.md 展开TIPC 测试脚本的通用模板可参考 community/repo_template/test_tipc。1. 总览与背景飞桨除了提供基本的模型训练和预测能力还提供了支持多端多平台的高性能推理部署工具。TIPC 就是围绕训推一体目标设计的规范与测试工具它既是一套信息汇总框架方便用户查阅每种模型的训练推理部署打通情况也是一套可一键执行的自动化测试机制用于在 CI/CE 中持续监控框架代码更新可能引发的模型训练、预测报错、性能下降等问题。1.1 自动化测试要监控什么TIPC 自动化测试主要监控以下内容框架更新后套件模型的正常训练、量化训练、裁剪训练、评估、动转静、推理预测是否能正常走通例如 API 的不兼容升级框架更新后套件模型的预测速度是否合理框架更新后套件模型训练的精度是否达标或训练 loss 是否出现 nan 等问题其他相关问题。为此需要在套件中加入不影响套件正常运行的运行脚本将模型的训练、预测 TIPC 链路接入框架的 CI 和 CE从而提升 PR 合入质量。1.2 四种 CI/CE 机制规范定义了四类可建立的 CI/CE 机制覆盖少数据快速验证与全量数据严谨验证两个层次lite_train_lite_infer少量数据训练 少量数据预测单模型 15 分钟内保证训练跑通训练速度正常监控 batch_cost训练资源占用合理监控显存保证训练可复现loss 曲线收敛正常固定 seed 后 loss 一致保证训练后模型动转静 → inference 预测跑通预测资源占用合理监控显存、内存。lite_train_whole_infer少量数据训练 全量数据预测单模型 30 分钟内训练跑通、速度正常、资源占用合理、可复现要求同上预测速度符合预期预测资源占用合理。whole_train_whole_infer全量数据训练 全量数据预测周级别训练跑通、速度正常、训练精度达到既定值预测结果正确、预测速度符合预期、预测资源占用合理。whole_infer不训练全量数据走通开源模型评估与预测单模型 30 分钟内直接对开源/预训练模型做动转静 → inference 预测验证预测结果正确性、预测速度与资源占用。注由于 CI 有时间限制测试时需要限制运行时间因此必须构建一个很小的数据集来完成测试。1.3 TIPC 自动化测试链条与 MAC 端必选模块TIPC 测试链条中相邻两个模块之间是两两组合关系可根据模型开发规范适当删减链条。针对macOS CPU 环境规范明确模型训练方面MAC CPU 训练CPU 训练必选模型压缩方面MAC CPU 训练裁剪训练可选、在线量化训练可选、离线量化可选飞桨模型转换动转静必选Paddle Inference 预测部署方面MAC CPU 上不同 batchsize、不同 CPU 线程数的运行状态必选。与 Linux 规范参见 train_infer_python.md相比MAC 端的核心差异在于不支持 GPU 训练且 CPU 预测不支持开启 MKLDNN因此 MAC 端只需要走通 CPU 训练 CPU inference 预测链条即可。1.4 文本检测样板间概览规范以 PaddleOCR 文本检测模型为例提供样板间可跑通上文所有测试链条并完成四种 CI/CE 机制。样板间中 test_tipc 文件夹与本规范相关的文件结构如下test_tipc/ ├── configs/ # 自动化测试需要的配置文件和参数文件 │ ├── ppocr_det_mobile/ # ppocr 检测模型 mobile 版本的配置文件和参数文件夹 │ │ ├── det_mv3_db.yml # 测试 mobile 版 ppocr 检测模型训练的 yml 文件 │ │ └── train_linux_cpu_normal_normal_infer_python_mac.txt # Mac 端测试 mobile 版 ppocr 检测模型的参数配置文件 ├── prepare.sh # 以参数配置文件为输入完成数据、预训练模型、预测模型的自动下载 ├── test_train_inference_python.sh # 自动化测试脚本以参数配置文件为输入组建不同运行命令完成所有链条运行 └── readme.md # 测试脚本运行说明当前仓库中提供了可直接参考的通用模板目录 community/repo_template/test_tipc其中包含prepare.sh、test_train_inference_python.sh、common_func.sh、configs/your_model_name/train_infer_python.txt参数文件占位以及 test_train_inference_python 使用文档。2. TIPC 规范接入流程MAC 端 TIPC 规范接入与 Linux 端基础链条接入规范一致包含如下三个步骤准备数据规范化输出日志编写自动化测试代码。2.1 准备数据prepare.sh不同模型所需的训练、预测数据与预训练模型各不相同因此需要一个自动化下载脚本prepare.sh根据不同的运行模式和测试模型完成以下功能预训练模型下载并解压训练、预测数据下载并解压准备编译好的第三方库等。prepare.sh的使用方式为bash test_tipc/prepare.sh 配置文件路径 运行模式具体运行命令示例Linux 规范中的用法MAC 端一致bash test_tipc/prepare.sh ./test_tipc/configs/ppocr_det_mobile/train_infer_python.txt lite_train_lite_infer运行模式一共有 7 种其中与训练/预测链条相关的 4 种为lite_train_lite_infer少量数据集训练、预测打通验证lite_train_whole_infer少量数据训练全量数据预测验证训练模型预测速度是否合理whole_infer不训练全量数据预测走通开源模型评估、动转静检查 inference model 预测时间和精度whole_train_whole_infer全量数据训练全量数据预测验证模型训练精度、预测精度与预测速度。其余还有cpp_inferC inference 逻辑测试、server_inferPaddle Server 部署能力测试、klquant_infer离线量化功能与量化 inference model 预测速度测试三种模式MAC 端主要关注前四种。prepare.sh会根据不同运行模式配合从配置文件中解析得到的模型区分名称下载不同的数据和训练模型用于后续测试。Tips不同模式的区别在于训练和测试数据不同若不同模式下载的数据文件名不一致可通过ln -s创建软链确保训练时能通过配置文件中的默认数据路径加载到数据接入自有模型时prepare.sh中的model_name判断条件以及下载内容代码需要自行修改例如在whole_infer模式下会根据解析出的model_name如ocr_det选择下载对应的数据和推理模型。2.2 规范化输出日志自动化测试依赖统一的日志输出格式规范分为训练日志与 inference 日志两部分详细要求可参考 Linux 规范文档 的 2.2 节此处摘要如下训练日志除打印 loss、精度等信息外还须包含reader_cost1 个 Step 数据加载用时、batch_cost1 个 Step 训练用时等于 reader_cost 加 forward 时间、ips单卡每秒处理样本数、samples两次打印之间新完成训练的样本数用于快速定位是模型计算慢还是读数据慢inference 日志除预测结果外还须包含 Paddle 版本号及具体 commit、运行的硬件CPU/GPU、运行配置是否开启 IR 优化、TRT、MKLDNN、线程数、模型名称、数据信息batch size、数据量、性能信息CPU 内存、GPU 显存与利用率、各阶段平均预测时间、FP32/FP16 预测结果用于正确性校验。规范化输出可借助 AutoLog 工具包实现并在循环预测结束后调用report()输出日志并回收统计子进程。2.3 编写自动化测试代码自动化测试代码由三个文件组成各司其职configs/[model]/[params_file].txt参数配置文件用于配置测试哪些功能训练部分是否测试分布式训练、混合精度训练等prepare.sh负责测试前准备自动下载数据、预训练模型、预测模型test_train_inference_python.sh自动化测试运行脚本根据 txt 中的参数配置组合出不同的运行指令并执行。运行脚本执行时通过common_func.sh中的工具函数解析参数核心函数包括func_parser_key解析:前的部分、func_parser_value解析:后的部分、func_set_params组建keyvalue字符串key 或 value 为 null 时返回空字符使参数不生效、func_parser_params解析与运行模式 MODE 相关的 epoch、batch size 参数、status_check状态检查0 表示成功失败与成功指令均写入 results.log。3. MAC 端 TIPC 训练参数配置由于 MAC 端不支持 GPU 训练并且 CPU 不支持开启 MKLDNN 进行预测MAC 端仅需走通 CPU 训练和 CPU inference 预测链条。以 PaddleOCR 检测模型为例MAC 端 TIPC训练链条参数配置文件内容如下train_params model_name:ocr_det python:python gpu_list:-1 Global.use_gpu:False Global.auto_cast:null Global.epoch_num:lite_train_lite_infer1|whole_train_whole_infer300 Global.save_model_dir:./output/ Train.loader.batch_size_per_card:lite_train_lite_infer2|whole_train_whole_infer4 Global.pretrained_model:null train_model_name:latest train_infer_img_dir:./train_data/icdar2015/text_localization/ch4_test_images/ null:null ## trainer:norm_train|pact_train|fpgm_train norm_train:tools/train.py -c test_tipc/configs/det_mv3_db.yml -o Global.pretrained_model./pretrain_models/MobileNetV3_large_x0_5_pretrained pact_train:deploy/slim/quantization/quant.py -c test_tipc/configs/det_mv3_db.yml -o fpgm_train:deploy/slim/prune/sensitivity_anal.py -c test_tipc/configs/det_mv3_db.yml -o Global.pretrained_model./pretrain_models/det_mv3_db_v2.0_train/best_accuracy distill_train:null null:null null:null ## eval_params eval:null null:null ##3.1 训练参数逐行说明参数说明MAC 端取值含义model_name:ocr_det模型标识名也是 prepare.sh 中区分不同模型的名称按实际模型命名python:python运行 Python 解释器MAC 端一般直接使用系统pythongpu_list:-1GPU 列表设置为-1表示不使用 GPU在 CPU 上运行Global.use_gpu:False是否使用 GPU设置为False与gpu_list:-1配套确保 CPU 训练Global.auto_cast:null混合精度训练开关不测试混合精度时置 null 不生效Global.epoch_num:lite_train_lite_infer1\|whole_train_whole_infer300不同模式下的 epoch 数少量数据模式用 1 个 epoch全量模式用 300 个 epochGlobal.save_model_dir:./output/模型保存目录需修改:前的关键字以匹配实际参数Train.loader.batch_size_per_card:lite_train_lite_infer2\|whole_train_whole_infer4不同模式下的单卡 batch size少量数据模式为 2全量模式为 4Global.pretrained_model:null预训练模型加载路径不需要加载时置 nulltrain_model_name:latest训练后保存的模型文件名用于正确加载训练产出模型train_infer_img_dir:./train_data/icdar2015/...训练后执行预测的数据路径不需要时置 nullnull:null预留参数行可按params_key:params_value扩展trainer:norm_train\|pact_train\|fpgm_train要测试的 trainer 组合MAC 端同样支持正常训练、在线量化训练pact、裁剪训练fpgm不测试的置 nullnorm_train/pact_train/fpgm_train对应训练运行脚本与 Linux 端保持一致如tools/train.py、deploy/slim/quantization/quant.py、deploy/slim/prune/sensitivity_anal.pydistill_train:null蒸馏训练脚本不测试时置 null核心要点gpu_list参数设置为-1、use_gpu参数设置为False即表示在 CPU 上运行除此之外MAC 端训练参数与其他平台保持一致。配置文件中的:前后不要随意加空格若训练参数行数不足以组建运行命令可将部分参数放在默认训练的配置文件中或扩展null:null参数行或修改test_train_inference_python.sh完成训练配置。4. MAC 端 TIPC 预测参数配置以 PaddleOCR 检测模型为例MAC 端 TIPC预测链条参数配置文件内容如下infer_params Global.save_inference_dir:./output/ Global.pretrained_model: norm_export:tools/export_model.py -c test_tipc/configs/det_mv3_db.yml -o quant_export:deploy/slim/quantization/export_model.py -c test_tipc/configs/det_mv3_db.yml -o fpgm_export:deploy/slim/prune/export_prune_model.py -c test_tipc/configs/det_mv3_db.yml -o distill_export:null export1:null export2:null inference_dir:null train_model:./inference/ch_ppocr_mobile_v2.0_det_train/best_accuracy infer_export:tools/export_model.py -c configs/det/ch_ppocr_v2.0/ch_det_mv3_db_v2.0.yml -o infer_quant:False inference:tools/infer/predict_det.py --use_gpu:False --enable_mkldnn:False --cpu_threads:1|6 --rec_batch_num:1 --use_tensorrt:False --precision:fp32 --det_model_dir: --image_dir:./inference/ch_det_data_50/all-sum-510/ null:null --benchmark:True null:null4.1 预测参数逐行说明参数说明MAC 端取值含义Global.save_inference_dir:./output/导出 inference model 的保存目录主要关注参数关键字路径可自定义Global.pretrained_model:导出时加载模型的参数按实际模型填写norm_export/quant_export/fpgm_export/distill_export对应正常/量化/裁剪/蒸馏训练模型的导出脚本不测的置 nullexport1/export2预留位置无需理会train_model:./inference/ch_ppocr_mobile_v2.0_det_train/best_accuracy加载训练/开源模型进行动转静按实际模型路径填写infer_export是否对上述模型执行动转静导出置 null 表示不执行infer_quant:False上述模型路径是否为量化模型MAC 端一般为 Falseinference:tools/infer/predict_det.pyinference 执行脚本按模型实际预测脚本填写--use_gpu:False是否使用 GPU 预测MAC 端必须为 False--enable_mkldnn:False是否开启 MKLDNNMAC 端 CPU 不支持 MKLDNN必须为 False--cpu_threads:1\|6CPU 线程数多个值用\|隔开分别验证不同线程下的预测速度与精度--rec_batch_num:1预测 batch size可按需设置多个值--use_tensorrt:False是否开启 TensorRTMAC 端不支持必须为 False--precision:fp32预测精度MAC CPU 上以 fp32 为主--det_model_dir:加载 inference model 路径的参数:后无需设置--image_dir:./inference/ch_det_data_50/all-sum-510/预测数据路径按实际数据路径填写--benchmark:True是否开启 AutoLog 统计开启后可规范化输出预测日志null:null扩展参数可按params_key:params_value格式扩展核心要点在参数文件中将 TensorRT、MKLDNN 相关参数--use_tensorrt、--enable_mkldnn均设置为 False同时--use_gpu也设置为 False。多值参数如--cpu_threads:1|6、--rec_batch_num:1会被组合出更多测试组合例如开启 MKLDNN 1 线程 1 batchsize、开启 MKLDNN 6 线程 1 batchsize等不同配置下的预测速度对比MAC 端由于 MKLDNN 关闭重点考察不同 CPU 线程数与 batch size 组合下的推理表现。5. MAC 端 TIPC 测试执行流程MAC 端 TIPC 测试方法同 Linux 端仅仅根据不同硬件环境调整了部分参数。接入完成后通过两行命令即可完成单项功能测试以通用模板 community/repo_template/test_tipc 中的占位配置为例# 第一步准备数据与模型配置文件选择 模式选择 bash test_tipc/prepare.sh configs/[model_name]/[params_file_name] [Mode] # 第二步运行自动化测试 bash test_tipc/test_train_inference_python.sh configs/[model_name]/[params_file_name] [Mode]MAC 端典型执行示例bash test_tipc/prepare.sh ./test_tipc/configs/ppocr_det_mobile/train_linux_cpu_normal_normal_infer_python_mac.txt lite_train_lite_infer bash test_tipc/test_train_inference_python.sh ./test_tipc/configs/ppocr_det_mobile/train_linux_cpu_normal_normal_infer_python_mac.txt lite_train_lite_infertest_train_inference_python.sh会依次解析参数配置文件先读取第 1 行到第 51 行的参数可通过dataline$(awk NR1, NR51{print} $FILENAME)方式获取再用func_parser_params和func_parser_value等函数逐行解析最后通过eval $cmd执行组建出的完整命令。测试产出 log 后可进一步用compare_results.py对比 log 中的预测结果与预存在 results 目录下的基准结果判断预测精度是否符合预期。5.1 调试技巧将test_train_inference_python.sh中的eval改为echo即可只打印将要运行的命令而不真正执行便于快速检查命令组建是否正确功能测试时先单独运行组建出的命令确认功能正常再接入自动化脚本shell 对空格使用非常严格前后不要加空格配置文件中:前后同样不要随意加空格。6. 其他说明与适用边界MAC 端 TIPC 测试方法与 Linux 端保持一致仅根据不同硬件环境调整了部分参数gpu_list为-1、use_gpu为False、关闭 MKLDNN 与 TensorRT其余训练/导出/预测脚本与参数均沿用 Linux 端配置模型压缩裁剪、在线量化、离线量化、蒸馏等为可选链条MAC 端只需保证 CPU 训练必选、动转静必选、MAC CPU 上不同 batchsize/不同 CPU 线程数的 inference 预测必选三条主链路的可运行性接入流程的完整细节prepare.sh 编写、训练日志与 inference 日志规范化、AutoLog 使用、params.txt 全部参数汇总等请参考 Linux GPU/CPU 基础训练推理测试开发规范TIPC 测试脚本的通用可复用模板含prepare.sh、common_func.sh、test_train_inference_python.sh及配置文件占位存放于 community/repo_template/test_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点击查看免费下载相关推荐飞桨 TIPC Linux GPU/CPU 基础训练推理测试开发规范从 CI/CE 监控到一键训推链路接入飞桨 TIPC Linux GPU/CPU 基础训练推理测试开发规范从 CI/CE 监控到一键训推链路接入 飞桨训推一体全流程Training and In人工智能深度学习计算机视觉NLP语音Linux 端飞桨基础训练推理功能测试TIPC开发与实战指南Linux 端飞桨基础训练推理功能测试TIPC开发与实战指南 飞桨训推一体全流程Training and Inference Pipeline Crite人工智能深度学习计算机视觉NLP语音飞桨 TIPC 训推一体全流程测试指南基于 Linux GPU/CPU 基础训练推理的一键化验证方案飞桨 TIPC 训推一体全流程测试指南基于 Linux GPU/CPU 基础训练推理的一键化验证方案 导读 本文围绕飞桨PaddlePaddle 训推一体人工智能深度学习计算机视觉NLP语音上一篇pico-ducky硬件详解从树莓派Pico到完整攻击设备的搭建终极指南下一篇wait-for-it与GitHub Actions集成自动化工作流的新方式创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表