执行摘要
此 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 内核模块的持续优化。这些关联揭示仓库正逐步统一测试框架,提升自动化水平。
参与讨论