Prhub

#23056 [Diffusion][NPU][CI] update perf numbers

原始 PR 作者 Makcum888e 合并时间 2026-04-21 00:34 文件变更 1 提交数 3 评论 3 代码增减 +3 / -3

执行摘要

更新 NPU 扩散模型性能基线文件,修复 CI 测试因性能退化导致的失败。

根据PR body和关联Issue #23055,近期Ascend NPU上的扩散模型性能出现显著下降,导致CI测试失败。此PR作为临时修复,通过更新性能基线文件(perf_baselines_npu.json)中的预期耗时数值,使CI测试能够通过,而性能退化的根本原因将在Issue #23055中进一步调查。

此PR变更简单,主要用于修复CI,无需深入精读。但值得关注review中提到的数据不一致问题,建议团队在后续更新性能基线时采用脚本生成方式,以确保数据完整性。

讨论亮点

review中,gemini-code-assist[bot]指出手动更新性能基线可能导致数据不一致:

  • 问题:更新了 DecodingStagedenoise_step_ms["0"] 的数值,但未同步更新聚合指标(如 expected_e2e_msDenoisingStage),这会使基线文件内部不一致,可能影响CI性能检查的准确性。
  • 建议:推荐使用 gen_perf_baselines.py 脚本重新生成基线文件,以确保所有派生值一致。
  • 结论:PR作者未回应此评论,PR已合并,但数据不一致问题未解决,可能作为技术债务留待后续处理。

实现拆解

  1. 识别并修改性能基线文件:仅修改了 python/sglang/multimodal_gen/test/server/ascend/perf_baselines_npu.json 文件,该文件存储了NPU扩散模型性能测试的基准耗时数据。
  2. 调整具体耗时数值:针对两个测试场景(wan2_1_t2v_1.3b_1_npuwan2_2_t2v_14b_w8a8_8npu),更新了 DecodingStage 的耗时值,并调整了第一个去噪步骤(denoise_step_ms["0"])的耗时。
  3. 未更新聚合指标:如review评论指出,虽然更新了阶段耗时,但未同步更新聚合指标如 expected_e2e_msDenoisingStage 等,这可能导致基线数据内部不一致。
  4. 无其他配套改动:此PR仅修改了测试基线文件,未涉及源码逻辑、配置或部署脚本的变更。
文件 模块 状态 重要度
python/sglang/multimodal_gen/test/server/ascend/perf_baselines_npu.json 性能基线 modified 4.11

关键源码片段

python/sglang/multimodal_gen/test/server/ascend/perf_baselines_npu.json test-coverage

这是唯一变更的文件,包含了 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
        },
        // ... 其他部分保持不变
    }
}

评论区精华

性能基线数据不一致 正确性

gemini-code-assist[bot] 指出,手动更新了 DecodingStage 和 denoise_step_ms["0"] 的数值,但未同步更新聚合指标(如 expected_e2e_ms、DenoisingStage),导致基线文件内部不一致。

结论:建议使用 gen_perf_baselines.py 脚本重新生成基线文件以确保一致性,但 PR 已合并而未采纳此建议。 · unresolved

风险与影响

  • 测试准确性风险:由于聚合指标未更新,性能基线文件内部数据不一致,可能导致CI测试误判(例如,实际性能已退化但测试仍通过,或反之)。
  • 维护风险:手动修改基线文件而非通过脚本生成,增加了未来更新时出错或遗漏的风险,尤其是在多个指标需同步调整时。
  • 兼容性风险:无,此变更仅影响测试基线,不涉及运行时逻辑或API。
  • 对用户:无直接影响,此为内部测试调整。
  • 对系统:修复了CI测试失败,确保NPU扩散模型测试流程可继续运行,但可能掩盖了性能退化的真实程度。
  • 对团队:临时解决了CI阻塞问题,但需依赖Issue #23055进行后续性能调查,否则可能积累技术债务。
测试数据不一致 手动更新风险

关联 Issue

#23055 [Diffusion] [NPU] Investigate performance degradation on Ascend

完整报告

参与讨论