Prhub

#22722 [AMD] Add MiniMax-M2.7 accuracy and performance nightly tests

sgl-project/sglang · 作者 michaelzhang-ai · 合并时间 2026-04-14 15:30

分析状态 已生成
文件变更 7提交数 6 · 评论 8
代码增减 +805 / -113
amd run-ci test

执行摘要

为 AMD 平台添加 MiniMax-M2.7 准确性及性能夜间 CI 测试,替换 M2.5 并修复导入 bug。

根据PR body,添加MiniMax-M2.7测试以跟进模型更新(架构与M2.5相同),替换过时的M2.5测试。同时修复关键导入bug:'get_bool_env_var'从错误的'sglang.srt.distributed'模块导入,导致MiniMax M2模型注册失败并回退到transformers包装器,引发'config.rope_parameters'崩溃,影响当前main分支稳定性。

建议工程师精读CI工作流变更逻辑,了解如何替换模型测试作业;关注minimax_m2.py的导入修复,作为关键bugfix的范例;测试文件可作为添加新模型测试的模板,适合学习SGLang的测试框架结构。

讨论亮点

Review中仅有一条核心讨论:HaiShaw建议暂不运行MI35x测试,直到有更多runner可用,以管理资源。PR作者随后更新提交,移除MI35x夜间作业,但保留测试文件供未来使用。讨论聚焦于测试策略和资源管理,无技术争议或深度交锋,已通过代码变更解决。

实现拆解

实现分为三部分:1) 修改两个GitHub Actions工作流文件(.github/workflows/nightly-test-amd.yml和-nightly-test-amd-rocm720.yml),将M2.5作业替换为M2.7作业,移除MI35x的夜间运行(根据review调整)。2) 新增四个测试文件:两个准确性测试(GSM8K评估)和两个性能测试(bench_one_batch),覆盖MI30x和MI35x平台,使用TP8+EP8配置和aiter注意力后端。3) 修复python/sglang/srt/models/minimax_m2.py中的导入,将get_bool_env_var从sglang.srt.distributed移至sglang.srt.utils,确保模型正确注册。

文件 模块 状态 重要度
.github/workflows/nightly-test-amd.yml ci modified 7.0
.github/workflows/nightly-test-amd-rocm720.yml ci modified 7.0
python/sglang/srt/models/minimax_m2.py models modified 8.0
test/registered/amd/accuracy/mi30x/test_minimax_m27_eval_amd.py test added 6.0

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

关键符号

get_bool_env_var

评论区精华

MI35x 测试运行策略 测试

HaiShaw 在 review 中建议暂不运行 MI35x 测试,以等待更多 runner 资源,避免资源压力。

结论:PR 作者更新提交,移除 MI35x 夜间作业,但保留测试文件供未来启用,策略调整已落实。 · 已解决

风险与影响

风险包括:1) CI稳定性:新增测试可能增加CI运行时间和资源消耗,尤其在大batch size性能测试时;MI35x测试文件虽保留但未运行,未来启用时需验证兼容性。2) 导入修复:修复可能影响其他依赖此导入的代码,但PR中已引用其他文件使用正确路径作为证据,降低了回归风险。3) 测试准确性:GSM8K评估依赖外部数据源(GitHub raw URL),可能受网络问题或数据变更影响;性能测试结果依赖硬件环境,需监控波动。

影响:1) 用户:无直接影响,但确保AMD平台上MiniMax-M2.7模型的质量监控,提升用户对模型性能的信心。2) 系统:CI测试覆盖扩展到新模型版本,加强了持续集成验证能力;工作流变更优化了测试资源分配。3) 团队:需要维护新增的测试文件,并关注MI35x测试的未来启用计划,促进跨平台支持协作。

CI 稳定性风险 测试准确性依赖

关联 Issue

#20673 [Feature][JIT Kernel] Fused TP QK norm For Minimax

完整报告

PR #22722 分析报告

执行摘要

此PR为AMD平台添加了MiniMax-M2.7模型的准确性(GSM8K 5-shot)和性能(bench_one_batch)夜间CI测试,替换了过时的M2.5测试,并修复了关键导入bug。变更影响CI工作流和测试覆盖,确保新模型在AMD硬件上的质量监控,同时优化资源管理暂不启用MI35x测试。

功能与动机

PR的主要动机是跟进MiniMax模型的更新,将CI测试从M2.5升级到M2.7。根据PR body,M2.7与M2.5架构相同(256专家MoE),但提供了性能改进(如batch_size=64时输出吞吐量提升10.3%)。同时,修复了minimax_m2.py中的导入错误,该错误由PR #20673引入,导致模型注册失败并引发config.rope_parameters崩溃,影响了当前main分支的稳定性。

实现拆解

实现分为三个关键模块:

模块 文件变更 描述
CI工作流 .github/workflows/nightly-test-amd.ymlnightly-test-amd-rocm720.yml 将M2.5作业替换为M2.7,移除MI35x夜间运行(根据review),更新作业名称、条件和测试套件引用。关键patch显示作业定义从nightly-8-gpu-minimax-m25更改为nightly-8-gpu-minimax-m27
模型代码 python/sglang/srt/models/minimax_m2.py 修复get_bool_env_var导入:从from sglang.srt.distributed import get_bool_env_var改为from sglang.srt.utils import get_bool_env_var,并添加注释说明错误原因和影响。
测试文件 新增四个测试文件,如test/registered/amd/accuracy/mi30x/test_minimax_m27_eval_amd.py 包含准确性测试(使用GSM8K数据集)和性能测试(bench_one_batch),针对MI30x和MI35x平台,配置TP8+EP8和aiter注意力后端。测试文件结构镜像现有M2.5测试,但更新了模型路径和阈值。

评论区精华

Review讨论中,HaiShaw提出了资源管理建议:

"Please not to accurate mi35x tests for the model not on mxfp4 for now, keep the test cases is fine, just not to run until later with more mi35x runners in place."

这导致PR作者在提交中移除MI35x夜间作业,但保留测试文件。讨论简短,聚焦于测试策略而非技术细节,已通过代码变更解决。无其他争议或未决疑虑。

风险与影响

  • 技术风险
    • CI稳定性:新增测试可能延长CI运行时间,尤其性能测试使用大batch size;MI35x测试虽保留但未运行,未来启用时需验证环境兼容性。
    • 导入修复:修复基于其他文件引用证据,但需确保无其他代码路径依赖错误导入,不过风险较低。
    • 测试准确性:GSM8K评估依赖外部数据源,可能受网络延迟影响;性能测试结果可能因硬件波动而波动。
  • 影响范围
    • 对用户:无直接功能影响,但通过CI测试提升了AMD平台上MiniMax-M2.7模型的可靠性和性能可见性。
    • 对系统:扩展了测试覆盖,强化了持续集成验证;工作流变更优化了资源使用,避免不必要的MI35x运行。
    • 对团队:提供了新模型测试模板,便于未来添加类似测试;需监控MI35x测试的启用时机。

关联脉络

从历史PR分析,此PR与以下相关:

  • PR #22733(GB200夜间流水线修改):同为CI工作流优化,显示团队在夜间测试中加强资源控制和手动触发能力。
  • PR #22739(Qwen3 rope配置修复):类似模型bugfix,反映SGLang对模型导入和配置稳定性的重视。
  • Issue #20673(MiniMax JIT内核优化):直接关联,该Issue引入了导致导入错误的变更,本PR修复了衍生问题。
    整体上,PR体现了SGLang在AMD平台上持续扩展模型测试覆盖的演进趋势,同时通过bugfix维护代码健康度。

参与讨论