MiniMax-M2.7-REAP-172B-A10B-NVFP4-GB10
A fully-quantized compressed-tensors checkpoint of
catplusplus/MiniMax-M2.7-REAP-172B-A10B-NVFP4,
reshaped to match the layout of
saricles/MiniMax-M2.5-REAP-172B-A10B-NVFP4-GB10
and tuned for the NVIDIA GB10 Grace Blackwell (SM 12.1) Spark node, while remaining
loadable on upstream vLLM and SGLang without patches.
What changed vs. the source catplusplus checkpoint
| Component | Before (ModelOpt) | After (compressed-tensors) | Effect |
|---|---|---|---|
MoE experts (w1/w2/w3) | packed FP4 with weight / weight_scale / weight_scale_2 / input_scale | renamed + scalar inversion: weight_packed / weight_scale / weight_global_scale / input_global_scale | format parity with saricles; zero numeric change (round-trip < 1e-8) |
Attention Q/K/V/O | float32 (~9.8 GB unquantized) | NVFP4 W4A4 compressed-tensors, group_size=16 | ~8.5 GB saved; bandwidth-bound on GB10 → decode throughput up |
lm_head | bfloat16 | FP8 per-tensor, compressed-tensors float-quantized | ~0.6 GB saved; upstream-compatible (no runtime env-var hooks) |
k_proj.k_scale / v_proj.v_scale | present (static FP8 KV) | dropped | KV-cache quant handled by runtime (sglang / vLLM) |
| Embeddings, norms, gate routers, bias | bfloat16 | bfloat16 (unchanged) | routing / norm stability preserved |
Approximate size: ~92 GiB across 19 shards (≈5 GiB each), down from the source catplusplus checkpoint's ~101 GiB.
Quantization scheme
config.json.quantization_config has two groups:
{
"quant_method": "compressed-tensors",
"format": "nvfp4-pack-quantized",
"version": "0.14.1.dev0",
"config_groups": {
"group_0": {
"targets": ["Linear"],
"weights": { "num_bits": 4, "group_size": 16, "type": "float", "symmetric": true, "strategy": "tensor_group", "scale_dtype": "torch.float8_e4m3fn" },
"input_activations": { "num_bits": 4, "group_size": 16, "type": "float", "symmetric": true, "strategy": "tensor_group", "dynamic": "local", "scale_dtype": "torch.float8_e4m3fn" }
},
"group_1": {
"targets": ["re:.*lm_head$"],
"format": "float-quantized",
"weights": { "num_bits": 8, "type": "float", "strategy": "tensor", "symmetric": true, "dynamic": false }
}
},
"ignore": [ "... all 62 MoE gate routers ...", "model.embed_tokens" ],
"kv_cache_scheme": null
}
All tensors ship in the plain (not Marlin-pre-interleaved) compressed-tensors layout. GB10-specific layout repacking is performed at load time by the SGLang SM12.1 path; upstream vLLM / SGLang use their normal FlashInfer / CUTLASS paths.
Serving
Upstream SGLang
python3 -m sglang.launch_server \
--model-path scottgl/MiniMax-M2.7-REAP-172B-A10B-NVFP4-GB10 \
--port 30000 \
--trust-remote-code
Upstream vLLM
python3 -m vllm.entrypoints.openai.api_server \
--model scottgl/MiniMax-M2.7-REAP-172B-A10B-NVFP4-GB10 \
--trust-remote-code \
--quantization compressed-tensors
GB10-optimized (scottgl SGLang fork)
On an SM 12.1 Spark node, the
scottgl9/sglang-spark-gb10-optimizations
fork auto-detects the capability and repacks weights for Marlin FP4 dense GEMM
at load time. You should see one log line per NVFP4 Linear:
SM121 (GB10): using Marlin FP4 dense GEMM for NVFP4 layer (N=..., K=...).
Target decode throughput ≥ 35 tok/s.
./sglang.sh minimax-m27 --model-path scottgl/MiniMax-M2.7-REAP-172B-A10B-NVFP4-GB10
Architecture (from config.json)
- Layers: 62 main + 3 MTP
- Hidden: 3072
- Heads: 48 (
head_dim=128), KV heads: 8 (grouped query) - Experts per layer: 192 (REAP-pruned from 256); top-k: 8
- FFN intermediate: 1536 (per expert)
- Vocab: 200,064; Max context: 196,608
Provenance and attribution
Original model:
catplusplus/MiniMax-M2.7-REAP-172B-A10B-NVFP4
— this checkpoint is a direct re-formatting / completion-quantization of that model.
All weight values for MoE experts (the bulk of the parameters) are numerically identical to
catplusplus's checkpoint (rename-only transformation, dequant round-trip delta < 1e-8).
Attention Q/K/V/O and lm_head are freshly quantized from their BF16/F32 tensors
in the catplusplus checkpoint, using the standard compressed-tensors recipes.
Please credit the catplusplus checkpoint as the original model for this conversion.
- Base architecture: MiniMax-M2 family
- REAP expert pruning: inherited from catplusplus (256 → 192 experts per layer)
- Format reference (on-disk layout template):
saricles/MiniMax-M2.5-REAP-172B-A10B-NVFP4-GB10 - Conversion tool:
scottgl9/minimax_reap_reduction/convert.py
Expected accuracy impact
Compared to the source catplusplus M2.7 (already NVFP4 on experts):
- Attention F32 → NVFP4 is the dominant term: ~1–2% regression on reasoning / code benchmarks (published NVFP4 W4A4 result class; the saricles M2.5 model went through the same transform on the same architecture and remained usable).
lm_headBF16 → FP8 per-tensor: ~0.2% regression on output-head-sensitive benchmarks.- Experts are rename-only — zero numeric delta.
- Net expected: ~1–2.5% aggregate regression on most benchmarks, up to ~3% on rare-token / code tasks.
License
Inherits the upstream MiniMax-M2 license (MIT). See LICENSE in the repo.
Citation
If you use this checkpoint, please cite the underlying MiniMax-M2 release and the REAP pruning methodology by MJPansa.