Prhub

#2230 fix(ci): disable MI300X runner jobs

原始 PR 作者 guapisolo 合并时间 2026-08-06 16:51 文件变更 8 提交数 3 评论 0 代码增减 +8 / -0

执行摘要

禁用 MI300X CI 调度,8 个 ROCm 用例标记 disabled

PR body 指出症状是授权门允许每个 ROCm 触发下产生两个 stage-c-4-gpu-mi300x shard;根因是 stage-c-4-gpu-mi300x.if 只检查 self-hosted 授权,而 pr-test-rocm.yml 把 PR、nightly、manual 全部暴露给该 job。作者明确这是 operational containment and does not diagnose runner failures,即不诊断 runner 故障,先切断调度让 CI 恢复可用。

该 PR 本身不值得精读(单行重复变更),但值得关注其背后的运维决策:用一个注册层的 disabled 参数实现整条 CI 流水线的开关,既保留配置又避免改动 workflow。建议团队为恢复动作建一个跟踪 issue,并在 MI300X runner 稳定后逐例恢复并回填禁用原因。

讨论亮点

本 PR 无 review 评论(comments_count=0review_comments_count=0)。PR body 中作者自定的审查焦点是:① 确认 stage-c-4-gpu-mi300x.if 在每种触发下都跳过 MI300X runner;② 确认 docs/ci/00-stage.md 的 dormant-stage 措辞与 false gate 一致。

实现拆解

  1. 变更入口:8 个修改文件全部是 tests/ 下的 ROCm e2e 注册文件,统一在 register_rocm_ci(...) 调用中追加 disabled="Disable due to failure"
  2. 作用机制register_rocm_citests/ci/ci_register.py 提供的注册函数(该文件不在本次改动内),disabled 参数使该用例在 stage-c-4-gpu-mi300x 收集时被排除,从调度源头上不生成 MI300X shard。
  3. 覆盖范围:DeepSeek V4 Flash、GLM-5.2、Inkling、Qwen3-4B FSDP hybrid shard、GLM-4.7-Flash R3 MTP、Qwen3-30B-A3B DeepEP FP8 bridge、Qwen3-4B offload disk stream、Qwen3.5-35B-A3B MTP1 共 8 个用例。
  4. 演进过程:3 个 commit 显示最初还包含 workflow 文档与 run-suite 回归测试改动,最终 commit 明确 "Remove the workflow documentation and run-suite regression-test changes",收敛为纯注册层的最小变更。
  5. 测试配套:PR body 声称新增 TestRocmWorkflowScopeSeam::test_stage_is_disabled_and_preserves_configuration 并跑过 71 个测试,但最终 diff 未包含该测试文件(可能已存在于代码库或未合入),需要确认。
文件 模块 状态 重要度
tests/e2e/megatron/model_scripts/test_deepseek_v4_flash_4layer_ci.py 模型脚本 modified 3.81
tests/e2e/megatron/model_scripts/test_glm5_2_744b_a40b_5layer_ci.py 模型脚本 modified 3.81
tests/e2e/megatron/model_scripts/test_inkling_small_4layer_ci.py 模型脚本 modified 3.81
tests/e2e/fsdp/test_qwen3_4B_fsdp_hybrid_shard_r2s2.py FSDP modified 3.46
tests/e2e/megatron/test_glm47_flash/test_amd_r3_mtp.py AMD modified 3.46
tests/e2e/megatron/test_qwen3_30B_A3B/test_amd_deepep_fp8_bridge.py AMD modified 3.46
tests/e2e/megatron/test_qwen3_4B_offload_disk_stream.py 卸载流 modified 3.46
tests/e2e/megatron/test_qwen3_5_35B_A3B_mtp/test_amd_mtp1_spec_v2_r3.py AMD modified 3.46

关键源码片段

tests/e2e/megatron/model_scripts/test_deepseek_v4_flash_4layer_ci.py test-coverage

DeepSeek V4 Flash 4 layer CI 的 ROCm 注册入口,追加 disabled 后 MI300X 不再调度,是本次变更的代表文件。

from tests.ci.ci_register import register_cuda_ci, register_rocm_ci# CUDA(H200)用例保持启用,继续在 stage-c-4-gpu-h200 运行
register_cuda_ci(
    est_time=1900,
    suite="stage-c-4-gpu-h200",
    labels=["megatron", "model-scripts"],
)# ROCm(MI300X)用例:`disabled` 参数在注册层把该 stage 标记为禁用,
# PR / nightly / manual 三种触发下都不会再调度 stage-c-4-gpu-mi300x 分片,
# 但用例定义与 runner 配置原样保留,便于后续单独恢复。
register_rocm_ci(
    est_time=1900,
    suite="stage-c-4-gpu-mi300x",
    labels=["megatron", "model-scripts", "amd"],
    disabled="Disable due to failure",
)# 训练指标门保持不变,等恢复调度后继续兜底
register_ci_gate(metric_key="train/grad_norm")

评论区精华

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

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

风险与影响

  1. 覆盖空洞:所有 MI300X 相关回归(含 AMD 专用 MTP、DeepEP FP8 bridge、Qwen3.5 35B A3B MTP 等)在 CI 中静默跳过,AMD 侧回归将无人值守,属于典型 CI 静默降级。
  2. 故障信息丢失:8 个用例统一使用 "Disable due to failure" 作为禁用理由,未区分各自的具体故障,后续逐例恢复时需要重新诊断。
  3. 恢复成本:8 个文件分散在 model-scripts、FSDP、AMD 等不同 suite,未来恢复需逐一移除 disabled 参数,若没有跟踪手段容易遗漏。
  4. 影响面:仅影响 CI 调度,对训练、rollout 等运行时无影响,风险等级较低。

影响范围集中在 CI 基础设施:MI300X 自托管 runner 将不再被任何 ROCm 触发(PR / nightly / manual)调度,相关 8 个 AMD e2e 用例进入休眠状态。对用户而言,AMD 硬件上的回归验证缺口变大;对系统而言,CI 队列压力下降但覆盖完整性受损;对团队而言,需要一个显式的恢复计划,否则 MI300X 支持会长期处于无人验证状态。

CI 静默降级 AMD 回归覆盖空洞 恢复需逐例处理

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论