Prhub

#52322 [CI] Shard extended pooling model tests

原始 PR 作者 khluu 合并时间 2026-08-15 06:11 文件变更 1 提交数 2 评论 2 代码增减 +6 / -2

执行摘要

扩展池化测试拆 4 分片,CI 提速约 3.7 倍

该 job 是 CI 关键路径的主要瓶颈。PR body 明确说明 'Buildkite build #83851 took 72 minutes for this job. Its recent passed-run distribution is 70 minutes median, 82 minutes p90, and 112 minutes max.',并指出 'Four shards leave substantially more headroom than three shards for the 30-minute target while preserving the same test selection',目标是将该 job 压到 30 分钟以内。

值得快速浏览,作为 CI 分片模板的参考。关注点:Buildkite parallelism + %N label + 环境变量传参的组合,以及通过 ci-infra 提供 mirror.amd.parallelism 覆盖的向后兼容机制。合并前务必确认 ci-infra #473 已合入。

讨论亮点

核心讨论点在于 AMD mirror 是否分片以及并行度选择。AndreasKaratzas 在 diff 上留言 'we can shard that here too but probably with parallelism 2 (i think 4 would be too much for the amd mirror)',作者 khluu 回复 'Done in f391ffb38b. The AMD mirror now uses parallelism 2 and passes the Buildkite shard count and shard ID to pytest.'。结论是 AMD mirror 采用 2 分片,兼顾提速与资源占用,讨论已解决。

实现拆解

  1. NVIDIA 主 job 分片:在 .buildkite/test_areas/models_language.yamlLanguage Models Test (Extended Pooling) 步骤上增加 parallelism: 4,label 追加 %N 占位符,并在 pytest 命令末尾追加 --num-shards=$$BUILDKITE_PARALLEL_JOB_COUNT --shard-id=$$BUILDKITE_PARALLEL_JOB,利用 pytest 的 node ID 确定性分片实现并行。

  2. AMD mirror 分片:根据 review 中 AndreasKaratzas 的建议,作者在第二笔提交 f391ffb 中为 AMD mirror 设置 parallelism: 2,并显式定义 mirror 下的 commands,同样传入 pytest 分片参数,避免 AMD 侧过度占用 MI300 资源。

  3. 依赖与验证:该改动依赖 ci-infra #473 提供的向后兼容 mirror.amd.parallelism 覆盖能力,因此合并顺序有约束。作者在 PR body 中列出了完整验证:本地渲染 pipeline 确认 NVIDIA 4 片、AMD 2 片;targeted Buildkite run #83898 通过,4 个分片墙钟时间分别为 14.128 / 15.324 / 19.486 / 18.860 分钟,最大 19.486 分钟,比 #83851 快 3.697 倍;同时用脚本核对分片清单两两不相交且并集为 120/120 个测试节点。

文件 模块 状态 重要度
.buildkite/test_areas/models_language.yaml 测试配置 modified 4.06

分析完成后,这里会展示 LLM 生成的相对完整源码片段和详细注释。

评论区精华

AMD mirror 是否分片以及并行度选择 设计

AndreasKaratzas 在 review 中建议 AMD mirror 也分片,但 parallelism 设为 2,认为 4 对 AMD 过多。作者回应已在 f391ffb 实现 parallelism 2 并将分片参数传给 pytest。

结论:AMD mirror 采用 parallelism 2,兼顾收益与 MI300 资源占用,讨论已解决。 · 已解决

风险与影响

  • 合并顺序风险:本 PR 依赖 ci-infra #473,若其未合入,AMD mirror 的 parallelism 覆盖不被支持,可能导致 pipeline 行为不符合预期。PR body 已声明不可先合并。
  • 资源占用:NVIDIA 侧 4 个并行 job 同时占用 4 个 h200_35gb 实例,AMD 侧 2 个 mi300_1,瞬时 GPU 配额需求上升,需确认 CI 容量足够。
  • 分片确定性:pytest shard 基于测试收集顺序划分,若未来测试文件组织变化,各分片负载可能不均,但测试覆盖范围不变。
  • 超时配置:timeout 仍为 120 分钟,分片后最长 19.5 分钟,余量充足,即使分片失效回退单 job 也不会超时。
  • 对用户:无直接影响,纯 CI 内部改进。
  • 对开发团队:该 job 从 CI 关键路径缩短约 50 分钟,显著提升 Merge 队列和 PR 验证效率,且该分片模式可推广到其他长耗时 job。
  • 对 CI 资源:并行度上升,需要关注 GPU 配额;AMD mirror 分 2 片是资源与收益的折中。
依赖外部 ci-infra 合并顺序 并行 job 增加 GPU 资源消耗 pytest 分片确定性依赖 AMD mirror 配置向后兼容性

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论