执行摘要
- 一句话:禁用 MI300X CI 调度,8 个 ROCm 用例标记 disabled
- 推荐动作:该 PR 本身不值得精读(单行重复变更),但值得关注其背后的运维决策:用一个注册层的
disabled 参数实现整条 CI 流水线的开关,既保留配置又避免改动 workflow。建议团队为恢复动作建一个跟踪 issue,并在 MI300X runner 稳定后逐例恢复并回填禁用原因。
功能与动机
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 恢复可用。
实现拆解
- 变更入口:8 个修改文件全部是
tests/ 下的 ROCm e2e 注册文件,统一在 register_rocm_ci(...) 调用中追加 disabled="Disable due to failure"。
- 作用机制:
register_rocm_ci 是 tests/ci/ci_register.py 提供的注册函数(该文件不在本次改动内),disabled 参数使该用例在 stage-c-4-gpu-mi300x 收集时被排除,从调度源头上不生成 MI300X shard。
- 覆盖范围: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 个用例。
- 演进过程:3 个 commit 显示最初还包含 workflow 文档与 run-suite 回归测试改动,最终 commit 明确 "Remove the workflow documentation and run-suite regression-test changes",收敛为纯注册层的最小变更。
- 测试配套:PR body 声称新增
TestRocmWorkflowScopeSeam::test_stage_is_disabled_and_preserves_configuration 并跑过 71 个测试,但最终 diff 未包含该测试文件(可能已存在于代码库或未合入),需要确认。
关键文件:
tests/e2e/megatron/model_scripts/test_deepseek_v4_flash_4layer_ci.py(模块 模型脚本;类别 test;类型 test-coverage): DeepSeek V4 Flash 4 layer CI 的 ROCm 注册入口,追加 disabled 后 MI300X 不再调度,是本次变更的代表文件。
tests/e2e/megatron/model_scripts/test_glm5_2_744b_a40b_5layer_ci.py(模块 模型脚本;类别 test;类型 test-coverage): GLM-5.2 744B A40B 5 layer smoke 测试的 ROCm 注册被禁用,属于模型脚本 suite 内的高价值 AMD 用例。
tests/e2e/megatron/model_scripts/test_inkling_small_4layer_ci.py(模块 模型脚本;类别 test;类型 test-coverage): Inkling Small 4 layer 全参数训练 CI 的 ROCm 注册被禁用,影响多模态模型在 AMD 侧的覆盖。
tests/e2e/fsdp/test_qwen3_4B_fsdp_hybrid_shard_r2s2.py(模块 FSDP;类别 test;类型 test-coverage): FSDP hybrid shard 的 R2S2 e2e 用例 ROCm 注册被禁用,FSDP 后端在 MI300X 上的验证暂时缺席。
tests/e2e/megatron/test_glm47_flash/test_amd_r3_mtp.py(模块 AMD;类别 test;类型 test-coverage): GLM-4.7-Flash 的 AMD 专属 R3 + MTP 4 GPU 用例被禁用,该用例是 MI300X 双 4 GPU runner 拆分后的专项覆盖。
tests/e2e/megatron/test_qwen3_30B_A3B/test_amd_deepep_fp8_bridge.py(模块 AMD;类别 test;类型 test-coverage): Qwen3-30B-A3B 的 AMD 专属 DeepEP + FP8 bridge 用例被禁用,直接影响 AMD 上 MoE 与 FP8 关键路径的 CI 验证。
tests/e2e/megatron/test_qwen3_4B_offload_disk_stream.py(模块 卸载流;类别 test;类型 test-coverage): Qwen3-4B offload disk stream 用例的 ROCm 注册被禁用,磁盘流式 offload 在 MI300X 上的覆盖暂时中断。
tests/e2e/megatron/test_qwen3_5_35B_A3B_mtp/test_amd_mtp1_spec_v2_r3.py(模块 AMD;类别 test;类型 test-coverage): Qwen3.5-35B-A3B 的 AMD 专属 MTP1 + Spec V2 + R3 用例被禁用,该用例验证 AMD 上的 spec decoding 行为。
关键符号:未识别
关键源码片段
tests/e2e/megatron/model_scripts/test_deepseek_v4_flash_4layer_ci.py
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")
评论区精华
本 PR 无 review 评论(comments_count=0、review_comments_count=0)。PR body 中作者自定的审查焦点是:① 确认 stage-c-4-gpu-mi300x.if 在每种触发下都跳过 MI300X runner;② 确认 docs/ci/00-stage.md 的 dormant-stage 措辞与 false gate 一致。
风险与影响
- 风险:
- 覆盖空洞:所有 MI300X 相关回归(含 AMD 专用 MTP、DeepEP FP8 bridge、Qwen3.5 35B A3B MTP 等)在 CI 中静默跳过,AMD 侧回归将无人值守,属于典型 CI 静默降级。
- 故障信息丢失:8 个用例统一使用 "Disable due to failure" 作为禁用理由,未区分各自的具体故障,后续逐例恢复时需要重新诊断。
- 恢复成本:8 个文件分散在 model-scripts、FSDP、AMD 等不同 suite,未来恢复需逐一移除
disabled 参数,若没有跟踪手段容易遗漏。
- 影响面:仅影响 CI 调度,对训练、rollout 等运行时无影响,风险等级较低。
- 影响:影响范围集中在 CI 基础设施:MI300X 自托管 runner 将不再被任何 ROCm 触发(PR / nightly / manual)调度,相关 8 个 AMD e2e 用例进入休眠状态。对用户而言,AMD 硬件上的回归验证缺口变大;对系统而言,CI 队列压力下降但覆盖完整性受损;对团队而言,需要一个显式的恢复计划,否则 MI300X 支持会长期处于无人验证状态。
- 风险标记:CI 静默降级, AMD 回归覆盖空洞, 恢复需逐例处理
关联脉络
- PR #1606 ci(rocm): add ROCm CI workflow for MI300X self-hosted runners: 该 PR 引入 ROCm CI workflow 与 MI300X 自托管 runner,并包含本 PR 所禁用的多个 AMD e2e 用例;本 PR 是对其调度能力的运营停用,构成「引入→停用」闭环。
- PR #2222 [AMD] Remove PR#301 FileSystemWriterAsync swap — superseded by Megatron-LM#74: 同属 AMD/ROCm 维护线,移除 ROCm 检查点写入器替换,体现 ROCm 路径仍在持续稳定化清理。
- PR #2139 [AMD] retune AMD 4-node dsv4 config: AMD 4 节点 DSv4 配方 retune,依赖 MI300X CI 验证;本 PR 后该验证将暂时缺席,需要外部恢复计划。
参与讨论