MiniMax-M3.1-Flash on two 96 GB cards instead of four, with the release's own NVFP4 weights.
Expert-pruned build of MiniMaxAI/MiniMax-M3.1-Flash
at 162.90 GB, against 250.12 GB for the release.
Each of the 57 MoE layers keeps 80 of its 128 routed experts, and the router is cut to the same 80 rows. Nothing is
requantized: the kept experts are the release's NVFP4 tensors, and attention, shared experts, dense MLPs, embeddings,
LM head and vision tower are byte-identical to the release.
There is no BF16 MiniMax-M3.1-Flash. MiniMax trained the routed experts and attention with quantization in the loop and released them as NVFP4 and MXFP8, so the reference row below is the release itself, served on four cards. Drift is the extra negative log-likelihood per token this build assigns to 400 reasoning traces the release wrote; top-1 agreement is how often its most likely next token is the release's. The pass is deterministic.
Why this build
- 🖥️ Two cards. The release needs four RTX PRO 6000s (58.19 GiB of weights per card at TP4). This build loads 76.17 GiB per card at TP2, and the command below leaves a 190,464-token KV pool at a 131,072-token window.
- 🛠️ Tool calling level with the release. 70.8 against 70.3, three runs each. Both rarely hold back on the 40 rows where the right answer is no call: 32.5 here and 25.0 for the release, the lowest abstain scores in the comparison table below.
- 📏 Knowledge 84.4 on the 1,170-item suite, against 85.0 for the release, with 98.8% of answers finished inside the budget.
- 📉 What removing 48 experts per layer costs. Drift from the release is +82.2×10⁻³ nats per token and top-1 agreement 91.3%. It shows in copied strings: across 150 tool calls this build misspelled two city names, the release none (details under Measured).
- ⚡ 73.1 tok/s single-stream and 289.8 at concurrency 32 on two cards, against 83.7 and 306.7 for the release on four.
Serve it
hf download primitive-ai/MiniMax-M3.1-Flash-pruned-272B-NVFP4 --local-dir ./MiniMax-M3.1-Flash-pruned-272B-NVFP4
docker run --gpus '"device=0,1"' --ipc=host -p 8000:8000 -v $PWD:/models \
-e VLLM_FLOAT32_MATMUL_PRECISION=high \
vllm/vllm-openai:minimax-m31-flash-x86_64-cu134 \
--model /models/MiniMax-M3.1-Flash-pruned-272B-NVFP4 --trust-remote-code \
--tensor-parallel-size 2 --max-model-len 131072 --gpu-memory-utilization 0.92 \
--block-size 128 --disable-hybrid-kv-cache-manager \
--kv-cache-dtype fp8 --attention-config '{"indexer_kv_dtype": "fp8"}' \
--limit-mm-per-prompt '{"image":1,"video":0}' \
--reasoning-parser minimax_m3 --enable-auto-tool-choice --tool-call-parser minimax_m3
Checked with this command on two idle cards: boot 262 s, 76.17 GiB of weights per card, a 190,464-token KV pool.
What is 17*23? comes back as 391 with the reasoning split off by the parser, a weather question about Lisbon comes
back as a parsed get_weather call (with the city written L Lisbon, the slip described under Measured), and an
image of the number 427 is read as 427.
--block-size 128 and --disable-hybrid-kv-cache-manager are required by the sparse attention. On RTX PRO 6000
(sm_120) the NVFP4 KV cache from MiniMax's vLLM recipe is not available; FP8 KV with the FP8 indexer cache is. On
another 80-expert build of ours it measured the same drift as a BF16 cache. The full 262,144-token window does not
fit on two cards with images enabled (9.38 GiB of KV needed, 6.81 GiB left). The dspark/ drafter is the release's,
unchanged; we have not tested it with this build.
Measured
RTX PRO 6000 Blackwell, 96 GB. The 1,170-item knowledge suite and the 200-item tool-calling suite, temperature 0.6
/ top_p 0.95 / top_k 20, thinking at the template default (adaptive), a 16,384-token budget, concurrency 32,
auto-scored with no LLM judge. Throughput is 8K in / 512 out, prefix-cache free, two seeds per cell. Suites and
throughput ran at a 32,768-token window with image input off.
| build | GPUs | size | KV cache | drift (×10⁻³ nats/token) | top-1 agreement | knowledge | tool-calling | call | abstain | finished | tok/s @1 | tok/s @32 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| MiniMax-M3.1-Flash (release) | 4, TP4 | 250.12 GB | BF16 | 0 (reference) | 100% | 85.0 | 70.3 | 81.7 | 25.0 | 99.2% | 83.7 | 306.7 |
| this repo | 2, TP2 | 162.90 GB | FP8 | +82.2 | 91.3% | 84.4 | 70.8 | 80.4 | 32.5 | 98.8% | 73.1 | 289.8 |
Drift and agreement come from 400 traces of the knowledge suite (148,520 completion tokens) that the release wrote, scored by each build in one pass; the standard error over traces is 5.8. Tool calling is three runs per build, knowledge one.
Copying arguments: one weather or order question per call, at MiniMax's recommended temperature 1.0 / top_p 0.95,
with the parser flags from the command above and a 32,768-token window:
| build | 100 city names | 50 order ids like RD-57931-D6 |
misspelled |
|---|---|---|---|
| release, BF16 KV | 99 exact | 50 exact | none |
| release, FP8 KV | 99 exact | 50 exact | none |
| this repo, FP8 KV | 96 exact | 50 exact | L Lisbon for Lisbon; Mascat in a second call after Muscat |
The remaining misses on both builds are two calls instead of one, covering a second place of the same name or the
accented spelling: Cuenca, Ecuador, Geneva, Switzerland and Geneva, New York, Perth, Scotland, Yaoundé.
Asked about Lisbon five times across our checks, this build wrote L Lisbon four times.
What this table does not cover:
- Images and video. The suites are text only; the image check above is one prompt.
- Context past 32K. Every number here is at a 32,768-token window or less.
- Other GPUs. Only the RTX PRO 6000 Blackwell (sm_120) was tested.
Comparable with our other models
Accuracy numbers move for reasons that have nothing to do with the model: a shorter token budget, a
different temperature, or whether the model was allowed to reason at all. So every number in this
table, on this card and on our other cards, comes from the one fixed protocol described above, the
same 1,370 items, auto-scored, no LLM judge.
| model | shape | size | overall | knowledge | call | abstain | finished | out/answer |
|---|---|---|---|---|---|---|---|---|
| Laguna-XS-2.1 | 31 B MoE | 19.3 GiB | 81.7 | 83.8 | 68.4 | 73.5 | 98.9% | 1097 |
| Nemotron-3.5-Lightning-30B-A3B | 30 B MoE+Mamba | 19.2 GiB | 87.1 | 87.9 | 85.4 | 70.5 | 97.9% | 1429 |
| Ornith-1.5-35B-A3B | 35 B MoE | 22.6 GiB | 88.7 | 91.7 | 74.4 | 60.0 | 99.3% | 760 |
| Muse-Glimmer-30B | 30 B MoE | 20.4 GiB | 86.6 | 88.8 | 78.6 | 54.5 | 99.7% | 800 |
| Qwen3.8-27B | 27 B dense | 20.7 GiB | 88.8 | 90.4 | 85.5 | 54.5 | 99.7% | 651 |
| Granite-4.2-30B | 30 B dense | 18.1 GB | 85.5 | 86.2 | 85.8 | 60.8 | 98.5% | 1502 |
| Nex-N2.5-mini NVFP4 | 35 B MoE, 3 B active | 23.91 GB | 88.5 | 90.5 | 81.9 | 57.5 | 99.3% | 524 |
| Nex-N2.5-mini mixed | 35 B MoE, 3 B active | 26.04 GB | 88.5 | 90.6 | 80.9 | 58.7 | 99.2% | 504 |
| Nex-N2.5-mini FP8 | 35 B MoE, 3 B active | 38.13 GB | 88.7 | 90.9 | 79.4 | 60.0 | 99.5% | 545 |
| K2-Horizon-MoVA-36B-A4B NVFP4 | 37 B MoE+MoVA, 4 B active | 36.7 GB | 84.1 | 86.5 | 71.8 | 60.4 | 95.6% | 1234 |
| K2-Horizon-MoVA-36B-A4B mixed | 37 B MoE+MoVA, 4 B active | 44.5 GB | 84.9 | 87.3 | 73.5 | 58.9 | 96.3% | 1118 |
| Nemotron-3.5-Bolt-74B-A9B mixed | 75 B MoE+Mamba, 9 B active | 46.70 GB | 89.3 | 90.6 | 87.9 | 58.3 | 98.5% | 1173 |
| Laguna-S-2.1 | 110 B MoE | 64.0 GiB | 84.3 | 87.1 | 64.6 | 81.0 | 97.3% | 995 |
| Qwen3.8-Flash-Next | 180 B MoE, 6 B active | 183.7 GB | 90.3 | 92.2 | 84.8 | 56.7 | 99.5% | 686 |
| MiMo-V2.6-Flash-RL NVFP4 | 309 B MoE, 15 B active | 182.40 GB | 89.3 | 91.1 | 83.0 | 61.0 | 99.0% | 664 |
| Kolibri-1 FP8 | 78 B MoE, 3.5 B active | 78.83 GB | 85.0 | 86.1 | 86.1 | 48.0 | 97.0% | 1824 |
| Kolibri-1 NVFP4 | 78 B MoE, 3.5 B active | 47.70 GB | 84.9 | 86.2 | 84.9 | 48.0 | 96.4% | 1947 |
| Kolibri-1 mixed | 78 B MoE, 3.5 B active | 45.81 GB | 83.9 | 85.0 | 85.5 | 47.5 | 96.6% | 1848 |
| LFM2.5-24B-A2B NVFP4A16 | 24 B MoE, 2.45 B active | 14.95 GB | 83.9 | 85.4 | 82.4 | 44.5 | 98.8% | 1603 |
| MiniMax-M3.1-Flash (release, 4 cards) | 427 B MoE, 23 B active | 250.12 GB | 82.9 | 85.0 | 81.7 | 25.0 | 99.2% | 513 |
| MiniMax-M3.1-Flash-pruned-272B (this repo) | 272 B MoE, 23 B active | 162.90 GB | 82.5 | 84.4 | 80.4 | 32.5 | 98.8% | 707 |
overall pools the two suites as 1,370 items, weighted 85.4% knowledge and 14.6% tool calling by
item count. Read it with finished: overall scores an answer that overran the token budget as
wrong, and cannot say whether the model needed the room or failed to stop. A gap under 1.0 in
overall is a tie. Sizes are as each card reports them, which mixes GB and GiB.
What's in it
272.11 B parameters including the vision tower (the release has 427.05 B), 23 B active per token as before: top-4 of the routed experts plus one shared expert.
| params | share | |
|---|---|---|
| routed experts, 57 MoE layers × 80, w1 + w2 + w3 | 258.20 B | 94.9% |
| attention and sparse-attention indexer, 60 layers | 6.65 B | 2.4% |
| shared experts, 57 layers | 3.23 B | 1.2% |
| embeddings and LM head (untied) | 2.46 B | 0.9% |
| dense MLP, 3 layers | 0.68 B | 0.2% |
| vision tower and projector | 0.68 B | 0.2% |
| norms and other | 0.19 B | 0.1% |
| routers | 0.03 B | 0.0% |
| modules | format |
|---|---|
| routed experts (13,680 matrices) | NVFP4 weights and activations (E2M1, E4M3 scale per 16, FP32 global), the release's tensors |
| attention, indexer, shared experts, dense MLPs | MXFP8 (E4M3, E8M0 scale per 32), as released |
| embeddings, LM head, vision tower, norms | BF16, as released |
| routers and routing bias | FP32, 80 of the release's 128 rows per layer |
Expert ids are renumbered 0 to 79 in each layer, in their original order. config.json differs from the release only
in num_local_experts: 80; the quantization_config is the release's.
Licence
MiniMax Community License, the base model's licence; the full text is in this repository. It allows
non-commercial use, modification and redistribution. Commercial use, which under the licence includes deploying a
modified version such as this one, requires showing "Built with MiniMax M3.1-Flash" and either a one-time notice to
api@minimax.io or, above US$20 million in yearly revenue, MiniMax's prior written authorization. The licence's
appendix lists prohibited uses. This is a modified version of MiniMaxAI/MiniMax-M3.1-Flash: 48 of 128 routed experts
per MoE layer and the matching router rows were removed, and config.json was changed to match. The model and its
copyright belong to MiniMax.
![]()
primitive ·
more models ·
inference economics for production LLM systems
- Downloads last month
- 83
Model tree for primitive-ai/MiniMax-M3.1-Flash-pruned-272B-NVFP4
Base model
MiniMaxAI/MiniMax-M3.1-Flash