执行摘要
- 一句话:根据夜间CI数据调整所有测试域的超时时间
- 推荐动作:建议合并。该 PR 采用数据驱动方法精确调整超时,值得借鉴。未来可增加更频繁的自动调整机制。
功能与动机
PR body 指出:many premerge timeouts are either well below the real runtime (risking spurious timeouts) or heavily over-provisioned (a hung job sits idle a long time before failing),因此需要根据夜间实际运行数据精确调整超时。
实现拆解
- 从 nightly full CI build (77252) 获取每个 step 的实际运行时长(observed = finished_at - started_at),仅统计成功运行的 step。
- 对于 sharded 步骤(parallelism/%N),使用所有 shard 的 max runtime。
- 对主步骤应用公式 round_up_to_5(observed + 15);对 AMD 镜像步骤应用 round_up_to_5(observed + 35)(额外+20缓冲)。
- 修改 30 个 .yaml 文件中对应 step 的 timeout_in_minutes 字段,保持其他配置不变。
- AMD 额外缓冲是由于其运行在 off-AWS 环境,网络和共享资源波动大,且 HuggingFace 数据下载缓存问题 (#36951) 仍存在。
关键文件:
.buildkite/test_areas/engine.yaml(模块 CI配置;类别 config;类型 configuration): 包含核心测试步骤的超时调整(Engine, e2e Scheduling, e2e Core等),体现了主公式和AMD公式的应用
.buildkite/test_areas/kernels.yaml(模块 CI配置;类别 config;类型 configuration): 涉及多个GPU内核测试的超时调整,如Kernels Core Operation Test从75分钟增加到120分钟
.buildkite/test_areas/lm_eval.yaml(模块 CI配置;类别 config;类型 configuration): 展示了大幅缩减超时的例子(如LM Eval Large Models (8xH200)从60分钟降到50分钟,AMD镜像从180分钟降到60分钟)
.buildkite/test_areas/misc.yaml(模块 CI配置;类别 config;类型 configuration): 包含Miscellaneous组多个步骤的超时调整,如V1 Core + KV + Metrics从30分钟增加到60分钟
.buildkite/test_areas/models_language.yaml(模块 CI配置;类别 config;类型 configuration): 语言模型测试组的超时调整,如Extended Generation从110分钟降至65分钟
关键符号:未识别
评论区精华
AndreasKaratzas 建议为 AMD 测试组增加额外的20分钟缓冲,理由是 AMD 环境不在 AWS 上,网络和共享资源波动大,且 HuggingFace 数据下载缓存问题未解决。khluu 响应已更新,最终 AMD 步骤的缓冲从15分钟增加到35分钟。
- 为AMD测试组增加额外20分钟缓冲 (other): khluu 接受建议,为所有AMD步骤额外增加了20分钟缓冲(总缓冲35分钟)。
风险与影响
- 风险:主要风险是超时调整基于单次 nightly 运行数据,可能不具完全代表性;少数 step 的超时被大幅缩短(例如从120分钟降到45分钟),极端情况下可能仍不足。但公式提供了缓冲,且 AMD 有额外缓冲,风险较低。需持续监控 CI 稳定性。
- 影响:对用户无直接影响。对 CI 系统:减少因超时设置过短导致的误报失败,提高 CI 可靠性;同时减少挂起作业的等待时间(对于之前超时设置过长的 step)。对团队:CI 更稳定,减少不必要的重试,提升开发效率。
- 风险标记:依赖单次nightly观测数据, AMD环境波动性, 部分步骤超时大幅缩减
关联脉络
- PR #36951 HuggingFace data download caching issue: AMD额外缓冲的原因之一,该issue仍在开放
- PR #48161 [CI] Increase extract hidden states TP2 timeout: 类似超时调整,但针对单个测试
参与讨论