资讯动态

PaddleSpeech 训练性能监控实战:test_tipc Benchmark 测试框架详解

发布时间:2026/9/25 4:06:28 来源:尧图企业网站定制
人工智能语音音频NLP媒体生成【免费下载链接】PaddleSpeechEasy-to-use Speech Toolkit including Self-Supervised Learning model, SOTA/Streaming ASR with punctuation, Streaming TTS with text frontend, Speaker Verification System, End-to-End Speech Translation and Keyword Spotting. Won NAACL2022 Best Demo Award.项目地址https://gitcode.com/paddlepaddle/PaddleSpeech点击查看免费下载本文基于 PaddleSpeech 仓库中的 tests/test_tipc/docs/benchmark_train.md 展开讲解 PaddleSpeech 的 TIPCTest in Paddle CI训练性能监控体系如何通过benchmark_train.sh对 Conformer、PWG 等语音模型进行训练吞吐基准测试如何编写train_benchmark.txt参数文件以及训练日志如何被解析为结构化 JSON 指标。读完本文你可以独立完成一次完整的训练性能基准测试看懂日志目录组织与解析结果字段并能从源码层面理解 batch size 重置、步数截断等 benchmark 机制的落地位置。1. 测试流程总览TIPC 的 Benchmark 训练功能测试主程序是 tests/test_tipc/benchmark_train.sh其定位是“验证监控模型训练的性能”。整体流程分三步准备数据和环境运行test_tipc/prepare.sh完成依赖安装、数据集下载、manifest 构建与训练配置改写功能测试运行test_tipc/benchmark_train.sh内部会逐组合调用 tests/test_tipc/test_train_inference_python.sh 执行真实训练再调用 benchmark 仓库的analysis.py解析训练日志日志输出训练日志、profiling 日志与解析出的 speed 指标分别落入index/、profiling_log/、train_log/目录。从源码结构看benchmark_train.sh本身并不直接启动训练它更像一层“参数调度器”先解析参数文件再用sed把目标 batch size、训练精度、GPU 编号等写回参数文件副本最后拼装出训练与日志解析命令。2. 准备数据和环境安装按照原文档要求所有命令都在repo 根目录的tests/目录下运行。# 运行格式bash test_tipc/prepare.sh train_benchmark.txt mode bash test_tipc/prepare.sh test_tipc/configs/conformer/train_benchmark.txt benchmark_train第二个参数mode决定脚本走哪条分支在 prepare.sh 源码中MODE的合法取值注释为benchmark_train等模式脚本第 6–8 行列出了benchmark_train_lite_infer、cpp_infer等候选值。当MODE benchmark_train时脚本完成以下工作安装运行环境安装libsndfile1系统库并通过 pip 安装yacs、kaldiio、jsonlines、matplotlib3.7.1、scipy1.12.0等依赖最终执行pip install .以开发模式安装 PaddleSpeech 本体准备 ASR 训练数据以 conformer 模型为例通过环境变量conformer_aishell_URL指向 aishell_tiny 数据集包未设置该变量时脚本会提示please contact author to get the URL并退出即数据集下载地址不写死在仓库中需要以环境变量形式注入用wget将数据集落盘到dataset/aishell/随后进入examples/aishell/asr1执行两遍bash run.sh --stage 0 --stop_stage 0完成数据下载与 manifest 生成脚本注释说明“执行第一遍的时候会偶现报错”故重复执行以规避网络抖动将conf与data目录拷贝到test_tipc/conformer/benchmark_train/并通过一系列sed改写conformer.yaml中的data/、conf/相对路径为test_tipc/conformer/benchmark_train/下的路径同时把accum_grad: 2改为accum_grad: 1保证 benchmark 训练中梯度累积步数为 1、不干扰性能统计准备其他模型的数据model_name为pwgan时脚本会下载 CSMSIC(BZNSYP) 数据集并执行 preprocess.py、compute_statistics.py、normalize.py 完成声码器训练数据预处理为mdtc时则下载 hey_snips 关键词唤醒数据集多机屏障同步调用 barrier.sh当PADDLE_TRAINERS_NUM 1时循环执行python -m paddle.distributed.launch run_check直到所有节点会合成功用于多机训练场景的对齐。值得注意的细节prepare.sh中的model_name取自参数文件第 2 行func_parser_value ${lines[1]}因此train_benchmark.txt的行位置约定是整个 TIPC 框架能正确解析的基础下文会结合配置文件展开。3. 功能测试benchmark_train.sh 执行机制3.1 基本调用方式执行 benchmark_train.sh完成模型训练和日志解析# 运行格式bash test_tipc/benchmark_train.sh train_benchmark.txt mode bash test_tipc/benchmark_train.sh test_tipc/configs/conformer/train_benchmark.txt benchmark_train不传第三个参数时脚本以参数文件train_benchmark_params段中声明的batch_size、fp_items列表做笛卡尔积遍历源码中默认run_modeDP、device_num_list(N1C4)逐组合跑训练与解析。3.2 单组合精确运行第三个参数benchmark_train.sh支持传入第三个参数实现只运行某一个训练配置# 运行格式bash test_tipc/benchmark_train.sh train_benchmark.txt mode bash test_tipc/benchmark_train.sh test_tipc/configs/conformer/train_benchmark.txt benchmark_train dynamic_bs16_fp32_DP_N1C1dynamic_bs16_fp32_DP_N1C1的命名格式为${modeltype}_${batch_size}_${fp_item}_${run_mode}_${device_num}各字段含义字段示例含义modeltypedynamic模型类型源码中该段会被tr -cd [0-9]提取数字实际只影响命名前缀batch_size16训练的 batch sizefp_itemfp32训练精度如fp32、fp16填null时代码回退为fp32run_modeDP分布式运行模式device_numN1C1机器拓扑信息如N1C1表示单机 1 卡device_num还会驱动 GPU 选择逻辑set_gpu_id函数benchmark_train.sh从N1C4中解析出机器数 M1、卡数 P4算出应使用的卡号列表0,1,2,3并写入参数文件的gpu_list行单卡N1C1则固定写0并额外走一次带--profiler-options的 profiling 运行。多卡分支中还会先unset CUDA_VISIBLE_DEVICES让 test_train_inference_python.sh 内部通过python -m paddle.distributed.launch --gpus${gpu}拉起分布式训练。3.3 参数文件如何被消费以仓库中真实存在的 tests/test_tipc/configs/conformer/train_infer_python.txt 为例原文档引用的train_benchmark.txt与其结构一致train_benchmark_params段为 benchmark 专有参数文件按固定行号组织train_params model_name:conformer python:python3.7 gpu_list:0|0,1 null:null null:null --benchmark-max-step:50 null:null --benchmark-batch-size:16 null:null null:null null:null null:null ## trainer:norm_train norm_train: ../paddlespeech/s2t/exps/u2/bin/train.py --config test_tipc/conformer/benchmark_train/conf/conformer.yaml --output test_tipc/conformer/benchmark_train/outputs --seed 1024 ... train_benchmark_params batch_size:16|30 fp_items:fp32 iteration:50 --profiler-options:batch_range[10,35];stateGPU;tracer_optionDefault;profile_pathmodel.profile flags:null对照 benchmark_train.sh 中的行号常量即可读懂解析逻辑第 2 行model_name决定走 conformer/pwgan/mdtc 哪条准备分支第 7 行--benchmark-max-step:50训练达到 50 步即停止这是 benchmark 模式不跑完整 epoch 的关键开关第 9 行--benchmark-batch-size:16训练时的基线 batch size第 13 行--profiler-optionsprofiling 运行时的飞桨 Profiler 选项采样区间batch_range[10,35]、GPU 状态、profile 输出路径第 15–16 行trainer:norm_train与norm_train:训练命令真正执行训练的入口指向 train.py配合 prepare.sh 生成的conformer.yaml配置。训练命令的 batch size 覆盖能力落在训练器源码中trainer.py 在benchmark_batch_size生效时会重写self.config.batch_size并打印Benchmark reset batch-size: ...trainer.py 则在iteration benchmark_max_step时打印Reach benchmark-max-step并终止训练。这两个 CLI 参数--benchmark-batch-size、--benchmark-max-step的注册位置见 cli.py。也就是说benchmark 训练本质上是“用参数文件指定的步数与 batch size 跑一段真实训练让日志中出现可被解析的吞吐与 loss 曲线”。此外benchmark_train.sh在正式训练前会把参数文件复制为./test_tipc/benchmark_train.txt工作副本所有改写作用于副本用func_sed_params将eval、export等行置为nullbenchmark 模式只跑训练、不跑评估与导出导出 git 分支/commit、paddlepaddle-gpu版本号与paddle.version.commit到环境变量这些信息会进入最终 JSON 的model_branch/model_commit/frame_version等字段便于性能数据与代码版本对齐每完成一组训练调用${BENCHMARK_ROOT}/scripts/analysis.py解析日志BENCHMARK_ROOT指向飞桨 benchmark 脚本仓库analysis.py不在本仓库内属于 CI 联调依赖。4. 日志输出与目录结构运行后脚本会保存模型训练日志和解析日志。使用train_benchmark.txt参数文件时日志解析结果形如{model_branch: dygaph, model_commit: , model_name: conformer_bs16_fp32_SingleP_DP, batch_size: 16, fp_item: fp32, run_process_type: SingleP, run_mode: DP, convergence_value: , convergence_key: loss:, ips: , speed_unit: samples/s, device_num: N1C1, model_run_time: 0, frame_commit: , frame_version: 0.0.0}各字段与源码的对应关系均可在 benchmark_train.sh 的analysis.py调用参数中找到model_name由${model_name}_bs${batch_size}_${precision}_${run_mode}拼装如conformer_bs16_fp32_SingleP_DPconvergence_key: loss:与--keyword ips:分别对应解析训练日志中的 loss 收敛值与吞吐量行ips每秒样本数speed_unit: samples/s单卡分支的解析单位源码中多卡分支写的是images/s属于从 CV 场景模板继承而来的默认值从源码结构看可推断语音场景以 samples/s 为准--skip_steps 2跳过前 2 个 step 再统计吞吐避免热身步骤污染数据model_run_time由训练前后两次date %Y%m%d%H%M%S相减得到秒级。训练日志与解析结果保存在 test 目录即SAVE_LOG默认当前目录可用环境变量BENCHMARK_LOG_DIR覆盖下文件组织格式如下test/ ├── index │ ├── tests_conformer_bs16_fp32_SingleP_DP_N1C1_speed │ └── tests_conformer_bs16_fp32_SingleP_DP_N1C8_speed ├── profiling_log │ └── tests_conformer_bs16_fp32_SingleP_DP_N1C1_profiling └── train_log ├── tests_conformer_bs16_fp32_SingleP_DP_N1C1_log └── tests_conformer_bs16_fp32_SingleP_DP_N1C8_log三类目录职责清晰train_log存原始训练日志..._log文件index存analysis.py输出的 speed 指标..._speed文件是后续性能看板/回归对比的数据源profiling_log仅单卡路径下生成存放带--profiler-options的运行日志可用于飞桨 Profiler 级别的算子性能分析。日志文件名本身即“实验编号”编码了repo_模型_bs精度_模式_拓扑全部关键变量天然适合做跨版本、跨拓扑的性能回归对比。5. 实践要点与适用前提结合原文档与源码实现实操时需要注意以下几点工作目录约定所有命令均在 repo 根目录的tests/下运行test_tipc/prepare.sh、test_tipc/benchmark_train.sh均依赖该相对位置脚本内大量使用test_tipc/...相对路径 source 与调用。GPU 环境脚本通过pip list | grep paddlepaddle-gpu提取框架版本单卡/多卡训练依赖CUDA_VISIBLE_DEVICES与paddle.distributed.launch需要在 GPU 环境中运行profiling 开关由环境变量PROFILING_TIMER_ONLY默认True控制设为no可跳过 profiling 阶段。数据集注入方式conformer 使用的 aishell_tiny 数据 URL 不硬编码在仓库中需通过conformer_aishell_URL环境变量提供prepare.shpwgan与mdtc分支则会直接wget官方 CDN 上的数据包。参数文件行号契约benchmark_train.sh与test_train_inference_python.sh都按固定行号读取参数文件如line_batchsize9、line_profile13自行新增模型配置时应保持同样的行位置结构否则解析会错位。多机训练通过PADDLE_TRAINERS_NUM控制节点数barrier.sh会在节点数大于 1 时执行分布式run_check屏障同步且单组合参数中的device_num字段如N1C8决定analysis.py记录的拓扑信息。综上PaddleSpeech 的 TIPC 训练 benchmark 框架以“固定行号的参数文件 两层 shell 调度 结构化日志解析”为核心prepare.sh 解决“环境与数据”问题benchmark_train.sh 解决“组合遍历与参数注入”问题test_train_inference_python.sh 与飞桨 benchmark 的analysis.py解决“执行与量化”问题三者配合即可对语音模型训练吞吐做可复现、可回归的性能监控。赞分享人工智能语音音频NLP媒体生成【免费下载链接】PaddleSpeechEasy-to-use Speech Toolkit including Self-Supervised Learning model, SOTA/Streaming ASR with punctuation, Streaming TTS with text frontend, Speaker Verification System, End-to-End Speech Translation and Keyword Spotting. Won NAACL2022 Best Demo Award.项目地址https://gitcode.com/paddlepaddle/PaddleSpeech点击查看免费下载相关推荐PaddleSpeech TIPC Benchmark 训练性能测试实战prepare.sh 与 benchmark_train.sh 全解析PaddleSpeech TIPC Benchmark 训练性能测试实战prepare.sh 与 benchmark_train.sh 全解析 本文基于 Pa人工智能语音音频PaddleOCR 训练 Benchmark 测试完全指南基于 TIPC 的 Linux 端训练性能监控方案PaddleOCR 训练 Benchmark 测试完全指南基于 TIPC 的 Linux 端训练性能监控方案 本篇技术指南聚焦 PaddleOCR 仓库中 T人工智能计算机视觉OCR深度学习大模型RAGIsaac Lab 基准测试框架Benchmarking Framework实战指南从环境性能测量到 RL 训练监控Isaac Lab 基准测试框架Benchmarking Framework实战指南从环境性能测量到 RL 训练监控 导读 Isaac Lab 提供了一套人工智能强化学习机器人具身智能深度学习上一篇highlight.io开源社区贡献指南Issue管理与PR流程详解下一篇javascript-state-machine版本迁移指南从2.x到3.x创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑