# PR #21137 完整报告

- 仓库：`sgl-project/sglang`
- 标题：[SKILL] fix(bench): Support model-specific DenoisingStage variants in…
- 合并时间：2026-03-23 12:08
- 原文链接：http://prhub.com.cn/sgl-project/sglang/pull/21137

---

# 执行摘要

本次 PR 扩展了 benchmark 脚本中的 denoise latency 解析逻辑，以支持模型特定的 DenoisingStage 变体（如 MOVADenoisingStage），提升了跨 diffusion 模型的兼容性。变更较小但关键，确保 latency 测量准确。

# 功能与动机

动机源于需要处理不同 diffusion 模型产生的性能数据，这些数据可能使用模型特定的 DenoisingStage 名称。PR body 中明确表示需扩展解析逻辑以接受变体名称，而不仅仅是规范 "DenoisingStage"。

# 实现拆解

变更集中在文件 `bench_diffusion_denoise.py` 的 `run_benchmark_once` 函数中。具体修改如下：

- 将 latency 解析条件从精确匹配 `step.get("name") == "DenoisingStage"` 改为子串匹配 `"DenoisingStage" in step_name`。
- 添加了注释说明支持变体如 `MOVADenoisingStage` 和 `HeliosChunkedDenoisingStage`。

# 评论区精华

review 中，gemini-code-assist[bot] 指出一个潜在问题：

> " 当前实现迭代所有步骤，如果多个步骤包含 'DenoisingStage' 在名称中，会覆盖 `denoise_latency_s`，可能导致不正确 latency 报告。建议在找到匹配后 break 出循环以提高效率。"

但此建议未被采纳，变更中未添加 break 语句。

# 风险与影响

**风险**：
- 字符串匹配宽松：如果性能数据中有多个 denoising 阶段，latency 可能被错误覆盖。
- 缺少 break 可能导致轻微性能开销，但步骤列表通常小，影响有限。

**影响**：
- 用户：使用不同 diffusion 模型的 benchmark 用户将受益于更准确的 latency 解析。
- 系统：仅影响 benchmark 脚本，无运行时副作用。
- 团队：需注意此变更以确保新模型变体能被正确处理。

# 关联脉络

从历史 PR 看，本 PR 是独立的 benchmark 改进，未发现直接相关的 PR。可能属于 diffusion 模型性能优化的一部分，但当前变更范围有限。