Prhub

#21239 Refactor JIT kernel CI to use run_suite.py registration system

sgl-project/sglang · 作者 merrymercy · 合并时间 2026-03-24 12:17

分析状态 已生成
文件变更 63提交数 3 · 评论 2
代码增减 +312 / -87
ci test refactor jit-kernel

执行摘要

将 JIT 内核 CI 迁移到中央化注册系统,提升测试可维护性。

根据 PR body,迁移是为了使用中央化的 run_suite.py + register_cuda_ci 注册系统,以提高 CI 的一致性和可管理性。具体目标是替换原始的 pytest/shell 调用,简化测试发现和运行,并引入新的测试套件(如 stage-b-kernel-unit-1-gpu-large)以更好组织测试。

建议技术管理者关注此 PR 以了解 CI 注册系统的演进,工程师可精读 test/run_suite.py 的修改和 register_cuda_ci 的调用模式,作为未来添加测试的参考。设计决策值得学习,包括套件划分、测试时间估算和禁用处理。

讨论亮点

本 PR 没有 review 评论,因此无讨论内容。

实现拆解

实现分为三个主要模块:1) CI 配置文件:修改 .github/workflows/pr-test-jit-kernel.yml,将测试运行命令从直接调用 pytest 改为使用 run_suite.py;在 .github/workflows/nightly-test-nvidia.yml 中添加新作业 nightly-test-kernel-1-gpu-h100 以支持夜间测试。2) 测试文件注册:在 python/sglang/jit_kernel/tests/ 和 benchmark/ 下的 58 个文件中添加 register_cuda_ci 调用,指定测试时间、套件和禁用状态(如需要多 GPU 的测试)。3) 测试发现扩展:修改 test/run_suite.py,扩展 glob 模式以发现 JIT 内核测试和基准测试文件,确保它们能被 run_suite.py 自动收集。此外,修复了 test_nvfp4_*.py 中的 main 守卫和 test_custom_all_reduce.py 的调度逻辑。

文件 模块 状态 重要度
.github/workflows/pr-test-jit-kernel.yml CI modified 8.0
.github/workflows/nightly-test-nvidia.yml CI modified 7.0
test/run_suite.py 测试框架 modified 8.0
python/sglang/jit_kernel/tests/test_add_constant.py JIT 内核测试 modified 6.0
python/sglang/jit_kernel/benchmark/bench_awq_dequantize.py JIT 内核基准测试 modified 6.0

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

评论区精华

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

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

风险与影响

风险包括:1) 回归风险:更改测试运行方式(从 pytest 到 run_suite.py)可能导致某些测试被遗漏或运行失败,需验证所有测试套件正确发现;具体到 test/run_suite.py 的 glob 扩展,若路径匹配错误可能影响其他测试。2) 性能风险:新增的夜间测试作业(nightly-test-kernel-1-gpu-h100)可能增加 CI 运行时间,需监控超时设置(timeout-minutes: 240)。3) 兼容性风险:注册系统依赖统一的 register_cuda_ci 调用,若测试文件缺少调用或参数错误(如 est_time 不准确),可能导致 CI 任务失败或资源浪费。4) 维护风险:删除 scripts/version_branch_to_tag.sh 可能影响发布流程,但该文件似乎已过时(参考相关 PR 21231)。

影响范围:1) 用户:开发者运行 CI 测试时,将使用更统一的命令,简化调试;但需确保测试文件已正确注册。2) 系统:CI 管道更一致,测试发现更自动化,可能提高测试覆盖率和可靠性;夜间测试扩展增强了 JIT 内核的全面验证。3) 团队:减少维护多个独立测试脚本的开销,促进代码复用;影响程度中等,主要限于测试基础设施,不涉及核心业务逻辑。

测试流程变更 依赖中央系统 可能遗漏测试 CI 时间增加

关联 Issue

未识别关联 Issue

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

完整报告

执行摘要

此 PR 将 JIT 内核的 CI 测试从原始的 pytest/shell 调用迁移到中央化的 run_suite.py 注册系统,引入了三个新测试套件(如 stage-b-kernel-unit-1-gpu-large),并在 58 个测试和基准测试文件中添加了 register_cuda_ci 调用。这提升了测试可维护性和一致性,但需注意回归风险和 CI 时间变化。建议关注注册系统的设计模式。

功能与动机

迁移是为了使用中央化的 run_suite.py + register_cuda_ci 注册系统,以解决原始测试调用分散、难以管理的问题。根据 PR body,目标包括简化测试发现、统一运行命令,并支持夜间测试的扩展(通过 SGLANG_JIT_KERNEL_RUN_FULL_TESTS 环境变量)。例如,PR 中写道:"Migrate pr-test-jit-kernel.yml from raw pytest/shell invocation to the centralized run_suite.py + register_cuda_ci registration system",强调提升 CI 的可维护性。

实现拆解

按模块拆解关键改动:

  • CI 配置文件
    • .github/workflows/pr-test-jit-kernel.yml:将 pytest 命令替换为 python3 run_suite.py --hw cuda --suite <套件名>
    • .github/workflows/nightly-test-nvidia.yml:新增 nightly-test-kernel-1-gpu-h100 作业,设置完整测试网格。
  • 测试文件注册:在 python/sglang/jit_kernel/tests/benchmark/ 下的文件中添加 register_cuda_ci 调用,例如:
    python from sglang.test.ci.ci_register import register_cuda_ci register_cuda_ci(est_time=45, suite="stage-b-kernel-unit-1-gpu-large")
  • 测试发现扩展:修改 test/run_suite.py,扩展 glob 以包含 JIT 内核测试:
    python files += glob.glob(os.path.join(jit_kernel_dir, "tests", "test_*.py")) files += glob.glob(os.path.join(jit_kernel_dir, "benchmark", "bench_*.py"))
  • 其他修复:例如,在 test_custom_all_reduce.py 中添加 __main__ 守卫以正确处理分布式测试。

评论区精华

本 PR 没有 review 评论,因此无讨论内容。

风险与影响

风险

  • 回归风险:测试运行方式变更可能导致某些测试被遗漏,需验证 run_suite.py 的 glob 扩展是否正确。
  • 性能风险:新增夜间测试作业可能延长 CI 运行时间,需监控超时设置(当前为 240 分钟)。
  • 兼容性风险:若测试文件缺少或错误调用 register_cuda_ci,可能导致 CI 失败。
  • 维护风险:删除 scripts/version_branch_to_tag.sh 可能影响发布流程,但该文件似乎已过时。

影响

  • 对用户:开发者运行测试更统一,但需确保测试文件注册正确。
  • 对系统:CI 管道更一致,测试覆盖更全面,夜间测试增强验证。
  • 对团队:减少维护开销,促进代码复用,影响中等限于测试基础设施。

关联脉络

与历史 PR 的关联显示更大的 CI 重构趋势:

  • PR 21219 拆分了 CI 测试工作流,为本 PR 修改 pr-test-jit-kernel.yml 奠定了基础。
  • PR 21264 更新了文档以适配新注册系统,表明跨 PR 的协同演进。
  • 近期 PR 如 21188(JIT 内核性能改进)可能间接影响本 PR 的测试覆盖,显示 JIT 内核模块的持续优化。这些关联揭示仓库正逐步统一测试框架,提升自动化水平。

参与讨论