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

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

[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

1 similar comment
@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

Development

Successfully merging this pull request may close these issues.

1 participant