Prhub

#22557 fix: track est_time per suite instead of per backend

原始 PR 作者 ch-wan 合并时间 2026-04-11 07:58 文件变更 1 提交数 1 评论 1 代码增减 +36 / -17

执行摘要

修复 CI 测试时间估算脚本,按测试套件而非后端硬件区分时间统计。

PR #22545引入的每周update_est_time.py脚本按(filename, backend)键统计时间,导致同一文件在不同测试套件(如H100与B200硬件)上获得相同est_time值,如PR #22550中test_gpt_oss_4gpu.py在stage-c-test-4-gpu-h100和stage-c-test-4-gpu-b200套件上都错误地使用了est_time=304。这影响了CI负载均衡的准确性,因为不同硬件上的执行时间实际不同。

该PR值得CI/基础设施维护者精读,展示了如何从CI日志中提取和关联元数据以优化资源调度。关注点:

  1. job_name_to_suite函数的设计如何平衡灵活性与鲁棒性。
  2. 从backend到suite的键变更如何影响时间数据聚合粒度。
讨论亮点

无review评论,PR由作者直接合并。从提交信息和PR body看,变更逻辑清晰,直接修复了PR #22545引入的问题。

实现拆解

修改仅涉及scripts/ci/update_est_time.py文件:

  1. 新增job_name_to_suite函数,使用正则表达式从CI任务名(如"stage-c-test-4-gpu-h100 (2)")中提取套件名(去除分区后缀" (N)")。
  2. 将collect_timings函数中的时间统计键从(relative_path, backend)改为(relative_path, suite),确保按套件区分时间数据。
  3. 更新相关注释和函数文档,明确说明按套件而非后端统计。
  4. 在update_est_times函数中,通过匹配函数名和suite参数,确保每个register_cuda_ci调用获得正确的套件特定时间中位数。
文件 模块 状态 重要度
scripts/ci/update_est_time.py CI/ 基础设施 modified 10.0

关键符号

job_name_to_suite collect_timings update_est_times

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

评论区精华

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

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

风险与影响

风险较低:

  1. 回归风险:修改仅影响时间统计逻辑,不涉及核心推理或测试逻辑,但若job_name_to_suite函数正则表达式错误,可能导致套件名提取不准确,影响时间估算。
  2. 兼容性:依赖CI任务命名规范(如包含" (N)"分区后缀),若命名变更可能失效。
  3. 测试覆盖:PR body中未添加单元测试,依赖现有CI验证。

影响范围有限但重要:

  1. 对系统:修复CI时间估算准确性,提升负载均衡效果,避免因错误时间估算导致测试队列不平衡。
  2. 对用户:无直接影响,但间接改善开发体验(更可靠的CI运行时间)。
  3. 对团队:确保后续自动生成的PR(如PR #22550)中est_time值正确反映不同硬件性能差异。
依赖外部命名规范 缺少单元测试

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论