[Klaud Cold] minimaxm3 H200+H100 MTP: day-zero MiniMax-M3 EAGLE3 (MTP) recipes#1739
Conversation
Adds the spec-decoding=mtp siblings of the day-zero H200/H100 recipes (PR #1731): same MXFP8 target and serve shape, plus the Inferact/MiniMax-M3-EAGLE3 draft head via --speculative-config (method eagle3, 3 speculative tokens). The drafter is pinned to FLASH_ATTN — the EAGLE3 head is MHA and FlashInfer only supports the mandatory page size 128 through its GQA-only trtllm-gen kernel (the failure hit on the B300 MTP canary). Cudagraph capture scales to CONC * (1 + spec tokens); benchmark prompts run through the chat template so acceptance reflects real text. Search spaces mirror the non-MTP entries trimmed at the extreme-concurrency end (dsv4 / minimaxm3 b300-mtp precedent); H100 stays TP8-only with DEP omitted. Also adds SPEC_SUFFIX to the three H100 launchers (cw, cr, dgxc-slurm), which hardcoded _h100.sh and never gained the _mtp routing the H200 launchers have carried since #392 — without this, an mtp config on H100 silently runs the non-MTP script. This also fixes the latent same-bug for the existing qwen3.5-fp8-h100-sglang-mtp config. 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. |
1 similar comment
|
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>
|
see unofficial run visualizer at https://inferencex.semianalysis.com/inference?unofficialRun=27453501412 |
1 similar comment
|
see unofficial run visualizer at https://inferencex.semianalysis.com/inference?unofficialRun=27453501412 |
|
/reuse-sweep-run |
|
see unofficial run visualizer at https://inferencex.semianalysis.com/inference?unofficialRun=27456399802 |
…onc 1 (#1743) * minimaxm3 H200/H100 MTP: start TP-only latency rows at conc 1 Drop the conc-start of the TP-only (latency) search-space rows from 4 to 1 for minimaxm3-fp8-h200-vllm-mtp and minimaxm3-fp8-h100-vllm-mtp, matching the conc-1 start used on the non-MTP day-zero recipes so the sweeps capture the single-request latency point. TEP/DEP rows keep their higher concurrency starts (128/256). Follow-up to #1739 (6e8ebf5). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * perf-changelog: fill in PR link for minimaxm3 H200/H100 MTP conc-1 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Summary
Adds the EAGLE3 speculative-decoding (
spec-decoding: mtp) siblings of the day-zero MiniMax-M3 MXFP8 H200/H100 recipes (PR #1731, still open against main): MiniMaxAI/MiniMax-M3-MXFP8 target paired with the Inferact/MiniMax-M3-EAGLE3 draft head. This PR targetsmainand includes only the H100-mtp and H200-mtp variants.New benchmark scripts
benchmarks/single_node/fixed_seq_len/minimaxm3_fp8_h200_mtp.shbenchmarks/single_node/fixed_seq_len/minimaxm3_fp8_h100_mtp.shBoth are based on the non-MTP H200/H100 scripts from #1731 (mandatory
--block-size 128for MSA sparse/index cache,--language-model-only,HF_HUB_OFFLINEserve to dodge the shared-FS download-lock race, Hopper-compatible MXFP8 MoE backends). H100 keeps its DEP memory-headroom block (higher gmu + per-rank-bounded capture). Additions for MTP:--speculative-config '{"method": "eagle3", "model": "Inferact/MiniMax-M3-EAGLE3", "num_speculative_tokens": 3, "attention_backend": "FLASH_ATTN"}'FLASH_ATTN: the EAGLE3 head is MHA, and FlashInfer only supports page size 128 (mandatory here for MSA) through its GQA-only trtllm-gen kernel — engine init dies inFlashInferMetadataBuilderotherwise. This exact failure hit the B300 MTP canary (#1733); FLASH_ATTN takes any multiple-of-16 block size and handles MHA.CONC * (1 + spec tokens)(each running request contributes the extra draft tokens per decode step), capped at 2048. On H100 DEP the per-rank-bounded capture is likewise spec-token-scaled.--use-chat-templateon the benchmark client so draft acceptance reflects real text rather than random tokens.Config (
nvidia-master.yaml)minimaxm3-fp8-h200-vllm-mtp: TP4 / TP8 (latency), TP4+EP4 / TP8+EP8 (TEP), TP8+EP8 dp-attn (DEP) across 1k1k and 8k1k — non-MTP search space trimmed at the extreme-concurrency end (dsv4 / minimaxm3 b300-mtp precedent).minimaxm3-fp8-h100-vllm-mtp: TP8-only (no room below TP8 at ~56 GB weights/GPU); DEP omitted (KV-cache init fails at high conc on the non-MTP entry, draft only tightens it).Launcher fix (required plumbing)
The three H100 launchers (
launch_h100-cw.sh,launch_h100-cr.sh,launch_h100-dgxc-slurm.sh) hardcoded_h100.shand never gained the_mtprouting the H200 launchers have carried since #392. Without this, anmtpconfig on H100 silently runs the non-MTP script. AddedSPEC_SUFFIXto all three (no-op for non-mtp). This also fixes the same latent bug for the existingqwen3.5-fp8-h100-sglang-mtpconfig.perf-changelog
Combined entry for both new config keys.
Validation
generate_sweep_configs.py test-config --config-keys minimaxm3-fp8-h200-vllm-mtp minimaxm3-fp8-h100-vllm-mtpgenerates 42 configs cleanly (scenario-trimmed max-model-len 2304 / 9472, allspec-decoding=mtp).bash -npasses on both scripts and all three modified launchers.mtp→_mtp.sh,none→_h100.sh.🤖 Generated with Claude Code
Note
Low Risk
Benchmark and CI launcher routing only; no changes to application runtime, auth, or data paths beyond new vLLM serve flags in test scripts.
Overview
Adds EAGLE3 speculative decoding (
spec-decoding: mtp) benchmark coverage for MiniMax-M3 MXFP8 on H200 and H100, pairingMiniMaxAI/MiniMax-M3-MXFP8with the Inferact/MiniMax-M3-EAGLE3 draft (3 tokens, drafterFLASH_ATTN).New scripts
minimaxm3_fp8_h200_mtp.shandminimaxm3_fp8_h100_mtp.shextend the non-MTP recipes with--speculative-config, spec-scaled CUDA graph capture, chat-templated serving benchmarks, and draft-model HF caching. H100 keeps extra DEP memory tuning (higher GMU, per-rank capture bounds).nvidia-master.yamlgainsminimaxm3-fp8-h200-vllm-mtpandminimaxm3-fp8-h100-vllm-mtpwith concurrency search spaces trimmed vs non-MTP (H100 TP8-only, no DEP).perf-changelog.yamldocuments both keys.H100 launchers (
launch_h100-cw.sh,-cr.sh,-dgxc-slurm.sh) now setSPEC_SUFFIXsomtpconfigs run*_h100_mtp.shinstead of silently using the non-MTP script (parity with H200 since #392).Reviewed by Cursor Bugbot for commit 6f9ee6c. Bugbot is set up for automated code reviews on this repo. Configure here.