执行摘要
此PR更新了NPU扩散模型的性能基线文件,通过手动调整解码阶段和去噪步骤的预期耗时,临时修复了因性能退化导致的CI测试失败。变更仅涉及一个测试文件,但review中指出了数据不一致的风险,建议后续使用脚本重新生成基线以确保准确性。
功能与动机
近期Ascend NPU上的扩散模型性能出现显著下降(如关联Issue #23055所示),导致CI测试失败。此PR作为临时解决方案,更新了性能基线文件中的数值,使测试能够通过,而性能退化的根本原因将在Issue中进一步调查。PR body明确说明:“update perf numbers to fix CI runs performance degradation will be investigated in https://github.com/sgl-project/sglang/issues/23055”。
实现拆解
变更仅涉及一个文件:python/sglang/multimodal_gen/test/server/ascend/perf_baselines_npu.json。该文件存储了NPU扩散模型性能测试的基准耗时数据,用于CI测试中的回归检查。
具体修改包括:
- 更新解码阶段耗时:针对两个测试场景(
wan2_1_t2v_1.3b_1_npu 和 wan2_2_t2v_14b_w8a8_8npu),将 DecodingStage 的数值从较低值调整为较高值,反映当前性能退化。
- 调整去噪步骤耗时:在
wan2_1_t2v_1.3b_1_npu 场景中,将第一个去噪步骤(denoise_step_ms["0"])从103.56毫秒更新为153.0毫秒。
- 未更新聚合指标:如以下代码片段所示,聚合指标如
DenoisingStage 和 expected_e2e_ms 未同步更新,这可能导致基线数据内部不一致,影响测试准确性。
关键源码片段
python/sglang/multimodal_gen/test/server/ascend/perf_baselines_npu.json
这是唯一变更的文件,包含了NPU扩散模型性能测试的基准耗时数据,直接决定CI测试的通过与否。
{
"wan2_1_t2v_1.3b_1_npu": {
"stages_ms": {
"InputValidationStage": 0.07,
"TextEncodingStage": 876.11,
"LatentPreparationStage": 0.25,
"TimestepPreparationStage": 2.9,
"DenoisingStage": 26188.0, // 注意:此聚合指标未随阶段耗时更新,可能导致数据不一致
"DecodingStage": 650.1, // 从 320.03 更新为 650.1,反映解码阶段耗时增加
"per_frame_generation": null
},
"denoise_step_ms": {
"0": 153.0, // 从 103.56 更新为 153.0,反映第一个去噪步骤耗时增加
"1": 329.59,
// ... 其他步骤保持不变
},
"expected_e2e_ms": 38738.17, // 注意:此聚合指标未更新,可能不反映最新阶段耗时总和
"expected_avg_denoise_ms": 523.62,
"expected_median_denoise_ms": 536.23
},
"wan2_2_t2v_14b_w8a8_8npu": {
"stages_ms": {
"InputValidationStage": 0.07,
"TextEncodingStage": 1200.21,
"LatentPreparationStage": 0.2,
"TimestepPreparationStage": 2.68,
"DenoisingStage": 83661.46, // 注意:此聚合指标未更新
"DecodingStage": 1080.05, // 从 232.94 更新为 1080.05,解码耗时显著增加
"per_frame_generation": null
},
// ... 其他部分保持不变
}
}
评论区精华
review中,gemini-code-assist[bot]指出了关键问题:
“The update to DecodingStage and denoise_step_ms["0"] is not reflected in the aggregate metrics... It is recommended to regenerate the baseline using the gen_perf_baselines.py script to ensure all derived values are consistent.”
此评论强调了手动更新基线文件的风险——未同步更新聚合指标会导致数据不一致,可能使CI测试误判性能回归。但PR作者未回应此问题,PR已合并,留下了潜在的技术债务。
风险与影响
- 测试准确性风险:由于聚合指标未更新,性能基线文件内部不一致,可能导致CI测试误报通过或失败,掩盖真实的性能退化程度。
- 维护风险:手动修改而非脚本生成基线文件,增加了未来更新时出错的风险,尤其是在多指标需同步调整的场景下。
- 影响范围:此变更仅影响NPU扩散模型的CI测试流程,对用户和系统运行时无直接影响,但确保了测试链的连续性,为后续性能调查(Issue #23055)争取了时间。
关联脉络
此PR与近期多个diffusion和NPU相关PR有间接关联:
- PR #23118 和 #23207 涉及diffusion模块的优化和重构,可能影响整体性能趋势。
- PR #22914 涉及NPU和上下文并行的代码去重,可能反映团队在性能优化上的持续努力。
- 关联Issue #23055 提供了性能退化的背景,表明此PR是临时修复,后续需深入调查根本原因。
整体来看,此PR是NPU性能维护链条中的一环,突出了在快速迭代中平衡CI稳定性和数据准确性的挑战。
参与讨论