# PR #21830 完整报告

- 仓库：`sgl-project/sglang`
- 标题：Use CustomTestCase for TestSessionControl to enable CI retry
- 合并时间：2026-04-01 19:26
- 原文链接：http://prhub.com.cn/sgl-project/sglang/pull/21830

---

# 执行摘要
本 PR 修复了 H200 GPU 上会话控制测试的 CI 稳定性问题，通过将 TestSessionControl 继承自 CustomTestCase 启用自动重试，并禁用 CUDA 图优化确保计算路径一致。变更仅限于测试文件，有效解决了硬件特定的数值差异导致的测试失败，提升了跨平台测试可靠性。

# 功能与动机
**为什么做**：`test_session_control` 和 `test_session_control_with_branching` 在 H200 GPU 的 CI 中确定性失败。根据 PR body 分析，根本原因是会话模式与普通模式之间的分段 CUDA 图不匹配：
- 会话模式在 `return_logprob` + `logprob_start_len` 条件下会禁用分段 CUDA 图（因为 `start_len < seq_len` 时 `piecewise_cuda_graph_runner.can_run()` 返回 `False`）
- 普通模式在 `return_logprob`（无显式 `logprob_start_len`）时保持 CUDA 图启用
- 在 H200 上，这两种计算路径产生略微不同的数值结果，导致 `temperature=0` 贪婪解码在 token 边界处发散

**要解决的问题**：消除测试 flakiness，确保 CI 在混合 H100/H200 环境中稳定通过。

# 实现拆解
实现集中在单个文件 `test/registered/sessions/test_session_control.py`，包含两个关键改动：

1. **测试类继承变更**
   ```python
   -class TestSessionControl(unittest.TestCase):
   +class TestSessionControl(CustomTestCase):
   ```
 启用 CustomTestCase 的自动重试机制，应对剩余的不稳定性。

2. **服务器启动参数调整**
   ```python
   other_args=[
       "--attention-backend", "triton",
       "--disable-cuda-graph",
       "--disable-piecewise-cuda-graph",
   ]
   ```
 禁用 CUDA 图和分段 CUDA 图，强制会话模式和普通模式使用相同的非优化计算路径，消除数值差异。

# 评论区精华
review 讨论较少，gemini-code-assist[bot] 仅评论“没有反馈可提供”，表明变更被认可为直接修复。但从 commit 历史可见深入的技术分析：
- 第一次提交：尝试移除 `return_logprob` 参数
- 第二次提交：改为禁用 cuda graph
- 第三次提交：补充禁用 piecewise cuda graph
这显示作者逐步定位到“分段 CUDA 图不匹配”这一核心问题，最终方案更彻底地确保计算路径一致性。

# 风险与影响
**风险**：
- 测试覆盖度变化：禁用 CUDA 图优化后，测试不再验证 CUDA 图相关功能，但 PR body 验证显示 40/40 通过率，证明修复有效且必要
- 仅限测试环境：不影响生产代码，风险可控

**影响**：
- 对用户：无直接影响
- 对系统：修复 H200 特定测试失败，提升 CI 稳定性
- 对团队：减少 CI flakiness，提高开发效率；CustomTestCase 继承模式可为其他测试提供参考

# 关联脉络
从近期历史 PR 看，本 PR 与以下变更相关：
- **#21422**（升级 flashinfer）：同样涉及测试稳定性，修改了 piecewise_cuda_graph 测试文件，共享 CUDA 图测试上下文
- **#21705**（修复 pause generation）：同为调度相关 bugfix，但领域不同（scheduler vs session control）

**演进趋势**：本 PR 揭示了硬件特定（H200）数值敏感性问题，以及通过禁用优化确保测试一致性的模式。在混合 GPU 环境中，此类问题可能在其他测试中重现，本解决方案提供了参考模板。