[NVIDIA] feat: MiniMax M3 Day 0 MTP (EAGLE3) support B300#1737
Conversation
EAGLE3 speculative decoding for MiniMax-M3 MXFP8 on B300, per the recipe spec_decoding feature (Inferact/MiniMax-M3-EAGLE3 draft head, 3 spec tokens, FLASH_ATTN). New minimaxm3_fp8_b300_mtp.sh (--speculative-config + --use-chat-template) and minimaxm3-fp8-b300-vllm-mtp config (latency-end layouts, no tp2). Draft head served from /data/models. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
Thanks for the contribution! For vLLM & SGLang, please ensure that your recipes is similar to the official vLLM recipes and/or the SGLang cookbook If it is not, please create a PR first before we can merge your single node PR into the master branch. Let's ensure that the documentation is first class such that the entire ML community can benefit from your hard work! Thank you
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. If re-running failed jobs is attempted, PR authors are responsible for ensuring it passes. See GitHub's docs on re-running failed jobs: https://docs.github.com/en/actions/how-tos/manage-workflow-runs/re-run-workflows-and-jobs#re-running-failed-jobs-in-a-workflow As a rule of thumb, generally, PR authors should request a review & get a PR approval from the respective companies' CODEOWNERS before requesting a review from core maintainers. If additional help is needed, PR authors can reach out to core maintainers over Slack. |
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit f6b6935. Configure here.
| DRAFT_MODEL="Inferact/MiniMax-M3-EAGLE3" | ||
| fi | ||
| fi | ||
| if [[ "$DRAFT_MODEL" != /* ]]; then hf download "$DRAFT_MODEL"; fi |
There was a problem hiding this comment.
Empty draft dir not populated
Medium Severity
The EAGLE3 draft path is chosen when its directory exists, but unlike the main MODEL_PATH block there is no check that the directory actually contains weights. An empty MiniMax-M3-EAGLE3 sibling under /data/models skips hf download, so vllm serve can fail or load an invalid draft while the primary checkpoint was populated correctly.
Reviewed by Cursor Bugbot for commit f6b6935. Configure here.
|
superceded by #1733 |
Full-sweep validation: GREEN (37/37 single-node jobs)Run 27452976016 (full-sweep, EAGLE3 health
MTP vs STP (matched isl/tp/ep/conc)
MTP wins across the entire measured space: ~2.0–2.4x on both tok/s/user and tok/s/GPU, tracking acceptance length. tok/s/GPU scaling ≈ tok/s/user scaling confirms negligible draft overhead. No regime where STP beats MTP at matched config. MTP pareto frontier (tok/s/user vs tok/s/GPU-out)
tp8+ep8 owns the latency end; tp4 (ep1) takes the throughput end. Every search-space entry produced results across its full conc range (no removals needed). |
|
Closing as superseded by #1733 ([Klaud Cold], merged to main 01:50 UTC), which landed the identical The full-sweep validation I ran here (run 27452976016, 37/37 single-node green) independently confirms the merged recipe works end-to-end on B300: EAGLE3 draft head loads cleanly from |


MiniMax-M3 MXFP8 EAGLE3 speculative-decoding sweep on B300 — the recipe's
spec_decodingfeature (https://recipes.vllm.ai/MiniMaxAI/MiniMax-M3).minimaxm3-fp8-b300-vllm-mtpandbenchmarks/single_node/fixed_seq_len/minimaxm3_fp8_b300_mtp.sh.{"method": "eagle3", "model": "Inferact/MiniMax-M3-EAGLE3", "num_speculative_tokens": 3, "attention_backend": "FLASH_ATTN"}.--use-chat-templateon the benchmark (mandatory for*_mtp.sh)./data/modelstree (already bind-mounted; no launcher change needed).Builds on the merged non-MTP B300 recipe (#1724). Sweep results + acceptance-rate/speedup vs STP to follow.
🤖 Generated with Claude Code
Note
Low Risk
Benchmark and CI config only; no changes to application runtime, auth, or data paths beyond new vLLM serve flags in test jobs.
Overview
Adds day-zero MTP (EAGLE3 speculative decoding) coverage for MiniMax-M3 MXFP8 on B300, alongside the existing non-MTP
minimaxm3-fp8-b300-vllmrecipe.A new master config
minimaxm3-fp8-b300-vllm-mtpdefines latency-focused fixed-seq-len sweeps at 1k1k and 8k1k withspec-decoding: mtpon TP8, TP4, and TP8+EP8 (no TP2, documented as KV headroom limits with the draft head). The companion scriptminimaxm3_fp8_b300_mtp.shstarts vLLM with recipe-aligned--speculative-config(EAGLE3 +Inferact/MiniMax-M3-EAGLE3, 3 speculative tokens, FLASH_ATTN), resolves/stages the draft model under the B300/data/modelslayout, scales--max-cudagraph-capture-sizefor spec decode, and runs serving benchmarks with--use-chat-templateso EAGLE acceptance matches training.perf-changelog.yamldocuments the new config key and PR link.Reviewed by Cursor Bugbot for commit f6b6935. Bugbot is set up for automated code reviews on this repo. Configure here.