Prhub

#20294 [AMD] Add 4-GPU test suite for MI325 runners

sgl-project/sglang · 作者 michaelzhang-ai · 合并时间 2026-03-25 05:04

分析状态 已生成
文件变更 12提交数 44 · 评论 2
代码增减 +252 / -13
ci test feature

执行摘要

为 AMD MI325 runner 添加 4-GPU CI 测试套件,包括 per-commit 和 nightly 测试。

基于PR body,动机是增加AMD MI325 runner的4-GPU CI测试覆盖,具体表述为'Add 4-GPU AMD CI test coverage on MI325 runners: +3 per-commit tests and +1 nightly test',解决AMD平台在4-GPU配置下的测试缺失问题,确保兼容性和稳定性。

该PR值得精读,特别是对于负责CI和测试的工程师,可以学习AMD/NVIDIA路径隔离的设计模式,以及如何通过条件逻辑(如is_in_amd_ci())和注册系统(register_amd_ci())维护多平台兼容性。

讨论亮点

review中无具体评论,但Issue评论中作者michaelzhang-ai强调严格隔离AMD更改,具体表述为'I've cleaned up the PR to strictly isolate AMD changes: No NVIDIA code path changes.',讨论焦点在于设计上如何安全地集成AMD-specific逻辑,通过条件分支和禁用注册实现。

实现拆解

实现方案分为两个模块:1. CI工作流模块:在.github/workflows/pr-test-amd.yml和nightly-test-amd.yml等文件中新增'stage-c-test-4-gpu-amd'和'nightly-4-gpu' job,配置AMD MI325 runner和ROCm环境。2. 测试逻辑模块:在多个测试文件(如test/registered/distributed/test_pp_single_node.py)中使用register_amd_ci()注册AMD套件,并通过is_in_amd_ci()条件分支调整阈值(如GSM8K从0.74降至0.70)、后端(如从fa3切换到triton)和跳过逻辑(如跳过MLA类测试),确保NVIDIA代码路径不变。

文件 模块 状态 重要度
.github/workflows/pr-test-amd.yml CI modified 8.0
test/registered/distributed/test_pp_single_node.py 测试 modified 7.0
test/registered/spec/eagle/test_eagle_dp_attention.py 测试 modified 7.0

分析完成后,这里会展示 LLM 生成的相对完整源码片段和详细注释。

关键符号

register_amd_ci is_in_amd_ci TestPPAccuracy.test_gsm8k TestEAGLE3EngineDPAttention.setUpClass

评论区精华

AMD 更改隔离 设计

作者在 Issue 评论中强调严格隔离 AMD 更改,不修改 NVIDIA 代码路径,具体表述为 'No NVIDIA code path changes. Every shared test file now falls into one of two patterns: Disabled tests or Enabled tests with if branches.'

结论:通过使用 is_in_amd_ci() 条件和 register_amd_ci() 实现 AMD 逻辑隔离,NVIDIA 路径保持不变。 · 已解决

风险与影响

技术风险具体包括:1. 回归风险:AMD-specific逻辑可能引入错误,如test/registered/spec/eagle/test_eagle_dp_attention.py中调整的accuracy阈值(从0.91降至0.88)可能导致假阳性;2. 性能风险:新增CI jobs增加资源消耗,如nightly-4-gpu job设置timeout-minutes为120,可能延长测试流水线;3. 兼容性风险:AMD路径隔离不彻底可能影响NVIDIA测试,但作者已通过if is_in_amd_ci(): else:结构规避。

对用户影响:提高AMD平台4-GPU配置的测试覆盖,增强软件在AMD环境下的可靠性;对系统:CI流水线增加4个新jobs(如stage-c-test-4-gpu-amd),使用linux-mi325-4gpu-sglang runner,可能增加云资源使用但未影响NVIDIA路径;对团队:建立了AMD多GPU测试标准,便于后续维护和扩展AMD支持。

AMD 路径隔离风险 测试阈值调整风险 CI 资源增加风险

关联 Issue

未识别关联 Issue

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

完整报告

执行摘要

该PR为AMD MI325 runner新增4-GPU CI测试套件,包括3个per-commit测试和1个nightly测试,通过修改CI工作流和测试注册逻辑实现,严格隔离AMD更改以保持NVIDIA路径不变,提升AMD平台测试覆盖和可靠性。

功能与动机

PR body中明确指出动机是'Add 4-GPU AMD CI test coverage on MI325 runners',解决AMD平台在4-GPU配置下的测试缺失问题。作者michaelzhang-ai在Issue评论中强调需'严格隔离AMD更改',确保NVIDIA代码路径不受影响,这反映了跨平台CI测试的设计需求。

实现拆解

实现分为两个主要模块:

  • CI工作流模块:在.github/workflows/下的四个YAML文件中新增jobs,如stage-c-test-4-gpu-amdnightly-4-gpu,配置AMD MI325 runner和ROCm环境。关键代码片段:
    ```yaml
    nightly-4-gpu-rocm720:
    runs-on: linux-mi325-4gpu-sglang
    steps:
    • name: Nightly Test ROCm 7.2 (4-GPU)
      run: bash scripts/ci/amd/amd_ci_exec.sh python3 run_suite.py --hw amd --suite nightly-amd-4-gpu
      ```
  • 测试逻辑模块:在多个测试文件中使用register_amd_ci()is_in_amd_ci()实现AMD-specific调整:
    | 文件 | AMD调整 | NVIDIA路径 |
    |------|---------|------------|
    | test_pp_single_node.py | 阈值从0.74降至0.70 | 保持0.74 |
    | test_eagle_dp_attention.py | 后端切换为triton | 保持fa3 |
    | test_dp_attention_large.py | 跳过MLA类测试 | 正常运行 |

评论区精华

review中无具体讨论,但Issue评论中作者michaelzhang-ai与HaiShaw交互,强调设计原则:

"I've cleaned up the PR to strictly isolate AMD changes: No NVIDIA code path changes."
这揭示了在跨平台CI测试中,通过条件分支和注册系统隔离更改的重要性,避免引入回归风险。

风险与影响

  • 技术风险:AMD-specific逻辑可能引入假阳性,如test_eagle_dp_attention.py中accuracy阈值降低可能掩盖性能问题;新增CI jobs增加资源消耗,但使用专用runner控制影响。
  • 影响范围:对用户,提升AMD 4-GPU环境下的软件可靠性;对团队,建立标准化AMD测试流程,便于后续扩展;对系统,CI流水线增加4个jobs,但未改变NVIDIA测试行为。

关联脉络

与历史PR关联显示AMD平台测试的持续演进:

  • PR #21193 修复AMD夜间测试的不兼容性,与本PR共同完善AMD CI覆盖。
  • PR #21239 重构JIT内核CI使用run_suite.py注册系统,与本PR的register_amd_ci()方法类似,体现仓库向中央化测试注册的演进趋势。
    结合commit历史(44次提交),本PR经过多次迭代调整阈值和配置,最终采用严格隔离设计,反映了在多平台环境中平衡测试覆盖与代码维护性的技术权衡。

参与讨论