Skip to content

Add MiniMax-M3 Nightly Perf & Accuracy Regression Testing on MI355X with EAGLE3 spec decode#25

Open
functionstackx wants to merge 2 commits into
vllm-project:mainfrom
functionstackx:minimax-m3-mi355x-eagle3
Open

Add MiniMax-M3 Nightly Perf & Accuracy Regression Testing on MI355X with EAGLE3 spec decode#25
functionstackx wants to merge 2 commits into
vllm-project:mainfrom
functionstackx:minimax-m3-mi355x-eagle3

Conversation

@functionstackx

@functionstackx functionstackx commented Jun 14, 2026

Copy link
Copy Markdown

Summary

Adds workloads/minimax_m3_mi355x.yaml — a new recipe running MiniMax-M3-MXFP8 on MI355X (CDNA4) with EAGLE3 speculative decode.

+viz @hongxiayang @andyluo7 @chunfangamd @micah-wil

Serving config

  • Model MiniMaxAI/MiniMax-M3-MXFP8 (MXFP8 runs natively on CDNA4 — OCP fp8 + MX matrix cores), num_gpus: 8.
  • --tensor-parallel-size 8, no expert parallelism (EP's all-to-all overhead hurts the low-latency decode path that speculation targets).
  • No --max-model-len — uses the model default, consistent with the other MI355X recipes.
  • minimax_m3 tool-call + reasoning parsers with --enable-auto-tool-choice, --trust-remote-code.
  • env: VLLM_USE_BREAKABLE_CUDAGRAPH=0 per @hongxiayang MiniMax-M3: set VLLM_USE_BREAKABLE_CUDAGRAPH=0 on AMD MI300X/MI325X/MI355X recipes#539

EAGLE3 speculative decode

  • --speculative-config.method eagle3, drafter --speculative-config.model Inferact/MiniMax-M3-EAGLE3, --speculative-config.num_speculative_tokens 3.

Evals

  • lm_eval gsm8k (5-shot) as the spec-decode correctness gate: speculative decoding is output-equivalent to non-spec greedy, so the score must match the no-spec MiniMax-M3 baseline.
  • vllm_bench — a single 8k-in/1k-out config at conc-128 (MI355X-family baseline) for the decode-throughput uplift, using random + backend: openai (not speed_bench per Switch vllm_bench from speed_bench to random + ignore_eos #20).

⛔ Blocked — draft / do not merge yet

nightly: true (runs in the nightly schedule), but this is blocked on vllm-project/vllm#45381 (MiniMax-M3 support) landing on main, which carries the ROCm/AMD EAGLE3 enablement (#45546). Until that merges, the vllm-openai-rocm image cannot serve M3 + AMD EAGLE3, so the nightly run will fail at server bring-up until #45381 is on main (red nights are expected). Kept as a GitHub draft until it goes green.

Green checklist

Notes

  • KV cache deliberately left at the model default (bf16). MiniMax-M3-MXFP8 ships no calibrated KV scales, so --kv-cache-dtype fp8 silently falls back to scale 1.0 and corrupts output ([Bug]: ROCm MI300X FP8 KV cache MiniMax-M3-MXFP8 accuracy issues vllm#45562). Don't enable fp8 KV here without a calibrated checkpoint or a self-calibrating dtype.
  • Perf bench uses random + openai, not speed_bench. speed_bench requires --skip-tokenizer-init, which caps every request at 1 output token so throughput reads ~0; this recipe follows Switch vllm_bench from speed_bench to random + ignore_eos #20 (and drops the now-vestigial speed_bench_* fields the other MI355X recipes still carry).
  • No README/schema change — the pipeline auto-discovers workloads/*.yaml.

Validation

  • Parser smoke test (per CLAUDE.md, stubbed lm_eval registry) passes: name/image/model/serve_args/env and the lm_eval + vllm_bench TSVs all resolve correctly. Device=mi355x, TP=8, precision=fp8.
  • No real GPU run yet (blocked, see above).

AI assistance

This PR was authored with assistance from Claude Code (AI-assisted). The commit carries a Co-Authored-By: Claude trailer.

@functionstackx functionstackx force-pushed the minimax-m3-mi355x-eagle3 branch from 77271b9 to 1998371 Compare June 14, 2026 21:13
@functionstackx functionstackx changed the title [WIP] Add MiniMax-M3 on MI355X with EAGLE3 spec decode [WIP] Add MiniMax-M3 on MI355X with EAGLE3 spec decode [Blocked till https://github.com/vllm-project/vllm/pull/45381 merges] Jun 14, 2026
@functionstackx functionstackx force-pushed the minimax-m3-mi355x-eagle3 branch 9 times, most recently from 3bfe3e3 to f425adf Compare June 14, 2026 21:27
@functionstackx functionstackx changed the title [WIP] Add MiniMax-M3 on MI355X with EAGLE3 spec decode [Blocked till https://github.com/vllm-project/vllm/pull/45381 merges] [WIP] Add MiniMax-M3 Nightly Regression Testing on MI355X with EAGLE3 spec decode [Blocked till https://github.com/vllm-project/vllm/pull/45381 merges] Jun 14, 2026
@functionstackx functionstackx changed the title [WIP] Add MiniMax-M3 Nightly Regression Testing on MI355X with EAGLE3 spec decode [Blocked till https://github.com/vllm-project/vllm/pull/45381 merges] [WIP] Add MiniMax-M3 Nightly Perf & Accuracy Regression Testing on MI355X with EAGLE3 spec decode [Blocked till https://github.com/vllm-project/vllm/pull/45381 merges] Jun 14, 2026
@functionstackx functionstackx marked this pull request as ready for review June 15, 2026 17:25
@functionstackx functionstackx changed the title [WIP] Add MiniMax-M3 Nightly Perf & Accuracy Regression Testing on MI355X with EAGLE3 spec decode [Blocked till https://github.com/vllm-project/vllm/pull/45381 merges] [WIP] Add MiniMax-M3 Nightly Perf & Accuracy Regression Testing on MI355X with EAGLE3 spec decode Jun 15, 2026
@functionstackx functionstackx changed the title [WIP] Add MiniMax-M3 Nightly Perf & Accuracy Regression Testing on MI355X with EAGLE3 spec decode [WIP] Add MiniMax-M3 Nightly Perf & Accuracy Regression Testing on MI355X with EAGLE3 spec decode [blocked on https://github.com/vllm-project/perf-eval/pull/23] Jun 15, 2026
@functionstackx functionstackx changed the title [WIP] Add MiniMax-M3 Nightly Perf & Accuracy Regression Testing on MI355X with EAGLE3 spec decode [blocked on https://github.com/vllm-project/perf-eval/pull/23] [WIP] Add MiniMax-M3 Nightly Perf & Accuracy Regression Testing on MI355X with EAGLE3 spec decode Jun 16, 2026
@functionstackx functionstackx changed the title [WIP] Add MiniMax-M3 Nightly Perf & Accuracy Regression Testing on MI355X with EAGLE3 spec decode Add MiniMax-M3 Nightly Perf & Accuracy Regression Testing on MI355X with EAGLE3 spec decode Jun 16, 2026
Adds workloads/minimax_m3_mi355x.yaml: MiniMax-M3-MXFP8 on MI355X (CDNA4),
TP=8 (no expert parallelism), EAGLE3 speculative decode (drafter
Inferact/MiniMax-M3-EAGLE3, 3 speculative tokens), env
VLLM_USE_BREAKABLE_CUDAGRAPH=0. gsm8k as the spec-decode correctness gate;
vllm_bench 8k-in/1k-out at conc-128 (MI355X-family baseline).

KV cache left at default (bf16): MiniMax-M3-MXFP8 ships no calibrated KV scales,
so --kv-cache-dtype fp8 silently corrupts output (vllm-project/vllm#45562).

nightly: true, but blocked on vllm-project/vllm#45381 (M3 support, which carries
the ROCm/AMD EAGLE3 enablement #45546) landing on main; it will fail at server
bring-up until then.

AI-assisted (Claude Code).

Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: functionstackx <47992694+functionstackx@users.noreply.github.com>
@functionstackx functionstackx force-pushed the minimax-m3-mi355x-eagle3 branch from f425adf to 81e92d5 Compare June 16, 2026 02:19
@functionstackx

Copy link
Copy Markdown
Author

chatted with kevin and got buidlkite perms to test this PR on buildkite before merging it

With EAGLE3 spec decode on this backend, the default KV-manager block
size (16) has no compatible attention-kernel block size, so server
bring-up dies in select_common_block_size with "No common block size
for 16." Pin --block-size 128, which every kernel in the spec-decode
path supports.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant