人工智能语音音频【免费下载链接】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/gh_mirrors/pa/PaddleSpeech点击查看免费下载本文围绕 PaddleSpeech 仓库中 Conformer 语音识别模型的训练性能基准测试benchmark文档展开完整讲解tests/benchmark/conformer/目录下环境准备、单卡/8 卡运行脚本、参数配置与日志产出规范读者读完后可在标准 GPU 环境中复现 Conformer 的 ipssent./sec性能数据理解--benchmark-batch-size、--benchmark-max-step等参数如何作用于训练器以及最终 JSON 日志中FINAL_RESULT等字段的生成逻辑。基准测试目标与文件组织tests/benchmark/conformer/是 PaddleSpeech 针对 Conformer ASR 模型构建的性能基准测试目录核心目标是在固定硬件、固定软件环境下量化模型在单卡与 8 卡两种运行模式下的训练速度指标单位为ipssent./sec每秒处理句子数。测试数据与模型取自 AISHELL-1 数据集的 ASR 示例examples/aishell/asr1从而保证性能数据可在相同条件下复现与横向对比。根据 README 给出的文件清单一个完整的 benchmark 目录组织如下└── benchmark # 模型名 ├── README.md # 运行文档 ├── analysis.py # log解析脚本,每个框架尽量统一 ├── recoder_mp_bs16_fp32_ngpu1.txt # 单卡数据 ├── recoder_mp_bs16_fp32_ngpu8.txt # 8卡数据 ├── prepare.sh # 竞品PyTorch运行环境搭建 ├── run_benchmark.sh # 运行脚本包含性能、收敛性 ├── run_analysis_mp.sh # 分析8卡的脚本 ├── run_analysis_sp.sh # 分析单卡的脚本 ├── log │ ├── log_sp.out # 单卡的结果 │ └── log_mp.out # 8卡的结果 └── run.sh # 全量运行脚本当前仓库中该目录实际包含 README、prepare.sh、run.sh 与 run_benchmark.sh 四个文件README 清单中列出的recoder_*.txt、log/等为运行后产出的结果文件analysis.py等日志解析脚本则统一采用 PaddlePaddle 官方 benchmark 仓库中的通用版本run_benchmark.sh 第 73 行通过source ${BENCHMARK_ROOT}/scripts/run_model.sh引入该解析流程各框架尽量保持解析逻辑统一以方便跨框架对比。环境要求物理环境与 Docker 镜像基准测试的有效性高度依赖环境的可复现性文档明确给出了标准测试环境物理环境单机覆盖单卡与 8 卡两种规模多机 32 卡方案在文档中标注为 TODO项目规格系统Ubuntu 16.04.6 LTSGPUTesla V100-SXM2-16GB × 8CPUIntel(R) Xeon(R) Gold 6148 CPU 2.40GHz × 96Driver Version440.64.00内存440 GBCUDA / cuDNNcuda 10.2 / cuDNN 7Docker 镜像保证软件栈一致的标准执行环境镜像版本registry.baidubce.com/paddlepaddle/paddle:2.1.0-gpu-cuda10.2-cudnn7CUDA 版本10.2cuDNN 版本7run.sh 第 2 行进一步注明了可稳定复现性能的执行环境标准 docker 环境内 py37paddle2.1.2, py37。环境搭建的第一步是按 安装文档 完成 PaddleSpeech 的安装。第一步准备环境prepare.sh按 README 指示环境准备只需一条命令bash prepare.sh从 prepare.sh 源码看该脚本完成了三件事安装 PaddleSpeechcd ../../../ pip install -e .以可编辑模式安装当前仓库进入示例目录pushd ../../../examples/aishell/asr1即 AISHELL-1 的 ASR1Conformer 架构示例准备数据bash run.sh --stage 0 --stop_stage 0只执行run.sh的第 0 阶段数据下载、转 manifest 与词表等前置流程不启动训练。数据准备完成后examples/aishell/asr1下会生成训练所需的data/manifest.train、data/manifest.dev、data/manifest.test与data/lang_char/vocab.txt这些路径正是 conf/conformer.yaml 中train_manifest、dev_manifest、test_manifest、vocab_filepath字段所引用的文件。第二步全量运行基准测试run.shbash run.shrun.sh 是全量运行脚本其完整逻辑可以拆为四段1环境固定与日志路径。脚本头部先记录CUR_DIR${PWD}即PaddleSpeech/tests/benchmark/conformer日志目录通过环境变量LOG_PATH_INDEX_DIR指定benchmark 系统会注入该参数未指定时默认当前目录随后执行sed -i /set\ -xe/d run_benchmark.sh去掉子脚本的严格模式避免单次失败中断整个矩阵扫描。2切换基准训练配置。脚本进入examples/aishell/asr1后source path.shpath.sh 中定义了MAIN_ROOT、BIN_DIR等关键变量然后mkdir -p conf/benchmark cp conf/conformer.yaml conf/benchmark/conformer.yaml sed -i s/ accum_grad: 2/ accum_grad: 1/g conf/benchmark/conformer.yaml即拷贝一份基准专用配置并把梯度累积accum_grad调小为 1使 benchmark 只测训练吞吐、不受累积步长影响。需要注意当前仓库中 conf/conformer.yaml 的accum_grad默认值为 8第 77 行sed规则匹配的是accum_grad: 2因此复现时应以实际配置文件中该字段的真实取值为准确认替换是否生效。3性能扫描矩阵。脚本以两层循环遍历精度与 batch sizefp_item_list(fp32) # 精度维度当前仅 fp32 bs_item(16) # 批大小维度当前仅 bs16每个组合先后执行两种运行模式并tee到标准日志文件运行模式命令要点输出日志多卡 mpCUDA_VISIBLE_DEVICES0,1,2,3,4,5,6,7 ... ngpu8${log_path}/speech_conformer_bs16_fp32_speed_8gpus8p单卡 spCUDA_VISIBLE_DEVICES0 ... ngpu1${log_path}/speech_conformer_bs16_fp32_speed_1gpus每次任务之间sleep 60用于冷却与释放显存保证多次测量之间相互独立。4调用 run_benchmark.sh 执行单次任务。两种模式最终都调用同一脚本参数传递顺序为${run_mode} ${config_path} ${decode_config_path} ${output} ${seed} ${ngpu} ${profiler_options} ${bs_item} ${fp_item} ${model_item}其中config_pathconf/benchmark/conformer.yaml、decode_config_pathconf/tuning/decode.yaml、outputexp/conformer、seed0、model_itemconformer。run_benchmark.sh 参数与执行细节run_benchmark.sh 是单次 benchmark 任务的核心其_set_params函数定义了完整的参数表均可省略、带默认值位置参数变量名默认值说明$1run_modesp单卡 sp / 多卡 mp$2config_pathconf/conformer.yaml训练配置$3decode_config_pathconf/tuning/decode.yaml解码配置$4outputexp/conformer实验输出目录$5seed0随机种子$6ngpu1GPU 数量$7profiler_optionsNone非 None 时追加--profiler-options$8batch_size32基准 batch size$9fp_itemfp32精度$10model_itemconformer模型名脚本中还有若干与日志解析规范强相关的固定参数直接决定了后续 analysis 脚本如何提取性能数据benchmark_max_step0 # 0 表示不提前终止 skip_steps10 # 跳过前10个step前期step耗时长会拉低均值 keywordips: # 从训练log中筛选含该关键字的行 index1 mission_name语音识别 direction_id1 ips_unitsent./sec # 性能单位文件名与任务名的构造规则为model_name${model_item}_bs${batch_size}_${fp_item} log_file${run_log_path}/recoder_${model_item}_${run_mode}_bs${batch_size}_${fp_item}_ngpu${ngpu}即 README 文件清单中的recoder_sp_bs16_fp32_ngpu1.txt、recoder_mp_bs16_fp32_ngpu8.txt正是按该规则生成的结果文件。训练命令的拼装与超时控制_train函数把参数映射为训练器入参train_cmd--config${config_path} \ --decode_cfg${decode_config_path} \ --output${output} \ --seed${seed} \ --ngpu${ngpu} \ --benchmark-batch-size ${batch_size} \ --benchmark-max-step ${benchmark_max_step} 并以timeout 15m限时 15 分钟执行超时或失败时导出job_fail_flag1成功则记SUCCESS——这正是结果 JSON 中JOB_FAIL_FLAG字段的来源。多卡mp模式下 Paddle 分布式训练会把各 worker 日志写入mylog/脚本随后将mylog/workerlog.0rank 0 worker 的日志拷贝为最终的recoder_*.txt保证单卡、多卡两种模式产出同构日志供统一的解析脚本处理。最后脚本source ${BENCHMARK_ROOT}/scripts/run_model.sh该脚本会对符合 benchmark 规范的日志调用analysis.py完成性能解析如果只是本地调试、仅想产出训练 log 而不做联调解析README 注释说明可以把该解析行注掉但提交时必须打开。源码级原理benchmark 参数如何作用于训练器--benchmark-batch-size与--benchmark-max-step并非 shell 层的伪参数而是由 S2T 训练入口原生支持的命令行选项。参数定义在 cli.py 中注册parser.add_argument(--benchmark-batch-size, ...) # batch size for benchmark. parser.add_argument(--benchmark-max-step, ...) # max iteration for benchmark.batch size 覆写与高频日志在 trainer.py 的设备初始化阶段# profiler and benchmark options if hasattr(self.args, benchmark_batch_size) and self.args.benchmark_batch_size: with UpdateConfig(self.config): self.config.batch_size self.args.benchmark_batch_size self.config.log_interval 1 logger.info(fBenchmark reset batch-size: {self.args.benchmark_batch_size})可以看到--benchmark-batch-size会强制覆盖YAML 配置中的batch_size这就是run.sh中把扫描值放在 shell 变量里、而不是直接改配置文件的原因同时log_interval被置为 1使每个 step 都输出一条日志为按 step 粒度的吞吐解析提供数据。max-step 提前终止trainer.py 中if self.args.benchmark_max_step: ... if self.args.benchmark_max_step and self.iteration self.args.benchmark_max_step: logger.info(fReach benchmark-max-step: {self.args.benchmark_max_step})当指定了--benchmark-max-step非 0时训练到达该 iteration 即停止方便只测前 N 个 step 的速度当前 conformer 基准将其设为 0不提前终止靠timeout 15m兜底。ips 指标的计算训练主循环里用time.time()记录每个 batch 的处理耗时trainer.py并写入观察量observation[ips samples/s]底层计时由 timer.py 的Timer类elapsed_time提供。日志行中的ips:关键字与run_benchmark.sh里的keywordips:精确对应——analysis 脚本正是从含该关键字的日志行中按skip_steps10跳过头 10 个 step 后统计吞吐最终换算为sent./sec单位写入结果文件。结果日志格式与 FINAL_RESULTbenchmark 系统最终把单次任务的元信息与解析出的性能指标合并为一段 JSONREADME 给出的真实样例{log_file: recoder_sp_bs16_fp32_ngpu1.txt, model_name: Conformer, mission_name: one gpu, direction_id: 1, run_mode: sp, index: 1, gpu_num: 1, FINAL_RESULT: 23.228, JOB_FAIL_FLAG: 0, log_with_profiler: null, profiler_path: null, UNIT: sent./sec }各字段与脚本参数的对应关系字段含义来源log_file原始训练日志文件名recoder_${model}_${run_mode}_bs${bs}_${fp}_ngpu${ngpu}规则model_name/mission_name模型名与任务名model_item、mission_name参数run_mode/gpu_numsp 单卡 / mp 多卡、GPU 数run_mode、ngpu参数FINAL_RESULT最终性能值样例为 23.228analysis.py 从日志ips:行解析跳过前 10 步JOB_FAIL_FLAG0 成功 / 1 失败_train中job_fail_flag的导出UNIT性能单位ips_unitsent./seclog_with_profiler/profiler_path是否附带 profiler 数据profiler_options参数默认None复现注意事项小结环境一致性性能数据只在 README 声明的 V100×8 / cuda10.2-cudnn7 / paddle 2.1.x、py37 标准 docker 环境下具有可比性换 GPU 型号、CUDA 版本或 paddle 版本后数据需重新标注。数据前置先跑prepare.sh完成examples/aishell/asr1的 stage 0 数据准备再执行run.sh否则训练入口会因缺少 manifest 与词表而失败。单次任务时长run_benchmark.sh对每次训练设 15 分钟超时timeout 15mbs16、fp32 的 Conformer 单卡任务在该窗口内应能产出足量 step若 15 分钟内 step 数过少skip_steps10之后参与统计的样本会不足影响 FINAL_RESULT 的稳定性。mp 日志取 rank 0多卡结果文件是mylog/workerlog.0的拷贝单卡与多卡日志格式同构可共用同一套analysis.py解析逻辑。解析链路依赖 BENCHMARK_ROOT本地只想看训练 log 时可按 run_benchmark.sh 注释将source run_model.sh与_run行注掉、改为直接调用_train提交基准结果时必须恢复解析链路。参考文件基准测试运行文档tests/benchmark/conformer/README.md环境准备脚本tests/benchmark/conformer/prepare.sh全量运行脚本tests/benchmark/conformer/run.sh单次任务执行与解析脚本tests/benchmark/conformer/run_benchmark.shConformer 训练配置examples/aishell/asr1/conf/conformer.yaml示例环境变量examples/aishell/asr1/path.shbenchmark 参数定义paddlespeech/s2t/training/cli.py训练器 benchmark 逻辑paddlespeech/s2t/training/trainer.py计时工具paddlespeech/s2t/training/timer.py安装文档docs/source/install.md赞分享人工智能语音音频【免费下载链接】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/gh_mirrors/pa/PaddleSpeech点击查看免费下载相关推荐PaddleDetection TIPC Benchmark 训练性能测试全指南从准备到日志解析PaddleDetection TIPC Benchmark 训练性能测试全指南从准备到日志解析 导读 本文聚焦 PaddleDetection 仓库中 T人工智能深度学习计算机视觉markdown-it 基准测试全解析Benchmark 脚本、测试样本与性能解读markdown it 基准测试全解析Benchmark 脚本、测试样本与性能解读 导读 本文以 docs/benchmark.md https://link开发工具CLI香山处理器 XSNoCTop片上网络的 5 个可查证设计决策香山处理器 XSNoCTop片上网络的 5 个可查证设计决策 香山处理器XiangShan是一个开源 RISC V 高性能核心。当它被放进多核 SoC 时硬件开发指令集高性能计算上一篇Encore Cloud 深入指南从应用代码声明到 AWS/GCP 基础设施的自动化预置与运维下一篇Heurist Agent Framework未来展望路线图与社区发展规划创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考