Prhub

#36775 CI: split JIT kernel unit tests into two partitions

原始 PR 作者 nvpohanh 合并时间 2026-08-29 00:32 文件变更 1 提交数 1 评论 1 代码增减 +8 / -1

执行摘要

拆分 JIT 内核单元测试为两个分区

JIT 内核单元测试套件在多个 runner 上间歇性达到 30 分钟步骤超时(如 action runs 33076953593 和 33130734311),而成功的运行耗时 27m59s,仅剩约两分钟余量。超时发生在不同主机上,且显示活跃的 JIT 编译。拆分套件旨在对冷 JIT 变异更稳健,同时降低墙钟延迟。

该 PR 是 CI 基础设施的稳健性改进,值得快速合入。对阅读者而言,值得关注 run_suite.py 的自动分区机制(LPT 算法),作为后续类似 CI 优化的参考。若后续仍出现超时,可考虑增加分区数量或优化测试时长估算。

讨论亮点

无 review 评论或讨论。该 PR 由 Codex 生成,只有维护者 Kangyan-Zhou 在合并前触发了 '/tag-and-rerun-ci' 重新运行 CI,未发现技术争议。

实现拆解

  1. 定位变更入口:修改 .github/workflows/pr-test-jit-kernel.yml 中的 jit-kernel-unit-test 作业。
  2. 引入矩阵策略:为作业添加 strategy 块,设置 fail-fast: falsematrix.partition: [0, 1],使两个分区独立运行并分别报告结果,避免一个分区失败导致另一个分区被取消。
  3. 使用自动分区器:将运行命令更新为 python3 run_suite.py --hw cuda --suite base-b-kernel-unit-test-1-gpu-large --auto-partition-id ${{ matrix.partition }} --auto-partition-size 2,利用 run_suite.py 的 LPT(最长处理时间)自动分区功能,根据预估运行时间在各分区之间均衡测试负载。
  4. 保持超时与配置:保留每个分区的 30 分钟超时,以及作业整体的 timeout-minutes: 240 设置,确保即使在 JIT 编译波动情况下也有足够缓冲。
  5. 验证配套:该 PR 仅涉及 CI 配置变更,无源码或测试逻辑改动,但通过 YAML 解析、git diff --check 和 pre-commit 检查验证了配置正确性。
文件 模块 状态 重要度
.github/workflows/pr-test-jit-kernel.yml CI 配置 modified 3.77

关键源码片段

.github/workflows/pr-test-jit-kernel.yml infrastructure

唯一变更文件,通过引入矩阵策略和自动分区器拆分 JIT 内核单元测试,解决 CI 超时问题。

# .github/workflows/pr-test-jit-kernel.yml ( 节选 )jit-kernel-unit-test:
  # ... 前略 ...
  strategy:
    fail-fast: false # 一个分区失败不取消另一分区,确保两边结果都上报
    matrix:
      partition: [0, 1] # 两个独立分区,分别跑不同测试子集
  runs-on: 1-gpu-h100
  timeout-minutes: 240
  steps:
    # ... 安装步骤略 ...
    - name: Run unit tests
      timeout-minutes: 30 # 每个分区独立 30 分钟超时,降低冷 JIT 带来的超时风险
      run: |
        cd test/
        # 使用 run_suite.py 的 LPT 自动分区器,按预估运行时间将测试均衡到两个分区
        python3 run_suite.py --hw cuda \
          --suite base-b-kernel-unit-test-1-gpu-large \
          --auto-partition-id ${{ matrix.partition }} \
          --auto-partition-size 2

评论区精华

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

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

风险与影响

  1. 分区均衡风险:自动分区器依赖注册的预估运行时间,若测试时长估算不准,可能导致分区不均衡,一个分区仍可能超时。
  2. fail-fast 禁用影响:禁用 fail-fast 会提高资源消耗(两个分区即使一个失败也会跑完),但能提供更完整的测试结果。
  3. 配置错误风险:修改了命令和矩阵,若 YAML 语法错误或参数不兼容 run_suite.py,会导致 CI 作业无法启动。不过已通过本地检查验证。

用户无直接体验影响。对内部 CI 系统:JIT 内核测试作业的稳定性提升,避免因超时导致假失败,排障效率提高;两个分区并行执行,缩短了测试阶段的总墙钟时间,加快PR 合并流程。对团队:维护者无需频繁重跑 CI。

配置变更 依赖自动分区估算

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论