新闻详情

新闻详情

首页 / 资讯中心 / 详情

PaddleSeg TIPC 混合精度(AMP)训练推理全流程测试指南:Linux GPU/CPU 实战

发布时间:2026/9/27 21:39:15来源:尧图网络
PaddleSeg TIPC 混合精度(AMP)训练推理全流程测试指南:Linux GPU/CPU 实战
人工智能计算机视觉预训练【免费下载链接】PaddleSegEasy-to-use image segmentation library with awesome pre-trained model zoo, supporting wide-range of practical tasks in Semantic Segmentation, Interactive Segmentation, Panoptic Segmentation, Image Matting, 3D Segmentation, etc.项目地址https://gitcode.com/gh_mirrors/pa/PaddleSeg点击查看免费下载PaddleSeg 的 TIPCTest Infra for PaddlePaddle Community测试体系提供了一套标准化的脚本用于在 Linux GPU/CPU 环境下端到端验证「训练 → 评估 → 导出 → 推理」整条链路。本文以 test_tipc/docs/test_train_amp_inference_python.md 为骨架深入讲解如何基于test_train_inference_python.sh完成混合精度AMP训练与 Python 推理测试并补充 TIPC 参数配置文件的字段含义、AMP 在源码中的底层实现以及 benchmark 日志的解读方法。读完本文你将能够自行编写或修改 TIPC 参数文件在本地一键复现 PaddleSeg 各主流分割模型的混合精度训练与 CPU/GPU 推理性能测试。1. 测试体系与覆盖结论TIPC 测试的主程序为 test_tipc/test_train_inference_python.sh它通过解析一份参数配置文件.txt自动拼装并依次执行模型训练、评估、导出和推理命令从而验证基于 Python 的模型训练、评估、推理等基本功能是否在 Linux GPU/CPU 环境下正常工作。脚本开头通过source test_tipc/common_func.sh引入参数解析与状态检查工具函数FILENAME$1传入参数配置文件MODE$2指定运行模式。1.1 训练相关测试结论以下 9 个模型在单机单卡与单机多卡两种场景下均支持混合精度训练算法名称模型名称单机单卡单机多卡PP-LiteSegpp_liteseg_stdc1混合精度训练混合精度训练PP-LiteSegpp_liteseg_stdc2混合精度训练混合精度训练ConnectNetpphumanseg_lite混合精度训练混合精度训练HRNetpphumanseg_mobile (fcn_hrnetw18_small)混合精度训练混合精度训练DeepLabV3Ppphumanseg_server (deeplabv3p_resnet50)混合精度训练混合精度训练HRNetfcn_hrnet_w18混合精度训练混合精度训练OCRNetocrnet_hrnetw18混合精度训练混合精度训练OCRNetocrnet_hrnetw48混合精度训练混合精度训练SegFormersegformer_b0混合精度训练混合精度训练对应的 AMP 参数配置文件均位于 test_tipc/configs 目录下命名为train_linux_gpu_normal_amp_infer_python_linux_gpu_cpu.txt例如 pp_liteseg_stdc1、pphumanseg_lite、ocrnet_hrnetw18、segformer_b0 等。1.2 推理相关测试结论以下 9 个模型在 CPU 与 GPU 两种推理设备上均支持batchsize 为 1算法名称模型名称device_CPUdevice_GPUbatchsizePP-LiteSegpp_liteseg_stdc1支持支持1PP-LiteSegpp_liteseg_stdc2支持支持1ConnectNetpp_humanseg_lite支持支持1HRNetpphumanseg_mobile (fcn_hrnetw18_small)支持支持1DeepLabV3Ppphumanseg_server (deeplabv3p_resnet50)支持支持1HRNetfcn_hrnet_w18支持支持1OCRNetocrnet_hrnetw18支持支持1OCRNetocrnet_hrnetw48支持支持1SegFormersegformer_b0支持支持1推理统一走 deploy/python/infer.py它基于 Paddle Inference 加载导出后的deploy.yaml模型配置支持 MKLDNNCPU 加速、TensorRTGPU 加速以及 fp32/fp16/int8 多种精度。2. 环境准备2.1 安装 PaddlePaddle混合精度训练依赖 PaddlePaddle 的 AMP 功能需要安装 2.2 及以上版本。如果已经安装了 2.2 或以上版本的 paddlepaddle则无需再次安装。# 需要安装2.2及以上版本的Paddle # 安装GPU版本的Paddle pip install paddlepaddle-gpu2.2.2 # 安装CPU版本的Paddle pip install paddlepaddle2.2.2需要说明的是AMPO1 模式混合精度训练需要 GPU 环境才能真正加速CPU 环境更多用于功能正确性验证。2.2 安装项目依赖pip install -r requirements.txtrequirements.txt位于仓库根目录包含 PaddleSeg 训练、评估、导出、推理所需的全部 Python 依赖。2.3 安装 AutoLogAutoLog 是 Paddle 系列项目的规范化日志输出工具推理阶段开启--benchmarkTrue时deploy/python/infer.py 会通过import auto_log创建AutoLogger实例见源码 L122-L139统一输出环境、参数、模型、数据与性能信息便于测试结果对比。pip install https://paddleocr.bj.bcebos.com/libs/auto_log-1.2.0-py3-none-any.whl3. TIPC 参数配置文件结构解读TIPC 测试的核心输入是参数配置文件。以 pphumanseg_lite 的 AMP 配置 为例文件由四个以...分隔的区块组成test_train_inference_python.sh会按行号lines[1]、lines[2]…解析各个字段3.1 train_params 区块model_name:pphumanseg_lite python:python3.7 gpu_list:0|0,1 Global.use_gpu:null|null Global.auto_cast:null --iters:lite_train_lite_infer50|lite_train_whole_infer50|whole_train_whole_infer1000 --save_dir: --batch_size:lite_train_lite_infer2|lite_train_whole_infer2|whole_train_whole_infer8 --model_path:null train_model_name:best_model/model.pdparams train_infer_img_dir:test_tipc/data/mini_supervisely/test.txt null:null ## trainer:amp_train amp_train:tools/train.py --config test_tipc/configs/pphumanseg_lite/pphumanseg_lite_mini_supervisely.yml --precision fp16 --amp_level O1 --do_eval --save_interval 500 --seed 100 pact_train:null fpgm_train:null distill_train:null null:null null:null ##关键字段含义model_name模型名同时决定日志与输出目录名./test_tipc/output/${model_name}/...python测试使用的 Python 解释器gpu_list以|分隔的多组 GPU 配置如0表示单卡、0,1表示双卡。脚本据此分别构造单卡与python -m paddle.distributed.launch --devices0,1多卡训练命令见 test_train_inference_python.sh L337-L343--iters训练迭代数按模式取不同值lite 模式 50whole 模式 1000用于控制测试时长--batch_size训练 batch size同样按模式区分lite 模式 2whole 模式 8train_model_name训练产出的模型文件名此处为best_model/model.pdparams训练后会用于评估与导出脚本还会做兜底判断——若该文件不存在则改为iter_${epoch_num}/model.pdparams见 L367-L369trainer与amp_trainAMP 测试的关键行。trainer:amp_train声明当前测试的训练器类型amp_train行给出实际训练命令注意其中的两个核心参数--precision fp16开启 AMP--amp_level O1指定 AMP 等级O1 为常规混合精度O2 为纯 fp16。3.2 eval / export / infer 区块eval_params eval:null null:null ## export_params --save_dir: --model_path: norm_export:tools/export.py --config test_tipc/configs/pphumanseg_lite/pphumanseg_lite_mini_supervisely.yml quant_export:null fpgm_export:null distill_export:null export1:null export2:null infer_params infer_model:./test_tipc/output/pphumanseg_lite/pphumanseg_lite_generic_192x192/model.pdparams infer_export:tools/export.py --config test_tipc/configs/pphumanseg_lite/pphumanseg_lite_mini_supervisely.yml infer_quant:False inference:deploy/python/infer.py --device:cpu|gpu --enable_mkldnn:True --cpu_threads:6 --batch_size:1 --use_trt:False --precision:fp32 --config: --image_path:./test_tipc/data/mini_supervisely/test.txt --save_log_path:null --benchmark:True --save_dir: --model_name:pphumanseg_liteeval:null表示该配置不单独执行评估AMP 训练命令中的--do_eval会在训练中完成验证norm_export指定 tools/export.py 导出推理模型inference指定推理脚本 deploy/python/infer.py--device:cpu|gpu表示同时测试 CPU 与 GPU 两种设备--enable_mkldnn:True开启 CPU 的 MKLDNN 加速--cpu_threads:6设置 CPU 线程数--batch_size:1、--precision:fp32为推理精度与 batchsize--benchmark:True开启性能统计配合--model_name在 AutoLog 中记录模型名。要测试不同的模型只需将上述文件替换为对应模型的参数配置文件即可无需修改任何脚本。4. 执行混合精度训练推理测试4.1 通用执行方式bash test_tipc/test_train_inference_python.sh ${your_params_file} lite_train_lite_infer其中MODE的可选值在 test_train_inference_python.sh 开头有注释说明lite_train_lite_infer小数据集训练 小数据集推理用于快速功能验证、lite_train_whole_infer、whole_train_whole_infer全量数据训练 全量数据推理、whole_infer仅推理。AMP 测试通常使用lite_train_lite_infer以最小成本完成整条链路验证。4.2 以 pphumanseg_lite 为例的两步操作第一步准备数据。先运行 test_tipc/prepare.sh它会根据配置中的model_name自动下载对应的小型测试数据集pphumanseg_lite 系列会下载mini_supervisely见 prepare.sh L193-L196Cityscapes 系列模型则下载cityscapes_20imgs等小样本数据避免全量下载。bash test_tipc/prepare.sh test_tipc/configs/pphumanseg_lite/train_linux_gpu_normal_amp_infer_python_linux_gpu_cpu.txt lite_train_lite_infer第二步执行测试。bash test_tipc/test_train_inference_python.sh test_tipc/configs/pphumanseg_lite/train_linux_gpu_normal_amp_infer_python_linux_gpu_cpu.txt lite_train_lite_infer脚本会按「训练 → 导出 → CPU 推理 → GPU 推理」的顺序执行并在每个阶段调用status_check校验返回码、把结果写入results_python.log。终端输出Run successfully with command - ...即表示该步骤运行成功例如[33m Run successfully with command - python3.7 tools/train.py --config test_tipc/configs/pphumanseg_lite/pphumanseg_lite_mini_supervisely.yml --precision fp16 --amp_level O2 --do_eval --save_interval 500 --seed 100 --save_dir./test_tipc/output/pphumanseg_lite/amp_train_gpus_0_autocast_null --iters50 --batch_size2 ...... [33m Run successfully with command - python3.7 deploy/python/infer.py --devicecpu --enable_mkldnnTrue --cpu_threads1 --config./test_tipc/output/pphumanseg_lite/amp_train_gpus_0_autocast_null//deploy.yaml --batch_size1 --image_pathtest_tipc/data/mini_supervisely/test.txt --benchmarkTrue --precisionfp32 --save_dir./test_tipc/output/pphumanseg_lite/python_infer_cpu_usemkldnn_True_threads_1_precision_fp32_batchsize_1_results ./test_tipc/output/pphumanseg_lite/python_infer_cpu_usemkldnn_True_threads_1_precision_fp32_batchsize_1.log 21 !从日志可以还原完整调用链AMP 训练使用tools/train.py并携带--precision fp16 --amp_level O2推理则使用deploy/python/infer.py加载训练导出目录下的deploy.yaml模型配置在 CPU 上以 fp32 精度、batchsize 1 执行同时把--benchmarkTrue传给推理脚本开启性能统计。5. AMP 在源码中的实现从参数到训练循环混合精度训练并非脚本层拼凑而是由 paddleseg/core/train.py 完整实现参数入口tools/train.py定义--precision默认fp32可选fp16与--amp_level默认O1可选O1/O2并传入核心训练函数train()见 tools/train.py L94-L111、L239-L240。AMP 初始化当precision fp16时创建paddle.amp.GradScaler(init_loss_scaling1024)进行梯度缩放若amp_level O2还会调用paddle.amp.decorate(modelsmodel, optimizersoptimizer, levelO2, save_dtypefloat32)将模型参数与优化器状态转为纯 fp16见 paddleseg/core/train.py L144-L152。前向与反向训练循环中前向计算包裹在paddle.amp.auto_cast(levelamp_level, enableTrue, custom_white_list{elementwise_add, batch_norm, sync_batch_norm}, custom_black_list{bilinear_interp_v2})上下文内白名单算子保持 fp16 计算、黑名单算子如上采样插值回退到 fp32随后用scaler.scale(loss)放大损失、scaler.minimize(optimizer, loss)完成带缩放的反向与参数更新见 paddleseg/core/train.py L217-L229 附近。这解释了文档末尾的注意事项AMP 参数配置文件默认使用 O1 模式O2 模式存在部分问题需要安装 PaddlePaddle develop 版本才可使用。从源码可见 O2 涉及paddle.amp.decorate对模型/优化器的整体 fp16 改造对 Paddle 版本与算子支持要求更高。6. 推理 benchmark 日志详解在开启--benchmarkTrue时推理会输出详细的性能数据包含四类信息运行环境信息系统版本、CUDA 版本、CUDNN 版本、驱动版本Paddle 版本信息参数设置信息运行设备、线程数、是否开启内存优化等模型信息模型名称、精度数据信息batchsize、是否为动态 shape 等性能信息CPU/GPU 的占用、运行耗时、预处理耗时、推理耗时、后处理耗时。这些信息由 deploy/python/infer.py 中的auto_log.AutoLogger统一收集L122-L139示例输出如下2022-04-13 11:43:09 [INFO] ---------------------- Env info ---------------------- 2022-04-13 11:43:09 [INFO] OS_version: CentOS Linux 7 2022-04-13 11:43:09 [INFO] CUDA_version: 11.2.67 Build cuda_11.2.r11.2/compiler.29373293_0 2022-04-13 11:43:09 [INFO] CUDNN_version: None.None.None 2022-04-13 11:43:09 [INFO] drivier_version: 460.27.04 2022-04-13 11:43:09 [INFO] ---------------------- Paddle info ---------------------- 2022-04-13 11:43:09 [INFO] paddle_version: 2.2.2 2022-04-13 11:43:09 [INFO] paddle_commit: b031c389938bfa15e15bb20494c76f86289d77b0 2022-04-13 11:43:09 [INFO] log_api_version: 1.0 2022-04-13 11:43:09 [INFO] ----------------------- Conf info ----------------------- 2022-04-13 11:43:09 [INFO] runtime_device: cpu 2022-04-13 11:43:09 [INFO] ir_optim: True 2022-04-13 11:43:09 [INFO] enable_memory_optim: True 2022-04-13 11:43:09 [INFO] enable_tensorrt: False 2022-04-13 11:43:09 [INFO] enable_mkldnn: False 2022-04-13 11:43:09 [INFO] cpu_math_library_num_threads: 1 2022-04-13 11:43:09 [INFO] ----------------------- Model info ---------------------- 2022-04-13 11:43:09 [INFO] model_name: 2022-04-13 11:43:09 [INFO] precision: fp32 2022-04-13 11:43:09 [INFO] ----------------------- Data info ----------------------- 2022-04-13 11:43:09 [INFO] batch_size: 1 2022-04-13 11:43:09 [INFO] input_shape: dynamic 2022-04-13 11:43:09 [INFO] data_num: 50 2022-04-13 11:43:09 [INFO] ----------------------- Perf info ----------------------- 2022-04-13 11:43:09 [INFO] cpu_rss(MB): 315.2656, gpu_rss(MB): 8842.0, gpu_util: 0.0% 2022-04-13 11:43:09 [INFO] total time spent(s): 4.2386 2022-04-13 11:43:09 [INFO] preprocess_time(ms): 33.7887, inference_time(ms): 50.7443, postprocess_time(ms): 0.2391其中inference_time是最核心的性能指标单张图片的纯推理耗时配合preprocess_time、postprocess_time可以完整拆解一次预测的耗时构成。从 deploy/python/infer.py 的配置逻辑还可以看到CPU 推理通过_init_cpu_config开启 MKLDNN 并设置线程数L148-L159GPU 推理通过_init_gpu_config映射--precision到 Paddle Inference 的PrecisionTypefp16 → Half、fp32 → Float32、int8 → Int8并在--use_trtTrue时启用 TensorRT 引擎L161-L179。该信息可以在运行 log 中查看以pphumanseg_lite为例log 位置在./test_tipc/output/pphumanseg_lite/lite_train_lite_infer/python_infer_cpu_usemkldnn_False_threads_1_precision_fp32_batchsize_1.log。日志文件名由设备、MKLDNN 开关、线程数、精度与 batchsize 组合而成方便批量对比不同配置下的性能。7. 结果检查与失败排查成功判定每个步骤完成后脚本都会打印Run successfully with command - ...所有步骤的状态汇总记录在./test_tipc/output/${model_name}/${MODE}/results_python.log其中[33m前缀是终端着色码不影响内容。失败定位如果运行失败终端会输出运行失败的日志信息以及对应的完整运行命令。可以基于该命令手动重跑、拆解分析失败原因如环境缺失、数据集未就绪、GPU 不可用、O2 模式与 Paddle 版本不兼容等。多卡模式注意多卡训练使用paddle.distributed.launch脚本在训练结束后会将log/workerlog.0追加到训练日志中见 test_train_inference_python.sh L362-L364排查多卡问题时需要同时关注 workerlog 内容。8. 注意事项与适用前提版本前提本文档所述流程基于 PaddlePaddle 2.2 与当前仓库的 TIPC 脚本实现。AMP 参数配置文件中默认使用 O1 模式O2 模式存在部分问题需要安装 PaddlePaddle develop 版本才可使用。数据前提lite_train_lite_infer模式依赖 test_tipc/prepare.sh 下载的小型测试数据集mini_supervisely、cityscapes_20imgs等首次运行需要联网若无法联网需自行准备符合 test_tipc/data 目录约定的数据文件列表。推理精度说明AMP 训练产出的模型在推理阶段统一以 fp32 精度验证保证与常规模型推理逻辑一致fp16 推理通常与 TensorRT 组合使用属于可选加速路径。扩展方式要测试新的模型参照 test_tipc/configs/pphumanseg_lite/train_linux_gpu_normal_amp_infer_python_linux_gpu_cpu.txt 的格式复制一份参数文件替换model_name、amp_train中的训练命令与对应 YAML 配置即可完成该模型的混合精度训练推理全流程测试。赞分享人工智能计算机视觉预训练【免费下载链接】PaddleSegEasy-to-use image segmentation library with awesome pre-trained model zoo, supporting wide-range of practical tasks in Semantic Segmentation, Interactive Segmentation, Panoptic Segmentation, Image Matting, 3D Segmentation, etc.项目地址https://gitcode.com/gh_mirrors/pa/PaddleSeg点击查看免费下载相关推荐如何永久保存微信聊天记录WeChatMsg完整数据留存指南如何永久保存微信聊天记录WeChatMsg完整数据留存指南 你是否曾经因为手机丢失、系统升级或误操作而丢失了珍贵的微信聊天记录那些与亲友的温馨对话、重要的工人工智能计算机视觉预训练从单设备到全芯并行Paddle-Lite 子图拆分实战指南从单设备到全芯并行Paddle Lite 子图拆分实战指南 Paddle Lite 的子图拆分是端侧多硬件并行推理的手段把模型切分成若干片段让 NPU、G人工智能推理引擎深度学习边缘计算嵌入式模型优化COLMAP 入门与实战Structure-from-Motion 与 Multi-View Stereo 三维重建管线全解析COLMAP 入门与实战Structure from Motion 与 Multi View Stereo 三维重建管线全解析 COLMAP 是一个通用的运动人工智能计算机视觉预训练上一篇为你的项目注入苹果美学PingFangSC字体全面使用指南下一篇洛雪音乐音源全攻略从新手到高手的完整配置方案创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Claude Code源码之核心架构拆解:从启动到运行,全流程手把手看懂 2026/9/27 22:29:38

Claude Code源码之核心架构拆解:从启动到运行,全流程手把手看懂

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
第163篇:用JADX + MCP + Claude实战还原深度加密混淆的Java程序:TaoToken统一Key接入配置与验证 2026/9/27 22:29:37

第163篇:用JADX + MCP + Claude实战还原深度加密混淆的Java程序:TaoToken统一Key接入配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
CodeBuddy、Lingma、Trae CN 的 MCP 配置位置与 TaoToken 接入骨架 2026/9/27 22:29:37

CodeBuddy、Lingma、Trae CN 的 MCP 配置位置与 TaoToken 接入骨架

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
MCP Server开发教程:用TaoToken统一Key打通本地工具链配置 2026/9/27 22:29:30

MCP Server开发教程:用TaoToken统一Key打通本地工具链配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
AI Agent Harness Engineering 成本优化:低算力场景下的高效部署方案与 TaoToken 配置骨架 2026/9/27 22:29:30

AI Agent Harness Engineering 成本优化:低算力场景下的高效部署方案与 TaoToken 配置骨架

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
DeepSeek 开源的 Agent Harness 怎么给团队试?本地 dsh web 起在 127.0.0.1,用 cpolar 短时开放给异地同事看只读会话 2026/9/27 22:29:24

DeepSeek 开源的 Agent Harness 怎么给团队试?本地 dsh web 起在 127.0.0.1,用 cpolar 短时开放给异地同事看只读会话

DeepSeek 开源的 Agent Harness 怎么给团队试?本地 dsh web 起在 127.0.0.1,用 cpolar 短时开放给异地同事看只读会话上周想拉两个异地同事一起看一个 agent 会话跑成什么样,结果卡在一个很普通的事上:DeepSeek 官方开源的智能体框…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉