执行摘要
- 一句话:拆分 JIT 内核单元测试为两个分区
- 推荐动作:该 PR 是 CI 基础设施的稳健性改进,值得快速合入。对阅读者而言,值得关注
run_suite.py 的自动分区机制(LPT 算法),作为后续类似 CI 优化的参考。若后续仍出现超时,可考虑增加分区数量或优化测试时长估算。
功能与动机
JIT 内核单元测试套件在多个 runner 上间歇性达到 30 分钟步骤超时(如 action runs 33076953593 和 33130734311),而成功的运行耗时 27m59s,仅剩约两分钟余量。超时发生在不同主机上,且显示活跃的 JIT 编译。拆分套件旨在对冷 JIT 变异更稳健,同时降低墙钟延迟。
实现拆解
- 定位变更入口:修改
.github/workflows/pr-test-jit-kernel.yml 中的 jit-kernel-unit-test 作业。
- 引入矩阵策略:为作业添加
strategy 块,设置 fail-fast: false 和 matrix.partition: [0, 1],使两个分区独立运行并分别报告结果,避免一个分区失败导致另一个分区被取消。
- 使用自动分区器:将运行命令更新为
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(最长处理时间)自动分区功能,根据预估运行时间在各分区之间均衡测试负载。
- 保持超时与配置:保留每个分区的 30 分钟超时,以及作业整体的
timeout-minutes: 240 设置,确保即使在 JIT 编译波动情况下也有足够缓冲。
- 验证配套:该 PR 仅涉及 CI 配置变更,无源码或测试逻辑改动,但通过 YAML 解析、
git diff --check 和 pre-commit 检查验证了配置正确性。
关键文件:
.github/workflows/pr-test-jit-kernel.yml(模块 CI 配置;类别 infra;类型 infrastructure): 唯一变更文件,通过引入矩阵策略和自动分区器拆分 JIT 内核单元测试,解决 CI 超时问题。
关键符号:未识别
关键源码片段
.github/workflows/pr-test-jit-kernel.yml
唯一变更文件,通过引入矩阵策略和自动分区器拆分 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
评论区精华
无 review 评论或讨论。该 PR 由 Codex 生成,只有维护者 Kangyan-Zhou 在合并前触发了 '/tag-and-rerun-ci' 重新运行 CI,未发现技术争议。
风险与影响
- 风险:
- 分区均衡风险:自动分区器依赖注册的预估运行时间,若测试时长估算不准,可能导致分区不均衡,一个分区仍可能超时。
- fail-fast 禁用影响:禁用 fail-fast 会提高资源消耗(两个分区即使一个失败也会跑完),但能提供更完整的测试结果。
- 配置错误风险:修改了命令和矩阵,若 YAML 语法错误或参数不兼容
run_suite.py,会导致 CI 作业无法启动。不过已通过本地检查验证。
- 影响:用户无直接体验影响。对内部 CI 系统:JIT 内核测试作业的稳定性提升,避免因超时导致假失败,排障效率提高;两个分区并行执行,缩短了测试阶段的总墙钟时间,加快PR 合并流程。对团队:维护者无需频繁重跑 CI。
- 风险标记:配置变更, 依赖自动分区估算
关联脉络
参与讨论