Skip to content

MiniMax-M3.1-Flash MI355X SGLang AgentX: opt into full-precision custom all-reduce / MiniMax-M3.1-Flash MI355X SGLang AgentX:启用全精度 custom all-reduce - #4745

Closed
ZhengGong-amd wants to merge 2 commits into
SemiAnalysisAI:mainfrom
ZhengGong-amd:minimaxm31flash-mi355x-sglang-custom-ar
Closed

ZhengGong-amd wants to merge 2 commits into
SemiAnalysisAI:mainfrom
ZhengGong-amd:minimaxm31flash-mi355x-sglang-custom-ar

Conversation

@ZhengGong-amd

@ZhengGong-amd ZhengGong-amd commented Nov 2, 2026 •

Copy link
Copy Markdown
Contributor

Summary

SGLang disables custom all-reduce for MiniMax-M3 on ROCm unless SGLANG_M3_ALLOW_CUSTOM_AR=1 (sgl-project/sglang#32230). The pinned image enables it automatically only for the Quark exports, so this recipe runs its TP4 decode all-reduces on RCCL. This PR sets the opt-in, plus ROCM_QUICK_REDUCE_QUANTIZATION=NONE to keep the all-reduce full precision. Without that, the image quantizes it to INT8, and its MiniMax-M3.1 override raises that to INT4, which #4510 would forbid.

Evidence comes from a Hyperloom AgentX run on 4x MI355X at conc 8, with amd/MiniMax-M3.1-Flash-Quark-MXFP4 and SGLang 0.5.22.dev20261028. Both sides of that comparison set SGLANG_MINIMAX_M3_INDEX_TOPK_FREQ=4 and quick reduce NONE. The opt-in raised p50 normalized interactivity from 121.1 to 134.6 tok/s/user (+11.2%) and output throughput from 345.7 to 367.6 tok/s. That run used a different checkpoint and image from this recipe, so the sweep here is the measurement.

AI model disclosure
  • Model/version: Claude Opus 5.5 in Cursor; the runtime does not expose the exact model identifier, so it could not be verified.
    • Role: analysis, the change and this description.
  • Model/version: claude-sonnet-5.5, as configured for the Hyperloom optimizer.
    • Role: proposed and measured the opt-in in the source run.
PR checklist and change type

Type of Change

  • Bug fix
  • New feature
  • Configuration change
  • Documentation update
  • Other (please describe)

Checklist

  • I have completed the AI model disclosure and kept it current
  • I have tested my changes locally
  • I have updated documentation if necessary
  • If python -m infx.matrix.changed --base origin/main lists affected config keys, I have appended one new entry covering them to the physical end of inferencex-e2e/perf-changelog.yaml; if it lists none, I have added none. I have not edited historical entries
  • If this PR appends an inferencex-e2e/perf-changelog.yaml entry, it carries exactly one primary sweep label (a maintainer applies it on fork PRs): full-sweep-fail-fast (recommended), full-sweep-enabled, or non-canary-full-sweep-enabled. Optional modifiers all-evals, evals-only, and agentx-fast require a primary label; the last two block reuse while applied.
  • Before merging via reuse, an authorized maintainer (OWNER/MEMBER/COLLABORATOR) has commented /use <run_id> (or the legacy /reuse-sweep-run) on this PR. Do this only once there is a final full sweep that is all green with evals passing, since after this comment the primary sweep label will no longer automatically kick off new sweeps. Remove and re-add the primary sweep label to force a new sweep.
中文

SGLang 默认在 ROCm 上为 MiniMax-M3 关闭 custom all-reduce,除非设置 SGLANG_M3_ALLOW_CUSTOM_AR=1(sgl-project/sglang#32230)。固定镜像只对 Quark 导出版本自动开启它,所以本配方 TP4 下的 decode all-reduce 走的是 RCCL。本 PR 设置该开关,并设置 ROCM_QUICK_REDUCE_QUANTIZATION=NONE 让 all-reduce 保持全精度。如果不设置,镜像会把 all-reduce 量化为 INT8,它对 MiniMax-M3.1 的 override 还会再提升为 INT4,而 #4510 会禁止 INT4。

依据来自一次 Hyperloom AgentX 运行:4 张 MI355X,conc 8,使用 amd/MiniMax-M3.1-Flash-Quark-MXFP4 和 SGLang 0.5.22.dev20261028。对比的两组都设置了 SGLANG_MINIMAX_M3_INDEX_TOPK_FREQ=4,quick reduce 都为 NONE。开启该开关后,p50 归一化交互性从 121.1 提升到 134.6 tok/s/user(+11.2%),输出吞吐从 345.7 提升到 367.6 tok/s。那次运行的 checkpoint 和镜像都与本配方不同,以本 PR 的 sweep 为准。

AI 模型使用说明:Claude Opus 5.5(Cursor;运行环境没有提供精确的模型标识,无法确认)负责分析、改动和撰写本说明;Hyperloom 优化器配置的 claude-sonnet-5.5 在来源运行中提出并测量了该开关。

改动类型:配置改动。

…ll-reduce

Co-authored-by: Cursor <cursoragent@cursor.com>
@ZhengGong-amd
ZhengGong-amd force-pushed the minimaxm31flash-mi355x-sglang-custom-ar branch from cbd6306 to 2d1c39b Compare November 2, 2026 08:39
… opt-out

Co-authored-by: Cursor <cursoragent@cursor.com>
@ZhengGong-amd
ZhengGong-amd marked this pull request as ready for review November 2, 2026 09:03
@ZhengGong-amd
ZhengGong-amd requested a review from a team November 2, 2026 09:03

@claude claude Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Claude Code Review

This pull request is from a fork — automated review is disabled. A repository maintainer can comment @claude review to run a one-time review.

@ZhengGong-amd

Copy link
Copy Markdown
Contributor Author

Closing: this is a no-op on the pinned image. MiniMaxAI/MiniMax-M3.1-Flash resolves to minimax_m3_nvfp4, and its gfx950 path (_hip.nvfp4_overrides) returns before the MiniMax-M3 override that disables custom all-reduce, so SGLANG_M3_ALLOW_CUSTOM_AR is never read. The conc 8 server log of the #4694 sweep already shows:

  • serving as minimax_m3_nvfp4 and disable_custom_all_reduce: False;
  • [AR] Using AiterCustomAllreduce on every TP rank;
  • MiniMax-M3.1: quick all-reduce INT4 (from INT8 or unset).

The measured gain came from upstream SGLang serving the Quark MXFP4 checkpoint, where custom all-reduce is off by default; this recipe already has it on.

中文

关闭原因:在固定镜像上这项改动不起作用。MiniMaxAI/MiniMax-M3.1-Flash 会被解析为 minimax_m3_nvfp4,它在 gfx950 上的路径(_hip.nvfp4_overrides)在 MiniMax-M3 override 关闭 custom all-reduce 之前就已返回,所以 SGLANG_M3_ALLOW_CUSTOM_AR 根本不会被读取。#4694 的 sweep 中 conc 8 的 server 日志已经显示:

  • serving as minimax_m3_nvfp4 和 disable_custom_all_reduce: False;
  • 每个 TP rank 都使用 [AR] Using AiterCustomAllreduce;
  • MiniMax-M3.1: quick all-reduce INT4 (from INT8 or unset)。

之前测得的收益来自上游 SGLang 加 Quark MXFP4 checkpoint 的组合,那里 custom all-reduce 默认关闭;本配方已经默认开启。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

1 participant