Prhub

#26994 jit_kernel tests: bump multiprocess_test timeout 90s -> 240s (cold JIT cache)

原始 PR 作者 alisonshao 合并时间 2026-06-03 05:33 文件变更 1 提交数 2 评论 1 代码增减 +10 / -2

执行摘要

调高 JIT kernel 测试超时阈值

test_tp_qknorm[2] 在 CI 中持续超时(>90s),而同一 job 中后续参数化测试(4 进程、8 进程)仅需 ~45-52s 即可通过。根因是首次调用时 triton + cutlass JIT 编译开销大(实测 60-180s),后续参数化测试复用已 warm 的缓存。PR body 明确指出:“This is the minimum to stop the flake bleeding.”

PR 变更简单,值得关注的是其根因分析思路(对比不同参数化测试耗时、推断冷 JIT 缓存)。建议阅读 PR body 中的“smoking gun”分析,理解如何从 CI 日志中定位非死锁类超时问题。长期方案(固定 JIT 缓存路径)值得跟进。

讨论亮点

两位审核者(DarkSharpness、hnyls2002)均直接批准,无 review 评论。讨论主要为 PR body 中的根因分析:通过对比 test_tp_qknorm[2] 超时(>90s)与 [4](~45s)、[8](~52s)通过的现象,结合 worker stdout 仅输出 OMP_NUM_THREADS 警告,推断首次调用需编译大量 kernel 导致超时。

实现拆解

变更仅涉及一个文件 python/sglang/jit_kernel/tests/utils.py,核心修改是:

  1. 修改默认超时值:将 multiprocess_test 函数签名中的 timeout: int = 90 改为 timeout: int = 240
  2. 更新 docstring:补充默认值设定依据,说明首次调用的 JIT 编译开销可达 60-180 秒,后续参数化测试因缓存预热可降低至 ~60 秒。
  3. 不需要改动调用方test_custom_all_reduce.pytest_tp_qknorm.py 都继承新默认值。
文件 模块 状态 重要度
python/sglang/jit_kernel/tests/utils.py 测试工具 modified 4.56

关键符号

multiprocess_test

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

评论区精华

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

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

风险与影响

风险极低:

  • 超时从 90s 增加到 240s 仅影响测试用例的等待时间,不会改变测试逻辑。
  • 如果测试本身存在死锁或无限循环,240s 后仍会失败。
  • 不会影响生产代码。
  • 长期来看,增加超时可能掩盖真正性能回归,但 PR body 已明确此为临时措施,并计划通过固定 JIT 缓存路径彻底解决。

影响范围仅限于 jit-kernel 测试套件中的 multiprocess_test 函数调用者,主要影响 test_custom_all_reducetest_tp_qknorm 两个测试文件。CI 中预期不再因冷 JIT 编译超时而失败。对用户无影响。

临时缓解措施 仅测试配套

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论