执行摘要
- 一句话:迁移JIT测试CI注册到stage/runner_config模型
- 推荐动作:本PR值得CI维护者精读,特别是run_suite.py中的命名约定和skills文档的示例。设计决策上,将suite拆分为stage和runner_config提高了灵活性,但命名中嵌入硬件规格(如1-gpu-large、4-gpu-b200)可能造成耦合,后续可考虑进一步抽象。
功能与动机
为了统一CI测试的注册方式,让/rerun-test命令能够直接解析runner细节,移除遗留的suite-to-runner映射。PR body指出'Remove the /rerun-test legacy suite-to-runner mapping so CUDA dispatch resolves runner details directly from runner_config.'
实现拆解
- 修改所有JIT测试文件的注册调用:将register_cuda_ci和register_amd_ci的suite=参数替换为stage=和runner_config=两个参数。涉及约120个测试文件,如test/registered/jit/benchmark/bench_clamp_position.py等。
- 更新test/run_suite.py中CUDA套件名称列表:将kernel相关套件名称从base-b-kernel-unit-1-gpu-large等改为base-b-kernel-unit-test-1-gpu-large等,自动添加-test-中缀以匹配生成的套件名称格式。
- 更新.claude/skills/add-jit-kernel/SKILL.md和.claude/skills/write-sglang-test/SKILL.md中的示例,展示新的注册语法,并修正已变更的套件名称。
- 保留nightly套件的遗留suite=注册形式,因为它们不需要/rerun-test调度,并在_LEGACY_SUITE_TO_RUNNER_CONFIG中恢复部分映射以支持nightly/weekly的rerun调度。
- (配套)无其他核心代码变更;所有变更均限于测试注册和CI配置层面。
关键文件:
test/run_suite.py(模块 测试调度;类别 test;类型 test-coverage): 集中定义了CI套件名称列表,本PR更新了CUDA kernel相关套件名称以匹配新格式,是CI调度的核心配置。
test/registered/jit/benchmark/bench_clamp_position.py(模块 JIT基准;类别 test;类型 test-coverage): 展示了JIT测试注册调用从suite到stage/runner_config的典型迁移模式,是批改的样板文件之一。
.claude/skills/add-jit-kernel/SKILL.md(模块 技能文档;类别 docs;类型 documentation): Review中讨论了此文件的示例准确性,需更新以反映新注册语法。
关键符号:未识别
关键源码片段
test/run_suite.py
集中定义了CI套件名称列表,本PR更新了CUDA kernel相关套件名称以匹配新格式,是CI调度的核心配置。
# run_suite.py - 更新后的 CUDA 套件名称列表(片段)
# 变更:kernel 套件名称增加了 -test- 中缀
CUDA_SUITES = [
'base-a-test-1-gpu-small',
'base-b-test-1-gpu-small',
'base-b-test-1-gpu-large',
'base-b-test-2-gpu-large',
'base-b-test-4-gpu-b200',
# 以下四个名称发生了变更:
'base-b-kernel-unit-test-1-gpu-large', # 原 base-b-kernel-unit-1-gpu-large
'base-b-kernel-unit-test-4-gpu-b200', # 原 base-b-kernel-unit-1-gpu-b200
'base-b-kernel-unit-test-8-gpu-h200', # 原 base-b-kernel-unit-8-gpu-h200
'base-b-kernel-benchmark-test-1-gpu-large', # 原 base-b-kernel-benchmark-1-gpu-large
# ... 其余未变更
]
test/registered/jit/benchmark/bench_clamp_position.py
展示了JIT测试注册调用从suite到stage/runner_config的典型迁移模式,是批改的样板文件之一。
# bench_clamp_position.py - 注册调用迁移
from sglang.test.ci.ci_register import register_amd_ci, register_cuda_ci
# 迁移前:register_cuda_ci(est_time=13, suite='base-b-kernel-benchmark-1-gpu-large')
# 迁移后:使用 stage 和 runner_config 参数
register_cuda_ci(
est_time=13, stage='base-b-kernel-benchmark', runner_config='1-gpu-large'
)
register_amd_ci(est_time=16, stage='jit-kernel-unit', runner_config='amd')
评论区精华
在Review中,hnyls2002提出两个问题:
风险与影响
- 风险:主要风险在于套件名称变更可能导致CI工作流无法匹配正确的runner,造成测试被跳过或失败。具体地,b200的runner配置映射可能不正确(历史上1-gpu-b200实际上使用4-gpu-b200的runner),需要验证runner_configs.yml中的配置。此外,skills文档中的示例若未完全同步可能误导开发者。需确保_LEGACY_SUITE_TO_RUNNER_CONFIG覆盖了所有必要的nightly套件。
- 影响:对用户无直接影响。对开发团队,JIT测试的CI注册方式更新,需要在新测试文件中使用stage和runner_config参数;旧的suite参数不再被支持(pr-test工作流)。/rerun-test命令现在能直接根据新注册信息调度测试,提高了调试效率。套件名称的标准化有助于CI趋势监控。
- 风险标记:套件名称可能不匹配, runner配置映射不一致, skills文档示例可能过时
关联脉络
参与讨论