Prhub

#21349 [CI] Reduce session correctness test to 30 turns to fix flakiness

sgl-project/sglang · 作者 hnyls2002 · 合并时间 2026-03-25 09:56

分析状态 已生成
文件变更 1提交数 1 · 评论 1
代码增减 +7 / -2
ci test bugfix

执行摘要

将流式会话正确性测试的轮数从 150 减少到 30 以解决 flakiness。

PR body指出:'GPU floating-point non-determinism causes greedy decoding to diverge on long multi-turn contexts, leading to cascading mismatches',并引用失败的CI运行(链接:https://github.com/sgl-project/sglang/actions/runs/23518261034/job/68455993786?pr=21338)。这解决了测试flakiness问题,提高CI可靠性。

建议快速浏览此PR以理解测试flakiness的缓解策略,但无需深入分析代码逻辑。对于涉及GPU非确定性的测试设计有参考价值,可关注如何在测试中平衡覆盖与稳定性。

讨论亮点

该PR没有收到任何review评论,由作者直接合并,表明变更简单且被团队接受,无争议点。

实现拆解

仅修改了test/registered/sessions/test_session_latency.py文件。在test_streaming_session_correctness函数中,引入局部变量correctness_turns = 30,并将其作为num_turns参数传递给_run_concurrent_session方法,替换了硬编码的默认轮数设置。其他测试函数如test_regular_sessiontest_streaming_session未作改动,保持150轮。

文件 模块 状态 重要度
test/registered/sessions/test_session_latency.py 测试套件(sessions) modified 3.0

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

关键符号

test_streaming_session_correctness _run_concurrent_session

评论区精华

没有提炼出高价值讨论线程

当前评论区没有形成足够清晰的争议点或结论,后续有更多讨论时会体现在这里。

风险与影响

风险:减少测试轮数可能降低对长上下文场景的验证强度,隐藏潜在的浮点非确定性问题。具体到test_streaming_session_correctness函数,轮数减少后,可能无法充分捕获GPU计算在更长时间序列中的不匹配。此外,如果依赖此测试作为质量门控,可能引入未被检测到的回归。

影响:正面影响是提高CI测试的稳定性和可靠性,减少不必要的失败和重试,从而优化开发流程和资源使用。负面影响是测试覆盖略有降低,可能需要在未来通过其他方法(如增加容忍度或改进测试设计)增强长上下文验证。对用户无直接影响,仅影响内部测试过程。

测试覆盖降低

关联 Issue

未识别关联 Issue

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

完整报告

执行摘要

本PR将流式会话正确性测试的轮数从150减少到30,以解决由GPU浮点非确定性引起的CI测试flakiness,提高测试稳定性,同时保持其他延迟测试不变。

功能与动机

动机是解决测试flakiness问题。PR body明确指出:“GPU floating-point non-determinism causes greedy decoding to diverge on long multi-turn contexts, leading to cascading mismatches”,并引用了一个失败的CI运行。这表明在长上下文测试中,浮点计算的非确定性导致输出不匹配,因此需要调整测试参数来缓解此问题。

实现拆解

实现非常简单,仅修改了一个文件:test/registered/sessions/test_session_latency.py。关键改动如下:

  • test_streaming_session_correctness函数中,引入局部变量correctness_turns = 30
  • _run_concurrent_session调用中的num_turns参数设为该变量,例如:
    python reg = self._run_concurrent_session( streaming=False, num_concurrent=1, num_turns=correctness_turns )
  • 其他测试函数如test_regular_sessiontest_streaming_session保持150轮不变,确保延迟测试不受影响。

评论区精华

该PR没有收到任何review评论,由作者直接合并,表明变更被认为直接且必要,无技术争议或设计权衡讨论。

风险与影响

风险:减少测试轮数可能降低对长上下文场景的验证强度,潜在隐藏浮点非确定性问题。具体到test_streaming_session_correctness函数,轮数减少后,可能无法充分捕获GPU计算在更长时间序列中的不匹配,从而遗漏潜在错误。
影响:正面影响是CI测试更稳定,减少不必要的失败和资源浪费;负面影响是测试覆盖略有降低,可能需要在未来通过其他方式(如增强测试设计或增加容忍度)来弥补。

关联脉络

与此PR相关的其他CI优化PR包括:

  • PR 21305:增加缓存刷新超时,提升CI稳定性。
  • PR 21330:默认启用failfast,优化测试执行以减少不稳定测试的干扰。
    这些PR共同反映了团队对CI测试可靠性的持续改进趋势,旨在减少flakiness和提高开发效率。

参与讨论