执行摘要
- 一句话:AMD 夜间 CI 同时跑 ROCm 7.2.4 与 7.2.0 镜像
- 推荐动作:值得精读,尤其适合 CI 工程师参考 matrix 参数化模式:如何用 fromJson 控制矩阵规模、如何通过 workflow_call 默认值避免调用方意外扩量,以及如何通过显式传参把版本决策上移。
功能与动机
PR body 明确说明:#30984 started publishing rocm724 images nightly, but the nightly test suite still hardcoded --rocm-version rocm720 everywhere, so the new images went untested. 镜像发布与测试版本脱节,导致 7.2.4 镜像的潜在问题无法被夜间测试发现。
实现拆解
实现分为四步:
- 在 nightly-test-amd-rocm720.yml 中为 workflow_dispatch 和 workflow_call 新增 rocm_version 输入(all/rocm724/rocm720),dispatch 默认 all 与夜间调度一致,call 默认 rocm724 以避免调用方未指定时静默获取双倍 GPU 开销。
- 对 nightly-test-1-gpu-unit-rocm720、nightly-test-1-gpu-kernel-rocm720、nightly-test-1-gpu-mi35x-rocm720 等任务添加 strategy.matrix,通过 fromJson 表达式根据输入生成单元素或双元素数组,并把容器启动脚本的 --rocm-version 改为 ${{ matrix.rocm_version }},同时设置 fail-fast: false 确保一个版本失败不阻塞另一个。
- 在 amd-aiter-scout.yml、bot-bump-sglang-version.yml、release-branch-cut.yml 的 workflow 调用处显式增加 rocm_version: rocm724,把版本选择提升到调用侧,防止 callee 默认值变化导致这些流程从 7.2.0 静默切到 7.2.4。
- 合入 main 时解决与 #32570(GLM-5.2 MI35x 任务重命名)的冲突,以 main 版本为准后重新套用矩阵逻辑。
关键文件:
.github/workflows/nightly-test-amd-rocm720.yml(模块 CI 配置;类别 infra;类型 infrastructure): 核心文件:新增 rocm_version 输入与 strategy.matrix,使 nightly 从硬编码单版本变为双版本并行。
.github/workflows/amd-aiter-scout.yml(模块 CI 配置;类别 infra;类型 configuration): 调用方之一:显式指定 rocm724,避免 AITER 哨兵任务因 callee 默认值变化而切换版本。
.github/workflows/bot-bump-sglang-version.yml(模块 CI 配置;类别 infra;类型 configuration): 版本 bump 触发的 nightly 测试显式固定 rocm724,保证新版本发布前在最新镜像上验证。
.github/workflows/release-branch-cut.yml(模块 CI 配置;类别 infra;类型 configuration): release 分支 cut 触发的 nightly 测试同样显式固定 rocm724,与版本流程保持一致。
关键符号:未识别
评论区精华
该 PR 没有 review comments。审阅人 HaiShaw 直接 APPROVED。提交历史体现了关键设计权衡:起初尝试两条 cron 分别跑两个版本,但提交信息指出 Two identical cron entries could not have worked: github.event.schedule is the only thing that distinguishes them,因此改为单次 nightly 内的 matrix 展开,避免重复调度且保证两个版本共享同一批资源。
风险与影响
- 风险:
- 资源开销:matrix 展开后夜间任务数量翻倍,占用双份 GPU 时间,可能挤压其他 nightly 作业。
- 版本稳定性:调用方显式指定 rocm724 后,AITER scout、版本 bump 和 release-branch-cut 的测试覆盖从 7.2.0 迁移到 7.2.4,若新镜像存在回归这些流程将先失败。
- 表达式错误:fromJson 表达式依赖 inputs.rocm_version 值,非法字符串会令矩阵定义报错导致整个 workflow 无法启动;当前调用点均以逐一核对。
- 告警稀释:fail-fast: false 虽保证两版本都执行,但失败报告翻倍,可能降低告警醒目度。
- 影响:对团队而言,AMD MI300 系列 nightly 测试从单版本覆盖变为双版本覆盖,能更快发现镜像发布问题;对开发者无行为变更。对基础设施而言,夜间运行时间和 GPU 消耗翻倍,需要关注排队情况。对现有流程而言,AITER scout、版本 bump 和 release 分支 cut 的测试基础镜像从 7.2.0 变为 7.2.4,需要验证兼容性。
- 风险标记:nightly 运行资源翻倍, 调用方版本静默迁移, 矩阵表达式可能出错, fail-fast 关闭告警稀释
关联脉络
- PR #30984 Publish ROCm 7.2.4 images nightly(标题依据 PR#35603 body 推断): PR body 指明本 PR 是针对 #30984 的 follow-up:它已开始 nightly 发布 rocm724 镜像,但测试仍硬编码 rocm720。
- PR #35602 Sibling PR: PR gate 双版本支持(标题依据 PR#35603 body 推断): PR body 指明 #35602 为本 PR 的 sibling,处理 PR gate 场景下的双版本问题。
- PR #32570 [AMD] Add GLM-5.2 MI35x nightly accuracy and perf benchmark: 提交历史记录显示合入 main 时与该 PR 在 MI35x 任务重命名上产生冲突,本 PR 已解决。
参与讨论