Prhub

#54753 [CI] Shard basic model initialization tests

原始 PR 作者 khluu 合并时间 2026-09-02 12:31 文件变更 1 提交数 1 评论 2 代码增减 +2 / -2

执行摘要

扩展基础模型初始化测试分片数,大幅降低 CI 耗时。

在 24 小时 CI 仪表盘窗口中,所有四个现有的 Basic Models (Extra Initialization) 分片在 P90 时均超过了 45 分钟(最快 2848 秒,最慢 3367 秒)。现有的四路 pytest 分割对于当前的模型注册表来说过于粗糙,需要通过更细粒度的分片来均衡负载,将单个分片的运行时间控制在目标值(约 20 分钟)以内。

该 PR 是一个低风险、高回报的 CI 优化调整。对于关注 CI 效率和开发流程的工程师,值得快速浏览其数据依据(PR body 中的运行时间统计)和配置变更。它展示了基于数据驱动 CI 调优的实践。

讨论亮点

本 PR 的讨论非常简略,仅包含自动化评论和维护者的批准操作。这表明变更方案清晰且风险低,得到了维护者的直接认可。

实现拆解

  1. 入口与目标:变更仅涉及 CI 配置文件 .buildkite/test_areas/models_basic.yaml,目标是调整 Basic Models (Extra Initialization) 测试任务的并行度和超时设置。
  2. 核心配置调整:将 parallelism 从 4 修改为 14,使得 pytest 的 --num-shards 参数值增加,测试用例集合被分割成更多份。同时将 timeout_in_minutes 从 100 大幅降低至 30 分钟,以反映每个分片预期运行时间的缩短。
  3. 测试命令不变:测试执行命令 pytest -v -s models/test_initialization.py -k 'not test_can_initialize_small_subset' --num-shards=$$BUILDKITE_PARALLEL_JOB_COUNT --shard-id=$$BUILDKITE_PARALLEL_JOB 保持不变,完全依赖 pytest 内置的确定性分片插件来分配测试用例。此变更不修改测试逻辑本身。
  4. 验证与影响:变更已通过 YAML 语法检查、CI 步骤 schema 校验以及针对性 CI 构建验证,所有 14 个新分片均成功通过。此变更是纯粹的 CI 配置优化,不影响应用代码、运行时行为或测试覆盖范围。
文件 模块 状态 重要度
.buildkite/test_areas/models_basic.yaml CI 配置 modified 3.78

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

评论区精华

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

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

风险与影响

  1. 资源消耗:分片数从 4 增至 14,意味着该 CI 步骤同时消耗的 GPU 资源增加了 2.5 倍。虽然单个分片的运行时间缩短了,但总体的 GPU 分钟成本会显著上升,需要团队在 CI 效率和基础设施成本之间进行权衡。
  2. 配置僵化风险:如果未来模型注册表快速增长,或出现初始化时间异常长的模型家族,14 个分片可能很快再次成为瓶颈,需要类似地再次调整。当前的调整是基于历史数据的“快照”,需要持续监控。

影响范围:仅影响 CI/CD 基础设施中的一个特定测试组。
影响程度:正面影响显著,预计能将该测试步骤的 P90 运行时间从近 1 小时缩短至 20 分钟以内,从而加快开发者获取 CI 反馈的速度。负面风险是 CI 资源消耗的增加。对最终用户和系统运行时无任何直接影响。

资源消耗增加 可能需要再次调整

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论