☰
飞桨 PaddlePaddle macOS CPU 训推一体(TIPC)基础训练推理测试开发规范实战指南
2026/10/7 9:32:45 网站建设 项目流程
  • 人工智能
  • 深度学习
  • 计算机视觉
  • NLP
  • 语音

【免费下载链接】models

Officially 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 Criterion,TIPC)提供了统一的模型训练、模型压缩、动转静与 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 机制,覆盖"少数据快速验证"与"全量数据严谨验证"两个层次:

  1. lite_train_lite_infer(少量数据训练 + 少量数据预测,单模型 15 分钟内)

    • 保证训练跑通,训练速度正常(监控 batch_cost);
    • 训练资源占用合理(监控显存);
    • 保证训练可复现,loss 曲线收敛正常(固定 seed 后 loss 一致);
    • 保证训练后模型动转静 → inference 预测跑通,预测资源占用合理(监控显存、内存)。
  2. lite_train_whole_infer(少量数据训练 + 全量数据预测,单模型 30 分钟内)

    • 训练跑通、速度正常、资源占用合理、可复现(要求同上);
    • 预测速度符合预期,预测资源占用合理。
  3. whole_train_whole_infer(全量数据训练 + 全量数据预测,周级别)

    • 训练跑通、速度正常、训练精度达到既定值;
    • 预测结果正确、预测速度符合预期、预测资源占用合理。
  4. 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 端基础链条接入规范一致,包含如下三个步骤:

  1. 准备数据;
  2. 规范化输出日志;
  3. 编写自动化测试代码。

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_infer(C++ inference 逻辑测试)、server_infer(Paddle 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_cost(1 个 Step 数据加载用时)、batch_cost(1 个 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(组建key=value字符串,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_infer=1|whole_train_whole_infer=300 Global.save_model_dir:./output/ Train.loader.batch_size_per_card:lite_train_lite_infer=2|whole_train_whole_infer=4 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 端一般直接使用系统python
gpu_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_infer=1\|whole_train_whole_infer=300不同模式下的 epoch 数少量数据模式用 1 个 epoch,全量模式用 300 个 epoch
Global.save_model_dir:./output/模型保存目录需修改:前的关键字以匹配实际参数
Train.loader.batch_size_per_card:lite_train_lite_infer=2\|whole_train_whole_infer=4不同模式下的单卡 batch size少量数据模式为 2,全量模式为 4
Global.pretrained_model:null预训练模型加载路径不需要加载时置 null
train_model_name:latest训练后保存的模型文件名用于正确加载训练产出模型
train_infer_img_dir:./train_data/icdar2015/...训练后执行预测的数据路径不需要时置 null
null:null预留参数行可按params_key:params_value扩展
trainer:norm_train\|pact_train\|fpgm_train要测试的 trainer 组合MAC 端同样支持正常训练、在线量化训练(pact)、裁剪训练(fpgm),不测试的置 null
norm_train/pact_train/fpgm_train对应训练运行脚本与 Linux 端保持一致,如tools/train.py、deploy/slim/quantization/quant.py、deploy/slim/prune/sensitivity_anal.py
distill_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:null

4.1 预测参数逐行说明

参数说明MAC 端取值含义
Global.save_inference_dir:./output/导出 inference model 的保存目录主要关注参数关键字,路径可自定义
Global.pretrained_model:导出时加载模型的参数按实际模型填写
norm_export/quant_export/fpgm_export/distill_export对应正常/量化/裁剪/蒸馏训练模型的导出脚本不测的置 null
export1/export2预留位置无需理会
train_model:./inference/ch_ppocr_mobile_v2.0_det_train/best_accuracy加载训练/开源模型进行动转静按实际模型路径填写
infer_export是否对上述模型执行动转静导出置 null 表示不执行
infer_quant:False上述模型路径是否为量化模型MAC 端一般为 False
inference: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_infer'

test_train_inference_python.sh会依次解析参数配置文件,先读取第 1 行到第 51 行的参数(可通过dataline=$(awk 'NR==1, NR==51{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
  • 语音

【免费下载链接】models

Officially maintained, supported by PaddlePaddle, including CV, NLP, Speech, Rec, TS, big models and so on.

项目地址:https://gitcode.com/gh_mirrors/mo/models
点击查看免费下载

相关推荐

上一篇:pico-ducky硬件详解:从树莓派Pico到完整攻击设备的搭建终极指南
下一篇:wait-for-it与GitHub Actions集成:自动化工作流的新方式

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询