Linux 端基础训练预测功能测试:从一键测试脚本到精度校验的完整指南)
人工智能深度学习计算机视觉媒体生成视频处理图像处理【免费下载链接】PaddleGANPaddlePaddle GAN library, including lots of interesting applications like First-Order motion transfer, Wav2Lip, picture repair, image editing, photo2cartoon, image style transfer, GPEN, and so on.项目地址https://gitcode.com/gh_mirrors/pa/PaddleGAN点击查看免费下载导读本文围绕 PaddleGAN 仓库中的训推一体认证Training and Inference Pipeline Certification简称 TIPC测试工具系统讲解基于 Python 的 Linux 端模型训练、评估与推理功能测试。测试主程序 test_train_inference_python.sh 能够一键打通“数据准备 → 模型训练 → 动转静导出 → Python 推理 → 精度比对”的完整链路覆盖 Pix2Pix、CycleGAN、StyleGAN2、FOMM、BasicVSR 等生成与超分模型的训练预测验证。读完本文你将掌握 TIPC 测试的四种运行模式、配置文件格式、日志判读方法以及基于compare_results.py的数值精度校验流程并了解脚本底层是如何解析配置、编排命令的。1. TIPC 测试概览与结论汇总PaddleGAN 的 TIPC 测试体系在 test_tipc/README.md 中有总览说明除基础的模型训练与预测外飞桨还提供多端多平台的高性能推理部署工具TIPC 信息即用于记录和验证每种模型的“训练推理部署打通情况”并支持一键测试。其中 Python 侧的基础训练预测功能由本文主角test_train_inference_python.sh负责。1.1 训练相关能力汇总根据 test_tipc/docs/test_train_inference_python.md 的测试结论汇总各模型在“基础训练预测”与“更多训练方式”维度的支持情况如下算法论文模型名称模型类型基础训练预测更多训练方式模型压缩其他预测部署Pix2PixPix2Pix生成支持多机多卡CycleGANCycleGAN生成支持多机多卡StyleGAN2StyleGAN2生成支持多机多卡FOMMFOMM生成支持多机多卡BasicVSRBasicVSR超分支持多机多卡PP-MSVSRPP-MSVSR超分edvredvr超分支持esrganesrgan超分支持从 test_tipc/configs 目录看已提供训练/推理测试配置的模型还包括 SinGAN、GFPGAN、aotgan、invdn、nafnet、swinir 等说明该测试体系覆盖了 PaddleGAN 的大部分核心模型。字段含义来源 test_tipc/README.md基础训练预测包括模型训练与 Paddle Inference Python 预测更多训练方式包括多机多卡、混合精度模型压缩包括裁剪、离线/在线量化、蒸馏其他预测部署包括 Paddle Inference C 预测、Paddle Serving 部署、Paddle-Lite 部署等。1.2 预测相关能力汇总Python 推理侧当前的支持范围如下模型类型devicebatchsizetensorrtmkldnncpu多线程正常模型GPU1/6fp32--需要说明的是表格反映的是当前仓库测试配置中实际覆盖的默认组合。从脚本实现看详见第 4 节推理编排逻辑本身同时支持 CPU/mkldnn 与 GPU/TensorRT 分支是否真正跑通取决于对应 train_infer_python.txt 配置中use_mkldnn、use_trt、precision等字段的取值。2. 环境准备与依赖安装运行环境配置请参考 docs/zh_CN/install.md 中的内容配置运行环境原文档中为相对链接此处已转换为仓库根目录相对路径。2.1 安装 PaddlePaddle 与 PaddleGAN安装 PaddlePaddle 2.1安装 PaddleGAN 依赖pip install -v -e .该命令以可编辑editable模式安装当前仓库-v输出详细安装日志便于排查依赖问题。仓库依赖清单见 requirements.txt。2.2 安装 autolog规范化日志输出工具git clone https://github.com/LDOUBLEV/AutoLog cd AutoLog pip3 install -r requirements.txt python3 setup.py bdist_wheel pip3 install ./dist/auto_log-1.0.0-py3-none-any.whl cd ../autolog 用于产出规范化日志是 TIPC 测试链条中日志格式统一的辅助组件。3. 功能测试流程整体流程分两步先运行 prepare.sh 准备测试所需的数据和模型再运行 test_train_inference_python.sh 执行测试最终在test_tipc/output目录下生成python_infer_*.log格式的日志文件。3.1 四种运行模式test_train_inference_python.sh包含 5 种运行模式其中benchmark_train模式在 prepare.sh 内部会先安装requirements.txt再退化为lite_train_lite_infer执行各模式的运行数据不同分别用于测试速度和精度模式1lite_train_lite_infer—— 使用少量数据训练用于快速验证“训练到预测”的流程是否走通不验证精度和速度bash test_tipc/prepare.sh ./test_tipc/configs/basicvsr/train_infer_python.txt lite_train_lite_infer bash test_tipc/test_train_inference_python.sh ./test_tipc/configs/basicvsr/train_infer_python.txt lite_train_lite_infer模式2lite_train_whole_infer—— 使用少量数据训练、一定量数据预测验证训练后的模型执行预测时预测速度是否合理bash test_tipc/prepare.sh ./test_tipc/configs/basicvsr/train_infer_python.txt lite_train_whole_infer bash test_tipc/test_train_inference_python.sh ./test_tipc/configs/basicvsr/train_infer_python.txt lite_train_whole_infer模式3whole_infer—— 不训练全量数据预测走通开源模型评估、动转静检查 inference model 的预测时间和精度bash test_tipc/prepare.sh ./test_tipc/configs/basicvsr/train_infer_python.txt whole_infer bash test_tipc/test_train_inference_python.sh ./test_tipc/configs/basicvsr/train_infer_python.txt whole_infer模式4whole_train_whole_inferCE—— 全量数据训练、全量数据预测验证模型训练精度、预测精度与预测速度bash test_tipc/prepare.sh ./test_tipc/configs/basicvsr/train_infer_python.txt whole_train_whole_infer bash test_tipc/test_train_inference_python.sh ./test_tipc/configs/basicvsr/train_infer_python.txt whole_train_whole_infer3.2 prepare.sh 的数据与模型准备逻辑从 test_tipc/prepare.sh 源码可以看到数据准备按模式与模型名分流全部下载到./data/静态推理模型下载到./inference/lite_train_lite_infer模式为 Pix2Pix 下载pix2pix_facade_lite.tar为 CycleGAN 下载cyclegan_horse2zebra_lite.tar为 StyleGANv2 下载ffhq_256.tar为 FOMM 下载fom_lite.tar为 edvr/basicvsr/msvsr 下载reds_lite.tar为 esrgan 下载DIV2KandSet14paddle.tar另有 swinir、invdn、nafnet、singan、GFPGAN、aotgan 对应的 lite 数据集whole_infer模式额外从https://paddlegan.bj.bcebos.com/static_model/下载各模型的静态图推理模型如pix2pix_facade.tar、cyclegan_horse2zebra.tar、fom_dy2st.tar、stylegan2_1024.tar、basicvsr.tar、msvsr.tar并配套测试图片/数据如facades_test.tar、cyclegan_horse2zebra_test.tar、fom_lite_test.tar。这意味着whole_infer模式并不需要本地训练而是直接基于官方导出的静态模型验证推理精度与耗时。3.3 日志输出与判读运行相应指令后test_tipc/output文件夹下自动保存运行日志。以lite_train_lite_infer模式为例会运行“训练 inference”的完整链条输出结构如下test_tipc/output/ |- results_python.log # 运行指令状态的日志 |- norm_train_gpus_0_autocast_null/ # GPU 0号卡上正常训练的训练日志和模型保存文件夹 ......其中results_python.log汇总了每条指令的运行状态。运行成功时输出Run successfully with command - python3.7 tools/main.py -c configs/basicvsr_reds.yaml -o dataset.train.dataset.num_clips2 output_dir./test_tipc/output/norm_train_gpus_0_autocast_null total_iters5 dataset.train.batch_size1 ! -Run successfully with command - python3.7 tools/export_model.py -c configs/basicvsr_reds.yaml --inputs_size1,6,3,180,320 --load ./test_tipc/output/norm_train_gpus_0_autocast_null/basicvsr_reds-2021-11-22-07-18/iter_1_checkpoint.pdparams --output_dir ./test_tipc/output/norm_train_gpus_0_autocast_null! ......运行失败时输出Run failed with command - python3.7 tools/main.py -c configs/basicvsr_reds.yaml -o dataset.train.dataset.num_clips2 output_dir./test_tipc/output/norm_train_gpus_0_autocast_null total_iters5 dataset.train.batch_size1 ! ! Run failed with command - python3.7 tools/export_model.py -c configs/basicvsr_reds.yaml --inputs_size1,6,3,180,320 --load ./test_tipc/output/norm_train_gpus_0_autocast_null/basicvsr_reds-2021-11-22-07-18/iter_1_checkpoint.pdparams --output_dir ./test_tipc/output/norm_train_gpus_0_autocast_null! ......因此可以很方便地根据results_python.log中的内容定位是哪一条指令运行出错逐条核对即可快速排障。4. 配置文件与脚本工作原理解析4.1 配置文件train_infer_python.txt格式每条测试指令的参数并非硬编码在脚本里而是由-o覆盖的 YAML 配置 独立的train_infer_python.txt配置文件共同决定。以 test_tipc/configs/basicvsr/train_infer_python.txt 为例文件按分隔为 train / eval / infer / benchmark 四个段落行号位置即字段语义脚本通过行号固定读取行号字段示例值说明1model_namebasicvsr模型名用于数据准备分派与日志目录命名2pythonpython3.7解释器命令3gpu_list0参与训练的 GPU 列表0,1表示多卡5auto_castnull是否开启混合精度fp16时脚本追加--amp --amp_levelO26total_iterslite_train_lite_infer10\|lite_train_whole_infer10\|whole_train_whole_infer200各模式对应的训练迭代数脚本按MODE取值7output_dir./output/训练输出目录8dataset.train.batch_sizelite_train_lite_infer1\|whole_train_whole_infer1各模式对应的 batch size9pretrained_modelnull预训练权重路径10train_model_namebasicvsr_reds*/*checkpoint.pdparams训练产物 checkpoint 的匹配模式11train_infer_img_dir./data/basicvsr_reds/test训练后推理使用的测试图片目录14trainernorm_train训练器类型列表norm/pact/fpgm/distill15norm_traintools/main.py -c configs/basicvsr_reds.yaml --seed 123 -o log_config.interval1 snapshot_config.interval5常规训练命令模板27save_infer_key--output_dir导出模型输出参数 key28export_weightload导出时加载权重的参数 key29norm_exporttools/export_model.py -c configs/basicvsr_reds.yaml --inputs_size1,6,3,180,320 --model_name inference --load动转静导出命令模板36inference_dirinference导出产物子目录名37train_model./inference/basicvsr/basicvsrmodel_generator预置推理模型路径whole_infer 模式使用39inferencetools/inference.py --model_type basicvsr -c configs/basicvsr_reds.yaml --seed 123 -o dataset.test.num_frames6 --output_path test_tipc/output/Python 推理命令模板40--devicegpu推理设备47--model_path空推理模型路径参数 key50--benchmarkTrue是否开启 benchmark 计时配置值中的lite_train_lite_infer10|...形式由 test_tipc/common_func.sh 中的func_parser_params解析它以|拆分候选值按当前MODE匹配并取对应数值。func_parser_key/func_parser_value负责把key:value行拆成键与值func_set_params则负责把键值对拼装成命令行参数遇到null或空值自动跳过。4.2 训练、导出、推理的底层调用链脚本拼装出的三条核心命令分别对应仓库中的三个入口训练tools/main.py见 tools/main.py内部调用ppgan.engine.trainer.Trainer。支持--resume断点续训、--load仅加载生成器权重、--evaluate_only只评估等模式脚本捕获KeyboardInterrupt时也会保存权重。动转静导出tools/export_model.py见 tools/export_model.py--inputs_size用分号分隔多输入、逗号分隔各维度如 BasicVSR 的1,6,3,180,320表示 1 个样本、6 帧、3 通道、180x320--load指定 checkpoint 路径--output_dir指定导出目录--model_name指定产物命名。CycleGAN 配置中的--inputs_size-1,3,-1,-1;-1,3,-1,-1则说明其支持动态 shape 的 A/B 双向生成网络。推理tools/inference.py见 tools/inference.py通过--model_type在[pix2pix, cyclegan, wav2lip, esrgan, edvr, fom, stylegan2, basicvsr, msvsr, singan, swinir, invdn, aotgan, nafnet]中选择模型类型支持--device cpu/gpu/xpu/npu、--output_path、--seed以及 TensorRT 相关的--run_modefluid/trt_fp32/trt_fp16与--trt_min_shape/--trt_max_shape参数。4.3 脚本编排逻辑test_tipc/test_train_inference_python.sh 的编排逻辑值得展开说明whole_infer 分支直接遍历infer_model_dir_list对每个预置模型先执行export_cmd导出若infer_export非 null再调用func_inference做推理其余模式分支按gpu_list→autocast_list→trainer_list三层循环穷举组合训练命令按 GPU 数量分三种形态——单卡/CPU 直接执行、多卡使用python -m paddle.distributed.launch --gpus...、多机追加--ips...to_static 支持若配置中存在to_static_train_benchmark_params段落如 test_tipc/configs/edvr/train_infer_python.txt 中to_static_train:model.to_staticTrue脚本会复用 norm_train 命令并追加-o Global.to_staticTrue触发engine.py的apply_to_static逻辑实现训练态动转静eval 与 export 衔接训练完成后若eval_py非 null 则追加评估命令随后用训练产出的 checkpoint 执行export_model.py导出静态推理模型最后以导出目录为模型输入跑func_inference推理参数穷举func_inference内部分 CPU 与 GPU 两条路径。CPU 路径遍历use_mkldnn × cpu_threads × batch_size × precisionGPU 路径遍历use_trt × precision × batch_size并设置了一系列组合约束如非量化模型跳过 int8、fp16/int8 必须搭配 TensorRT、量化模型必须配 TensorRT 等每个组合生成独立的python_infer_cpu_usemkldnn_..._threads_..._precision_..._batchsize_....log或python_infer_gpu_usetrt_..._precision_..._batchsize_....log日志状态记录每条命令通过status_check定义于 test_tipc/common_func.sh把“成功/失败 完整命令 日志路径”写入results_python.log。5. 精度测试compare_results.pytest_train_inference_python.sh负责跑通流程而预测结果是否符合预期则由 test_tipc/compare_results.py 负责比对。5.1 比对原理主要步骤包括提取日志中的预测指标如 PSNR、SSIM、FID从本地文件中提取保存好的指标结果ground truth比较上述两个结果是否符合精度预期误差大于设置阈值时报错。从源码看compare_results.py 将gt_file与log_file均按指标名:数值的key:value格式逐行解析为字典再对每个指标调用np.testing.assert_allclose做容差比对任一指标不满足atol/rtol即抛出ValueError并提示“The results of ... are inconsistent!”。预存的基准结果存放于 test_tipc/results 目录例如 test_tipc/results/python_basicvsr_results_fp32.txt 内容为Metric psnr: 27.0864 Metric ssim: 0.7835即 BasicVSR 在 REDS lite 测试集上 fp32 预测的 PSNR/SSIM 基准值。5.2 使用方式运行命令python3.7 test_tipc/compare_results.py --gt_file./test_tipc/results/*.txt --log_file./test_tipc/output/*/*.txt --atol1e-3 --rtol1e-3参数介绍gt_file指向事先保存好的预测结果路径支持*.txt结尾会自动索引*.txt格式的文件文件默认保存在test_tipc/results/文件夹下log_file指向运行test_tipc/test_train_inference_python.sh脚本的 infer 模式保存的预测日志预测日志中打印有预测结果atol设置的绝对误差默认 1e-3rtol设置的相对误差默认 1e-3。5.3 运行结果正常运行效果如下出现不一致结果时的运行输出两张截图分别对应compare_results.py的两种典型结果通过时打印Assert allclose passed! The results of ... are consistent!不通过时抛出包含具体数值偏差如rtol0.001, atol0.001下基准值 153.9647 与实测值 139.3846 不匹配的ValueError。比对的常见场景是对比同一模型在不同部署路径训练态 vs 动转静静态图下输出指标的数值一致性。6. 常见排障与使用建议日志定位优先查看test_tipc/output/model_name/MODE/results_python.log其中每一条命令都带完整命令文本与日志路径Run failed行即为失败指令数据未就绪任何模式前务必先执行对应的prepare.sh其内部按模型名分派下载逻辑见 test_tipc/prepare.sh若跳过该步骤会导致训练/推理找不到./data/下的数据动态 shape 差异不同模型--inputs_size差异很大BasicVSR 固定1,6,3,180,320CycleGAN 用-1表示动态维修改配置时需与模型实际输入对齐精度比对失败先确认--log_file是否来自同一模式不同模式的 batch size、迭代数不同会直接影响指标再检查atol/rtol阈值是否合理最后核对test_tipc/results/下基准文件是否与当前模型/数据集匹配。7. 总结test_train_inference_python.sh通过“配置驱动 模式分派 命令穷举”的方式把 PaddleGAN 各模型的训练、动转静导出与 Python 推理验证组织成可一键复现的标准化流程compare_results.py则用assert_allclose为预测数值精度提供了量化校验。二者结合既可用于日常开发中对模型“训练→推理”链路做快速回归也可作为评估各模型在 CPU/GPU、mkldnn/TensorRT 等不同推理配置下精度与耗时表现的基准工具。相关测试入口与配置文件均可在仓库test_tipc/目录下继续查阅与复用。赞分享人工智能深度学习计算机视觉媒体生成视频处理图像处理【免费下载链接】PaddleGANPaddlePaddle GAN library, including lots of interesting applications like First-Order motion transfer, Wav2Lip, picture repair, image editing, photo2cartoon, image style transfer, GPEN, and so on.项目地址https://gitcode.com/gh_mirrors/pa/PaddleGAN点击查看免费下载相关推荐国家中小学智慧教育平台电子课本下载快速上手从预览页到本地 PDF 的完整流程国家中小学智慧教育平台电子课本下载快速上手从预览页到本地 PDF 的完整流程 tchMaterial parser 是一款面向国家中小学智慧教育平台的图形化电网页爬虫教育Kubernetes 社区 SIG Usability 年度报告解读以用户研究驱动的可用性治理实践Kubernetes 社区 SIG Usability 年度报告解读以用户研究驱动的可用性治理实践 导读 本文围绕 Kubernetes 社区仓库中归档的 S人工智能深度学习计算机视觉媒体生成视频处理图像处理PaddleDetection TIPC 基础训练预测功能测试完全指南基于 test_train_inference_python.sh 的 Python 训练-评估-推理一体化验证PaddleDetection TIPC 基础训练预测功能测试完全指南基于 test_train_inference_python.sh 的 Python 训人工智能深度学习计算机视觉上一篇Mermaid CLI实战指南3步实现文本到专业图表的自动化转换下一篇Turbo 后台守护进程turborepo-daemon架构与实现深度解析创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考