Skip to content

[Klaud Cold] minimaxm3-fp8-mi300x-vllm-agentic-mtp: MiniMax-M3 MI300X AgentX EAGLE3 recipe with golden-AL synthetic acceptance / MiniMax-M3 MI300X AgentX EAGLE3 配方(黄金 AL 合成接受) - #2425

Open
functionstackx wants to merge 6 commits into
mainfrom
feat/minimaxm3-fp8-mi300x-agentic-mtp
Open

[Klaud Cold] minimaxm3-fp8-mi300x-vllm-agentic-mtp: MiniMax-M3 MI300X AgentX EAGLE3 recipe with golden-AL synthetic acceptance / MiniMax-M3 MI300X AgentX EAGLE3 配方(黄金 AL 合成接受)#2425
functionstackx wants to merge 6 commits into
mainfrom
feat/minimaxm3-fp8-mi300x-agentic-mtp

Conversation

@functionstackx

@functionstackx functionstackx commented Jul 30, 2026

Copy link
Copy Markdown
Collaborator

Summary

Adds minimaxm3-fp8-mi300x-vllm-agentic-mtp — the EAGLE3 speculative-decoding (spec-decoding: mtp) variant of the MiniMax-M3 MXFP8 MI300X (gfx942) AgentX recipe. One new benchmark script, one master-config entry, one changelog entry; launch_mi300x-amds.sh already composes agentic/ + _mtp, so no launcher change.

Speculative configmethod: eagle3 on Inferact/MiniMax-M3-EAGLE3, num_speculative_tokens: 3. No drafter attention_backend override, unlike the CUDA recipes: the FlashInfer "page size 128 requires GQA/MQA" limitation that forces FLASH_ATTN for the MHA EAGLE3 head is FlashInfer-specific, and this server runs TRITON_ATTN throughout — the same reasoning fixed_seq_len/minimaxm3_fp8_mi300x_mtp.sh documents.

Synthetic forced AL — throughput runs set rejection_sample_method: synthetic with synthetic_acceptance_length: 2.83, the committed golden AL for MiniMax-M3 EAGLE3 at K=3, thinking_on (golden_al_distribution/minimaxm3_eagle3.yaml), per the AgentX policy in golden_al_distribution/README.md. The minimaxm3_eagle3_gqa.yaml curve belongs to the Inferact/MiniMax-M3-EAGLE3-GQA draft (run 29784780049) and is not mixed in. EVAL_ONLY runs drop synthetic acceptance and keep real target verification.

No in-place SupportsEagle3 patch. vllm/vllm-openai-rocm:nightly-04c2a8deac44fdb1ca3e2b5ec3e6bf16f3f6a914 is built from upstream 2026-06-23, after vllm-project/vllm#45546 (EAGLE3 on the AMD MiniMax-M3 model) merged on 2026-06-14. Only the older vllm-openai-rocm:minimax-m3 bring-up image still needs the runtime patch that the fixed-seq-len MI325X recipe carries.

Serve shape is otherwise identical to the non-MTP agentic sibling (Mooncake host-DRAM KV offload over TCP with the HIP-built transfer engine, --block-size 128, --language-model-only, --kv-cache-dtype fp8, --attention-backend TRITON_ATTN, gmu 0.90, minimax_m3 parsers, VLLM_USE_BREAKABLE_CUDAGRAPH=0, max-num-seqs 2*CONC). Cudagraph capture stays at the sibling default rather than being raised to MAX_NUM_SEQS*(1+3) tokens as on the CUDA agentic MTP recipes, matching the already-merged ROCm MiniMax-M3 MTP recipes.

Search space is TP8 and TP8/EP8, GPU-resident only on the AgentX MTP concurrency grid: [1, 4, 8, 12, 16] . Every step is at least 2 concurrency apart and every arm stops hard at conc 16. The non-MTP entry's two Mooncake host-DRAM arms are dropped — Mooncake is not used on AMD (see the revision note below). 10 generated jobs.

Validation: bash -n clean; both YAMLs parse; generate_sweep_configs.py test-config emits 10 agentic-coding configs with spec-decoding: mtp on cluster:mi300x-amds.

中文说明

新增 minimaxm3-fp8-mi300x-vllm-agentic-mtp:MiniMax-M3 MXFP8 MI300X(gfx942)AgentX(智能体编码)配方的 EAGLE3 投机解码(spec-decoding: mtp)变体。包含一个新脚本、一条 master 配置条目与一条 changelog 条目;launch_mi300x-amds.sh 已能拼出 agentic/ + _mtp 路径,启动器无需改动。

投机解码配置method: eagle3,草稿头 Inferact/MiniMax-M3-EAGLE3num_speculative_tokens: 3。与 CUDA 配方不同,drafter 无需固定注意力后端:迫使 CUDA 侧为 MHA EAGLE3 头指定 FLASH_ATTN 的「page size 128 需要 GQA/MQA」限制是 FlashInfer 特有的,而这里服务端整体运行 TRITON_ATTN(与 fixed_seq_len/minimaxm3_fp8_mi300x_mtp.sh 的说明一致)。

合成强制 AL:吞吐量测试设置 rejection_sample_method: syntheticsynthetic_acceptance_length: 2.83,即 MiniMax-M3 EAGLE3 在 K=3、thinking_on 下已提交的黄金 AL(golden_al_distribution/minimaxm3_eagle3.yaml),遵循 golden_al_distribution/README.md 的 AgentX 规则。minimaxm3_eagle3_gqa.yaml 属于 Inferact/MiniMax-M3-EAGLE3-GQA 草稿头(run 29784780049),两条曲线不混用。EVAL_ONLY 关闭合成接受、保留真实验证。

无需运行时 SupportsEagle3 补丁vllm/vllm-openai-rocm:nightly-04c2a8deac44fdb1ca3e2b5ec3e6bf16f3f6a914 基于上游 2026-06-23 的提交,晚于 2026-06-14 合入的 vllm-project/vllm#45546。只有较旧的 vllm-openai-rocm:minimax-m3 镜像仍需该补丁。

服务参数与非 MTP 版本一致(基于 HIP 构建的 Mooncake TCP 主机 DRAM KV 卸载、--block-size 128--language-model-only--kv-cache-dtype fp8--attention-backend TRITON_ATTN、gmu 0.90minimax_m3 解析器、VLLM_USE_BREAKABLE_CUDAGRAPH=0max-num-seqs 2*CONC)。cudagraph 捕获上限保持与非 MTP 版本相同,未像 CUDA 侧那样提高到 MAX_NUM_SEQS*(1+3) token,这与已合并的 ROCm MiniMax-M3 MTP 配方一致。

搜索空间为仅 GPU 常驻的 TP8 与 TP8/EP8,采用 AgentX MTP 并发网格 [1, 4, 8, 12, 16]。相邻并发间隔至少为 2,且一律止于并发 16。非 MTP 条目中的 Mooncake 主机 DRAM 分支已全部删除 —— AMD 上不使用 Mooncake(见下方修订说明)。共生成 10 个作业。

验证bash -n 通过;两个 YAML 均可解析;generate_sweep_configs.py test-config 生成 10 条 cluster:mi300x-amds 上的 agentic-coding 配置。

🤖 Generated with Claude Code


Revision (post-first-sweep)

  1. --gpu-memory-utilization 0.90. The first agentic job on [Klaud Cold] minimaxm3-fp8-h100-vllm-agentic-mtp: MiniMax-M3 H100 AgentX EAGLE3 recipe with golden-AL synthetic acceptance / MiniMax-M3 H100 AgentX EAGLE3 配方(黄金 AL 合成接受) #2423 (TP8/EP8 c9, run 30515793863) died mid-warmup: all 8 ranks raised torch.OutOfMemoryError 96 MiB short, killing the engine core (EngineDeadError) and tripping AIPerf's terminal warmup failure. The recipe had inherited the non-MTP agentic sibling's gmu, which has no draft head to house; the proven MTP sibling on each of these SKUs runs 0.90 (explicit on H100/H200, vLLM's default on the ROCm ones). Applied to all four MiniMax PRs.
  2. Concurrency grid. Steps of at least 2 and a hard stop at conc 16, replacing the dense integer sampling copied from the STP siblings.

中文:(1) --gpu-memory-utilization 改为 0.90 —— #2423 的首个智能体作业(TP8/EP8 c9,run 30515793863)在预热阶段 8 个 rank 全部 OOM(仅差 96 MiB),导致 engine core 崩溃并触发 AIPerf 终止性预热失败;此前沿用了非 MTP 版本的取值,而该版本无需为草稿头预留显存,各 SKU 上已验证的 MTP 配置均为 0.90。四个 MiniMax PR 均已修正。(2) 并发网格:相邻间隔至少为 2,且一律止于 16。

Revision 2 — no Mooncake on AMD

The MI300X dram-offload job (TP8 mtp mooncake c8, run 30517360090) failed. The HIP-built Mooncake transfer engine runs over TCP on these clusters and the store collapses mid-replay, repeating ServerSession::readBody failed ... Connection reset by peer until AIPerf aborts. Per maintainer direction, Mooncake is not used on AMD: all host-DRAM arms are removed from this recipe along with the in-script Mooncake build/launch plumbing, and the script now hard-fails if a dram row is ever pointed at it rather than silently serving GPU-resident under a dram label. The Qwen3.5 AMD AgentX PRs are unaffected — they use SGLang HiCache, not Mooncake.

中文:MI300X 的 dram 卸载作业(TP8 mtp mooncake c8,run 30517360090)失败 —— 基于 HIP 构建的 Mooncake 传输引擎在这些集群上走 TCP,运行中 store 会崩溃,持续输出 ServerSession::readBody failed ... Connection reset by peer 直至 AIPerf 中止。按维护者要求,AMD 上不使用 Mooncake:本配方删除全部主机 DRAM 分支及脚本内的 Mooncake 构建/启动逻辑;若仍传入 dram 配置将直接报错退出,而不会在 dram 标签下静默执行 GPU 常驻测试。Qwen3.5 的 AMD AgentX PR 不受影响 —— 它们使用的是 SGLang HiCache,而非 Mooncake。

…den-AL synthetic acceptance

Add minimaxm3-fp8-mi300x-vllm-agentic-mtp, the spec-decoding=mtp variant of the
MiniMax-M3 MXFP8 MI300X agentic-coding recipe: Inferact/MiniMax-M3-EAGLE3 draft
head, 3 speculative tokens, no drafter backend pin (server-wide TRITON_ATTN),
and synthetic acceptance pinned to the committed golden AL 2.83
(minimaxm3_eagle3.yaml, thinking_on, K=3). EVAL_ONLY keeps real verification.
The pinned ROCm nightly postdates vllm-project/vllm#45546, so no in-place
SupportsEagle3 patch is needed.

中文:新增 minimaxm3-fp8-mi300x-vllm-agentic-mtp,即 MiniMax-M3 MXFP8 MI300X 智能体
编码配方的投机解码(spec-decoding=mtp)变体:Inferact/MiniMax-M3-EAGLE3 草稿头、
3 个投机 token;由于服务端整体使用 TRITON_ATTN,drafter 无需固定注意力后端;合成
接受长度固定为黄金 AL 2.83(minimaxm3_eagle3.yaml,thinking_on,K=3)。EVAL_ONLY
保留真实验证。所选 ROCm nightly 镜像晚于 vllm-project/vllm#45546,因此无需运行时
SupportsEagle3 补丁。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@functionstackx
functionstackx requested a review from a team July 30, 2026 05:10
中文:补充 perf-changelog 中 #2425 的 pr-link。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

Thanks for the contribution! Please reach out to respective companies' CODEOWNER to fill in the latest PR_REVIEW_CHECKLIST.md before pinging core maintainer on Slack for review. In order for the signoff PR check bot to trigger, you must follow the PR_REVIEW_CHECKLIST.md template correctly, including the phrase As a PR reviewer and CODEOWNER, I have reviewed this and have.

For PR verification, add the full-sweep-fail-fast label (strongly recommended) to this PR — the benchmark sweep only runs on labeled PRs. Use full-sweep-enabled only if you need matrix jobs to keep running past a failure.

PR authors are responsible for ensuring that after merging, all GitHub Action jobs fully pass. A lot of the time, failures are just flakes and simply re-running the failed jobs will fix it. See GitHub's docs on re-running failed jobs


感谢你的贡献!请联系相应公司的 CODEOWNER 填写最新的 PR_REVIEW_CHECKLIST.md,然后再在 Slack 上联系核心维护者进行审阅。为了触发 signoff PR 检查机器人,你必须正确遵循 PR_REVIEW_CHECKLIST.md 模板,包括保留英文语句 As a PR reviewer and CODEOWNER, I have reviewed this and have

如需进行 PR 验证,请为此 PR 添加 full-sweep-fail-fast 标签(强烈推荐)— 基准测试 sweep 仅在带有标签的 PR 上运行。仅当需要矩阵任务在失败后继续运行时才使用 full-sweep-enabled

PR 作者有责任确保合并后所有 GitHub Action 任务完全通过。 很多时候失败只是偶发抖动(flake),重新运行失败的任务即可解决。参见 GitHub 关于重新运行失败任务的文档

@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.

LGTM — this follows the established EAGLE3-MTP recipe pattern already merged for the mi355x/mi325x MiniMax-M3 siblings, with no bugs found.

What was reviewed: the new mi300x MTP benchmark script diffed cleanly against its non-MTP sibling (only the speculative-decoding block, draft-model download, and script header differ); the golden AL value (2.83) matches golden_al_distribution/minimaxm3_eagle3.yaml for K=3/thinking_on; the launcher's existing agentic+_mtp path composition (runners/launch_mi300x-amds.sh) was confirmed to already route this config without changes. The candidate issue about conc=13 being dropped from the search space was checked and is a real, intentional trim (not a bug) matching the PR's stated MTP-vs-non-MTP conc range reduction.

Extended reasoning...

Overview

The PR adds one new benchmark script (benchmarks/single_node/agentic/minimaxm3_fp8_mi300x_mtp.sh), one master-config entry in configs/amd-master.yaml, and one changelog entry. It is the EAGLE3 speculative-decoding (MTP) variant of an already-merged non-MTP AgentX recipe for MiniMax-M3 MXFP8 on MI300X. No launcher or shared-library code is touched.

Security risks

None. This is benchmark/recipe configuration for internal GPU sweep infrastructure — no user input handling, auth, or crypto is touched. The script downloads models from Hugging Face and runs vLLM serve with fixed, hardcoded flags; no injectable parameters from untrusted sources.

Level of scrutiny

Low. This is a mechanical, well-precedented recipe addition: the diff against the non-MTP sibling script is minimal and isolated to the speculative-decoding block, draft-model download/retry logic, and comments — verified directly via diff. The same MTP-variant pattern has already been merged for the mi355x and mi325x MiniMax-M3 siblings, and the golden-AL value used here is independently verifiable against the committed YAML.

Other factors

No bugs were found by the bug-hunting system. The one candidate issue raised (conc=13 dropped from the search space) was investigated and ruled out — it's an intentional part of the described conc-range trim for the MTP variant (GPU-resident 1–16 vs 1–20, Mooncake 5–16 vs 5–20), not an accidental omission. No outstanding reviewer comments exist on the thread. This is a config/recipe file, not CODEOWNER-restricted production code.

@functionstackx

Copy link
Copy Markdown
Collaborator Author

Draft-head note for reviewers. This recipe uses Inferact/MiniMax-M3-EAGLE3 with golden AL 2.83 (minimaxm3_eagle3.yaml, thinking_on, K=3), matching the fixed-seq-len MTP sibling on this same SKU.

Worth knowing: #2337 (merged 2026-07-29) moved B200/B300 fp8 to the Inferact/MiniMax-M3-EAGLE3-GQA head, with the drafter backend going TRITON_ATTN → FLASH_ATTN and K kept at 3. The Hopper and gfx942 fixed-seq-len MTP recipes were not part of that swap and still run the non-GQA head, so this PR follows them — draft and curve stay matched, which is the part that matters for the AgentX contract. If you want the Hopper/ROCm SKUs to follow Blackwell onto the GQA head, it is a two-line change here: the draft id, and AL 2.83 → 2.78 (minimaxm3_eagle3_gqa.yaml, thinking_on, K=3). Say the word and I will make that swap before the sweep spends much more GPU time.

中文:本配方使用 Inferact/MiniMax-M3-EAGLE3 草稿头,黄金 AL 为 2.83minimaxm3_eagle3.yaml,thinking_on,K=3),与同 SKU 的固定序列长度 MTP 配方保持一致。

需要说明的是:#2337(2026-07-29 合并)已将 B200/B300 fp8 切换到 Inferact/MiniMax-M3-EAGLE3-GQA 草稿头,drafter 注意力后端由 TRITON_ATTN 改为 FLASH_ATTN,K 仍为 3。Hopper 与 gfx942 的固定序列长度 MTP 配方未包含在该次切换中,仍使用非 GQA 草稿头,因此本 PR 与之保持一致 —— 关键在于草稿头与 AL 曲线相互匹配,这正是 AgentX 规则所要求的。若希望 Hopper/ROCm SKU 也跟随 Blackwell 切到 GQA 草稿头,只需改两处:草稿头 ID,以及 AL 2.83 → 2.78(minimaxm3_eagle3_gqa.yaml,thinking_on,K=3)。如需切换请告知,我会在扫描消耗更多 GPU 前完成。

…0 to fit the EAGLE3 draft

The H100 twin of this recipe died mid-warmup with torch.OutOfMemoryError on all
8 ranks (run 30515793863) because it inherited the non-MTP agentic sibling's
gpu-memory-utilization, leaving no headroom for the draft head and its KV.
fixed_seq_len/minimaxm3_fp8_mi300x_mtp.sh passes no gmu flag at all, i.e. vLLM's
0.90 default; match that here instead of the sibling's 0.95.

中文:本配方的 H100 版本在预热阶段因 8 个 rank 全部 OOM 而失败(run 30515793863),
原因是沿用了非 MTP 版本的 gpu-memory-utilization,未为草稿头及其 KV 预留显存。
fixed_seq_len/minimaxm3_fp8_mi300x_mtp.sh 未设置该参数(即使用 vLLM 默认的 0.90),
此处与之对齐,不再使用 0.95。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

Replace the dense integer sampling inherited from the non-MTP agentic siblings
with the AgentX MTP grid: GPU-resident [1,4,8,12,16], offload [4,8,12,16].
Single-step sampling cannot separate configs by more than noise on the agentic
corpus, and past conc 16 these SKUs are in the post-cliff thrashing regime.

中文:将沿用自非 MTP 智能体配方的逐 1 递增并发采样,替换为 AgentX MTP 并发网格:
GPU 常驻 [1,4,8,12,16],KV 卸载 [4,8,12,16]。相邻并发间隔至少为 2,且一律止于 16 ——
逐 1 采样在智能体语料上无法区分出超过噪声的差异,并发超过 16 后这些 SKU 已进入
显存瓶颈后的抖动区间。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

functionstackx and others added 2 commits July 30, 2026 02:02
…on AMD

The dram-offload job (TP8 mtp mooncake c8, run 30517360090) failed: the
HIP-built Mooncake transfer engine runs over TCP on this cluster and the store
collapses mid-replay, spewing "ServerSession::readBody failed ... Connection
reset by peer" until AIPerf aborts the run.

Mooncake is not used on AMD. Remove both host-DRAM arms and the in-script
Mooncake build/launch plumbing; the recipe is now GPU-resident only (TP8 and
TP8/EP8, 10 jobs) and hard-fails if a dram row is ever pointed at it rather
than silently serving GPU-resident under a dram label.

中文:dram 卸载作业(TP8 mtp mooncake c8,run 30517360090)失败:基于 HIP 构建的
Mooncake 传输引擎在该集群上走 TCP,运行中 store 会崩溃并持续输出
"ServerSession::readBody failed ... Connection reset by peer",直至 AIPerf 中止。
AMD 上不再使用 Mooncake:删除两条主机 DRAM 分支及脚本内的 Mooncake 构建/启动逻辑,
本配方改为仅 GPU 常驻(TP8 与 TP8/EP8,共 10 个作业);若仍传入 dram 配置将直接报错
退出,而不会在 dram 标签下静默执行 GPU 常驻测试。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…300x-agentic-mtp

# Conflicts:
#	perf-changelog.yaml
@github-actions

Copy link
Copy Markdown
Contributor

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

Projects

Status: No status

Development

Successfully merging this pull request may close these issues.

1 participant