# PR #21653 完整报告

- 仓库：`sgl-project/sglang`
- 标题：[diffusion] Fix dashboard chart display issues
- 合并时间：2026-03-30 12:02
- 原文链接：http://prhub.com.cn/sgl-project/sglang/pull/21653

---

# 执行摘要

本次 PR 修复了 diffusion 比较 CI 仪表板的图表显示问题，通过扩展历史数据范围、优化图例位置和改进 y 轴缩放，提升了图表可读性和趋势分析的准确性，仅影响内部 nightly 测试任务，风险低且已通过 review 修复。

# 功能与动机

根据 PR body，变更旨在解决三个显示问题：一是历史数据过短（仅 7 次运行），不足以展示长期趋势；二是图例位置与数据标签重叠，影响阅读；三是 y 轴缩放采用固定 `bottom=0`，导致数值聚集在顶部，如 wan22_ti2v 案例。这些改进将使 nightly 测试的仪表板更直观有效，支持更好的性能监控。

# 实现拆解

仅修改了文件 `scripts/ci/utils/diffusion/generate_diffusion_dashboard.py`：
- **历史数据扩展**：将 `MAX_HISTORY_RUNS` 从 7 改为 14，并提供动态标题 `f"
## SGLang Performance Trend (Last {len(history) + 1} Runs)\n"`。
- **图例优化**：调整 `ax.legend(loc="lower right", fontsize=8, framealpha=0.8)`，避免重叠并添加透明度。
- **y 轴缩放重构**：新增代码计算数据最小最大值，设定范围并添加 30% 填充，关键逻辑如下：
  ```python
  all_vals = sg_vals + [v for v in vl_vals if v is not None]
  y_min = min(all_vals)
  y_max = max(all_vals)
  y_range = y_max - y_min if y_max > y_min else max(y_max * 0.1, 0.1)
  ax.set_ylim(
      bottom=max(0, y_min - y_range * 0.3),
      top=y_max + y_range * 0.3,
  )
  ```

# 评论区精华

review 中，gemini-code-assist[bot] 指出一个关键边界情况："y_range 计算在所有数据点为零时会导致值为 0，产生无效图表。" 并建议使用 `max(y_max * 0.1, 0.1)` 处理。此问题在第二个提交中被及时修复，体现了代码审查对正确性的保障作用。

# 风险与影响

风险方面：原 y 轴缩放逻辑在全零数据场景下存在失效风险，但已在 review 建议后修复；其他风险可忽略，变更仅影响内部 CI 工具，不涉及生产系统或安全。影响分析：直接影响为 nightly 测试仪表板的视觉改进，对工程师分析测试结果提供更佳支持，无负面兼容性影响，影响程度小。

# 关联脉络

从近期 PR 看，此 PR 与 CI 测试改进脉络相关，如 PR #21487 添加 GB300 benchmark 套件，均致力于优化 CI 基础设施。虽然无直接关联 Issue，但作为 diffusion 测试的一部分，支持了更稳健的自动化测试流程，反映了团队在提升测试可视化和准确性方面的持续努力。