# PR #35603 完整报告

- 仓库：`sgl-project/sglang`
- 标题：[AMD][CI] Run Both ROCm 7.2.4 and ROCm 7.2.0 Images on Nightly Test AMD
- 合并时间：2026-08-20 16:37
- 原文链接：http://prhub.com.cn/sgl-project/sglang/pull/35603

---

# 执行摘要

- 一句话：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 镜像的潜在问题无法被夜间测试发现。

# 实现拆解

实现分为四步：
1. 在 nightly-test-amd-rocm720.yml 中为 workflow_dispatch 和 workflow_call 新增 rocm_version 输入（all/rocm724/rocm720），dispatch 默认 all 与夜间调度一致，call 默认 rocm724 以避免调用方未指定时静默获取双倍 GPU 开销。
2. 对 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 确保一个版本失败不阻塞另一个。
3. 在 amd-aiter-scout.yml、bot-bump-sglang-version.yml、release-branch-cut.yml 的 workflow 调用处显式增加 rocm_version: rocm724，把版本选择提升到调用侧，防止 callee 默认值变化导致这些流程从 7.2.0 静默切到 7.2.4。
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 展开，避免重复调度且保证两个版本共享同一批资源。

- 暂无高价值评论线程

# 风险与影响

- 风险：
 1. 资源开销：matrix 展开后夜间任务数量翻倍，占用双份 GPU 时间，可能挤压其他 nightly 作业。
 2. 版本稳定性：调用方显式指定 rocm724 后，AITER scout、版本 bump 和 release-branch-cut 的测试覆盖从 7.2.0 迁移到 7.2.4，若新镜像存在回归这些流程将先失败。
 3. 表达式错误：fromJson 表达式依赖 inputs.rocm_version 值，非法字符串会令矩阵定义报错导致整个 workflow 无法启动；当前调用点均以逐一核对。
 4. 告警稀释：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 已解决。