# MiniMaxAI/MiniMax-M2.7 — vLLM serving recipe

> MiniMax M2.7 MoE language model (230B total / 10B active) — latest M2 release for coding, agent toolchains, and long-context reasoning with native FP8

Configuration: hardware `h200` (8× H200) · strategy `single_node_tp` (Tensor Parallel) · variant `default` (FP8) · features `tool_calling`, `reasoning` · frontend `rust`

- Interactive page: https://vllm-recipes-git-preview-vllm-pr-60762-inferact-inc.vercel.app/MiniMaxAI/MiniMax-M2.7
- This configuration as JSON: https://vllm-recipes-git-preview-vllm-pr-60762-inferact-inc.vercel.app/MiniMaxAI/MiniMax-M2.7.json?hardware=h200

The commands below were rendered for exactly this configuration and take precedence over any example in the guide.

## Other configurations

Change the query string (the same parameters as the page URL) and fetch this URL again. Unknown or incompatible values fall back to the recipe default, so check the Configuration line.

- `hardware`: `h100`, `h200`, `b200`, `gb200`, `b300`, `gb300`, `dgx_station_gb300`, `rtx_pro_6000_2x`, `mi300x`, `mi325x`, `mi350x`, `mi355x`
- `variant`: `default`, `nvfp4`
- `strategy`: `single_node_tp`, `single_node_tep`, `single_node_dep`, `multi_node_tp`, `multi_node_tp_pp`, `multi_node_tep`, `multi_node_dep`, `pd_cluster` (multi-node strategies also need `nodes=<n>`)
- `features`: comma-separated list of `tool_calling`, `reasoning` (default: `tool_calling`, `reasoning`)

## Install

Requires vLLM >= 0.20.0.

```bash
uv venv
source .venv/bin/activate
uv pip install -U vllm --torch-backend auto
```

Docker image: `vllm/vllm-openai:latest`

## Serve

```bash
export VLLM_USE_RUST_FRONTEND=1
vllm serve MiniMaxAI/MiniMax-M2.7 \
  --trust-remote-code \
  --tensor-parallel-size 4 \
  --tool-call-parser minimax_m2 \
  --enable-auto-tool-choice \
  --reasoning-parser minimax_m2
```

Docker equivalent:

```bash
docker run --gpus all \
  --privileged --ipc=host -p 8000:8000 \
  -v ~/.cache/huggingface:/root/.cache/huggingface \
  -e VLLM_USE_RUST_FRONTEND=1 \
  vllm/vllm-openai:latest MiniMaxAI/MiniMax-M2.7 \
  --trust-remote-code \
  --tensor-parallel-size 4 \
  --tool-call-parser minimax_m2 \
  --enable-auto-tool-choice \
  --reasoning-parser minimax_m2
```

## Guide

> Background reference. Commands in it are examples and may target another configuration — use the Serve section above.

### Overview

[MiniMax-M2.7](https://huggingface.co/MiniMaxAI/MiniMax-M2.7) is the latest release
in the MiniMax M2 series. Like earlier M2 variants, it ships with 10B active
parameters out of 230B total, and supports a 196K context per sequence. MiniMax has
verified M2.7 accuracy on AIME25, GPQA-D, and GSM8K at vLLM commit
`0f3ce4c74b1875791d6604e006b6e905fde9f698`.

### Prerequisites

- **OS:** Linux
- **Python:** 3.10 - 3.13
- **NVIDIA:** compute capability >= 7.0; ~220 GB for weights + 240 GB per 1M context tokens
- **AMD:** MI300X / MI325X / MI350X / MI355X with ROCm 7.0+

#### Install vLLM (NVIDIA)

```bash
uv pip install -U vllm --extra-index-url https://wheels.vllm.ai/nightly
```

#### Install vLLM (AMD ROCm)

```bash
uv pip install vllm --extra-index-url https://wheels.vllm.ai/rocm/
```

#### Docker (dedicated M2-series image)

```bash
docker run --gpus all \
  -p 8000:8000 \
  --ipc=host \
  -v ~/.cache/huggingface:/root/.cache/huggingface \
  vllm/vllm-openai:minimax27 MiniMaxAI/MiniMax-M2.7 \
      --tensor-parallel-size 4 \
      --tool-call-parser minimax_m2 \
      --reasoning-parser minimax_m2 \
      --enable-auto-tool-choice \
      --trust-remote-code
```

### Launching the Server

#### NVIDIA — TP4 (4x H200/H20/H100 or 4x A100/A800)

```bash
vllm serve MiniMaxAI/MiniMax-M2.7 \
  --tensor-parallel-size 4 \
  --tool-call-parser minimax_m2 \
  --reasoning-parser minimax_m2 \
  --enable-auto-tool-choice \
  --trust-remote-code
```

Pure TP8 is not supported. For >4 GPUs use DP+EP or TP+EP:

#### DP8+EP

```bash
vllm serve MiniMaxAI/MiniMax-M2.7 \
  --data-parallel-size 8 \
  --enable-expert-parallel \
  --tool-call-parser minimax_m2 \
  --reasoning-parser minimax_m2 \
  --enable-auto-tool-choice
```

#### TP4+EP (recommended for H100)

```bash
vllm serve MiniMaxAI/MiniMax-M2.7 \
  --tensor-parallel-size 4 \
  --enable-expert-parallel \
  --tool-call-parser minimax_m2 \
  --reasoning-parser minimax_m2 \
  --enable-auto-tool-choice
```

#### TP8+EP

```bash
vllm serve MiniMaxAI/MiniMax-M2.7 \
  --tensor-parallel-size 8 \
  --enable-expert-parallel \
  --tool-call-parser minimax_m2 \
  --reasoning-parser minimax_m2 \
  --enable-auto-tool-choice
```

#### AMD ROCm — TP2

```bash
VLLM_ROCM_USE_AITER=1 vllm serve MiniMaxAI/MiniMax-M2.7 \
  --tensor-parallel-size 2 \
  --tool-call-parser minimax_m2 \
  --reasoning-parser minimax_m2 \
  --enable-auto-tool-choice \
  --trust-remote-code
```

### Benchmarking

```bash
vllm bench serve \
  --backend vllm \
  --model MiniMaxAI/MiniMax-M2.7 \
  --endpoint /v1/completions \
  --dataset-name random \
  --random-input 2048 \
  --random-output 1024 \
  --max-concurrency 10 \
  --num-prompt 100
```

### Troubleshooting

- **MiniMax QK norm fusion:** Latest vLLM applies the fusion automatically at
  runtime when the fused CUDA op is available; older vLLM builds used an
  explicit `fuse_minimax_qk_norm` compile pass.
- **Corrupted output on stable release:** Upgrade to a nightly after commit
  `cf3eacfe58fa9e745c2854782ada884a9f992cf7`.
- **Verified accuracy:** Use the pinned commit
  `0f3ce4c74b1875791d6604e006b6e905fde9f698` if reproducing MiniMax's reported results.
- **DeepGEMM:** vLLM uses DeepGEMM by default; install via
  [install_deepgemm.sh](https://github.com/vllm-project/vllm/blob/main/tools/install_deepgemm.sh)
  if missing.
- **AITER first launch:** Initial AMD launch JIT-compiles optimized kernels; subsequent launches reuse cached kernels.

### References

- [Model card](https://huggingface.co/MiniMaxAI/MiniMax-M2.7)
- [MiniMax](https://www.minimax.io/)
- [vLLM PR #43410 (automatic MiniMax QK norm fusion)](https://github.com/vllm-project/vllm/pull/43410)
