Prhub

#24374 [CI] Exclude flaky h20 stage from check-stage-health root cause set

原始 PR 作者 Kangyan-Zhou 合并时间 2026-05-05 02:41 文件变更 1 提交数 1 评论 0 代码增减 +6 / -0

执行摘要

排除不稳定的 h20 阶段引发级联失败

h20 运行器经常在启动时残留前序工作的 GPU 内存,且清理脚本无法回收,导致作业在运行任何测试之前即失败(如 run 25316228022 所示,所有 8 个 GPU 均报错“ERROR: memory >=10%”,且存在 8 个不可杀死的 PID)。此失败并非 PR 引入,但会被 check-stage-health 视为根因,导致其他阶段(如 h200、b200、deepep)快速失败级联。PR 目的是排除此不稳定的作业,避免影响其他正常阶段。

此 PR 是小幅 CI 可靠性改进,值得合并。建议关注 h20 运行器 GPU 残留的根本原因,并考虑更长期的修复。

讨论亮点

无实质性 review 讨论。仅有的评论来自 gemini-code-assist[bot],其表示无反馈。

实现拆解

.github/actions/check-stage-health/action.yml 中的根因失败过滤逻辑里,添加一个精确名称匹配 stage-c-test-8-gpu-h20 的早期返回 false,从而将其排除在根因集合之外。

  1. 新增条件判断:在遍历作业寻找根因失败时,首先检查作业名称是否精确等于 stage-c-test-8-gpu-h20,如果是则直接返回 false(即不视为根因)。
  2. 保留原有逻辑:修改仅影响 h20 作业,其余作业(如 h200、b200、deepep)仍按原有逻辑处理。
  3. 无其他变更:仅修改此文件,无需测试、配置或部署配套。
文件 模块 状态 重要度
.github/actions/check-stage-health/action.yml CI modified 3.25

关键源码片段

.github/actions/check-stage-health/action.yml infrastructure

核心变更文件,添加了排除 h20 作业的精确名称匹配逻辑。

# .github/actions/check-stage-health/action.yml ( 片段 )
# 在根因失败过滤循环中添加如下判断:
# h20 runners are flaky (dirty GPU state from prior runs); their failures
# should not cascade fast-fail to other stages. Exact match avoids
# accidentally matching the h200 job names.
if (j.name === 'stage-c-test-8-gpu-h20') {
  return false;
}

评论区精华

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

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

风险与影响

风险极低。改动仅一行(精确名称匹配),且仅影响 CI 控制流。若 h20 作业名称未来更改,需同步更新此文件,否则排除失效。此外,h20 作业失败仍会报告,但不再级联,这可能掩盖某些真正的根因问题(如 h20 特定代码缺陷),但鉴于失败发生在依赖安装之前,风险较小。

  • 用户/开发者:h20 阶段失败不再导致其他阶段被跳过,减少 CI 误报和重试。h20 作业本身仍会失败并显示状态。
  • 系统/CI:减少不必要的级联失败,提高 CI 效率。
  • 团队:降低因不稳定运行器导致的 CI 阻塞,但需关注 h20 运行器清理问题的根本解决方案。
依赖精确作业名称 低风险

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论