Prhub

#21830 Use CustomTestCase for TestSessionControl to enable CI retry

原始 PR 作者 hnyls2002 合并时间 2026-04-01 19:26 文件变更 1 提交数 4 评论 2 代码增减 +3 / -1

执行摘要

修复 H200 GPU 上会话控制测试的 CI 稳定性,通过继承 CustomTestCase 并禁用 CUDA 图优化。

根据PR body描述,test_session_control和test_session_control_with_branching在H200 GPU的CI中确定性失败。根本原因是会话模式与普通模式之间的分段CUDA图不匹配:会话模式在return_logprob + logprob_start_len条件下会禁用分段CUDA图,而普通模式保持启用。在H200上,这两种计算路径产生略微不同的数值结果,导致temperature=0的贪婪解码在token边界处发散。

该PR值得快速浏览,重点关注其如何通过禁用CUDA图优化解决硬件特定数值差异问题。对于涉及会话控制或CUDA图优化的测试,可借鉴此方法确保计算路径一致性。

讨论亮点

review讨论较少,仅gemini-code-assist[bot]评论表示“没有反馈可提供”,说明变更被认可为直接修复。从commit历史可见,作者经历了三次调整:最初尝试移除return_logprob,然后改为禁用cuda graph,最终添加禁用piecewise cuda graph,表明对问题根源的逐步深入理解。

实现拆解

实现方案包含两个关键改动点:

1) 在test/registered/sessions/test_session_control.py中,将TestSessionControl的基类从unittest.TestCase改为CustomTestCase,以启用CI自动重试机制。
2) 在同一文件的setUpClass方法中,向测试服务器启动参数添加--disable-cuda-graph和--disable-piecewise-cuda-graph,确保会话模式和普通模式都禁用CUDA图优化,消除计算路径差异。

文件 模块 状态 重要度
test/registered/sessions/test_session_control.py test/sessions modified 8.0

关键符号

TestSessionControl.setUpClass

分析完成后,这里会展示 LLM 生成的相对完整源码片段和详细注释。

评论区精华

测试稳定性修复 正确性

PR body 详细分析了 H200 GPU 上测试失败的根因:分段 CUDA 图在会话模式和普通模式下的不匹配导致数值差异。

结论:通过继承 CustomTestCase 启用重试,并禁用 CUDA 图优化确保计算路径一致。 · 已解决

风险与影响

风险较低:

1) 变更仅限于测试文件,不影响生产代码逻辑。
2) 禁用CUDA图优化仅针对特定测试,不会影响其他测试或运行时性能。
3) 潜在风险是测试覆盖度可能因禁用优化而降低,但PR body中验证显示40/40通过率,证明修复有效。

影响范围有限:

1) 对用户无直接影响,仅改善CI稳定性。
2) 对系统:修复H200 GPU上测试失败问题,提升跨平台测试可靠性。
3) 对团队:减少CI flakiness,提高开发效率;引入CustomTestCase继承模式可能为其他测试提供重试机制参考。

测试覆盖度变化

关联 Issue

未识别关联 Issue

当前没有检测到明确关联的 Issue 链接,后续同步到相关引用后会出现在这里。

完整报告

参与讨论