Prhub

#29066 [CI] Migrate JIT tests to runner config registration

原始 PR 作者 kpham-sgl 合并时间 2026-06-30 10:12 文件变更 128 提交数 6 评论 15 代码增减 +274 / -188

执行摘要

迁移 JIT 测试 CI 注册到 stage/runner_config 模型

为了统一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.'

本PR值得CI维护者精读,特别是run_suite.py中的命名约定和skills文档的示例。设计决策上,将suite拆分为stage和runner_config提高了灵活性,但命名中嵌入硬件规格(如1-gpu-large、4-gpu-b200)可能造成耦合,后续可考虑进一步抽象。

讨论亮点

在Review中,hnyls2002提出两个问题:

  • 技能文档中的base-b-kernel-unit-test-4-gpu-b200可能过时,因为历史上1-gpu-b200的runner配置实际上使用了4-gpu-b200的runner。
  • 建议将stage名称与runner配置解耦,不在注册语句中嵌入硬件规格(如large、2-gpu)。
    kpha-sgl回应称nightly迁移将在另一个PR进行,runner配置问题需后续确认。

实现拆解

  1. 修改所有JIT测试文件的注册调用:将register_cuda_ci和register_amd_ci的suite=参数替换为stage=和runner_config=两个参数。涉及约120个测试文件,如test/registered/jit/benchmark/bench_clamp_position.py等。
  2. 更新test/run_suite.py中CUDA套件名称列表:将kernel相关套件名称从base-b-kernel-unit-1-gpu-large等改为base-b-kernel-unit-test-1-gpu-large等,自动添加-test-中缀以匹配生成的套件名称格式。
  3. 更新.claude/skills/add-jit-kernel/SKILL.md和.claude/skills/write-sglang-test/SKILL.md中的示例,展示新的注册语法,并修正已变更的套件名称。
  4. 保留nightly套件的遗留suite=注册形式,因为它们不需要/rerun-test调度,并在_LEGACY_SUITE_TO_RUNNER_CONFIG中恢复部分映射以支持nightly/weekly的rerun调度。
  5. (配套)无其他核心代码变更;所有变更均限于测试注册和CI配置层面。
文件 模块 状态 重要度
test/run_suite.py 测试调度 modified 4.05
test/registered/jit/benchmark/bench_clamp_position.py JIT 基准 modified 4.19
.claude/skills/add-jit-kernel/SKILL.md 技能文档 modified 3.0

关键源码片段

test/run_suite.py test-coverage

集中定义了 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 test-coverage

展示了 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')

评论区精华

b200 runner 配置一致性 question

hnyls2002 指出 .claude/skills/add-jit-kernel/SKILL.md 中的 base-b-kernel-unit-test-4-gpu-b200 可能过时,因为历史上 1-gpu-b200 的 runner 配置实际上使用了 4-gpu-b200 的 runner。

结论:kpham-sgl 表示不确定,并指出 runner_configs.yml 中可能只有 4-gpu-b200,需后续确认。 · unresolved

stage 名称与 runner 配置解耦 设计

hnyls2002 建议将 stage 名称与 runner 配置解耦,不在注册语句中嵌入硬件规格(如 large、2-gpu)。

结论:kpham-sgl 同意该方向,但表示 nightly 迁移将在另一个 PR 进行。 · partially resolved

风险与影响

主要风险在于套件名称变更可能导致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 文档示例可能过时

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论