MiniMax-M3.1-Flash-DFlash2

Blog | GitHub

This repository contains the DFlash 2 draft model for MiniMaxAI/MiniMax-M3.1-Flash. It is not a standalone language model: it runs inside a speculative decoding server and drafts tokens for the target model to verify.

DFlash 2 is a block-diffusion drafter for speculative decoding. It predicts a whole block of tokens in a single pass and keeps the top candidates at every position. A lightweight selector then traces one coherent path through them. Two-tap dynamic convolutions in the backbone keep the draft from decaying toward the end of the block. Decoding is lossless: greedy output matches the target model exactly, and sampling preserves its distribution.

DFlash 2: parallel block drafting with a candidate path selector

Quick Start

Set up SGLang for the target model with the MiniMax-M3.1 cookbook, then launch it with these speculative decoding options:

  --speculative-algorithm DFLASH \
  --speculative-draft-model-path incoai/MiniMax-M3.1-Flash-DFlash2 \
  --speculative-draft-model-quantization unquant \
  --speculative-num-draft-tokens 8 \
  --speculative-draft-attention-backend fa4

See the blog post for more details.

Evaluation

  • Runtime: SGLang (MiniMax-M3.1 build) on two NVIDIA GB300 GPUs (TP2/EP2), with MXFP8 target weights and an NVFP4 sparse KV cache
  • Speculation block size: 8 (7 draft tokens per verification step)
  • Sampling: MiniMax's default parameters (temperature 1.0, top-p 0.95, no top-k), with adaptive thinking and the default reasoning effort
  • Maximum new tokens: 4096
  • Samples: 128 per task
  • Prompts: benchmark formatting from z-lab/dflash; MT-Bench uses the first turn only

We compare autoregressive decoding, MiniMax-M3.1-Flash's native DSpark drafter, and DFlash 2. Both speculative methods propose seven draft tokens per verification step.

Acceptance Length

Acceptance length is the per-request mean of completion tokens divided by verification steps at concurrency 1. Higher is better.

Task DSpark DFlash 2
GSM8K 4.41 5.18
MATH-500 3.85 4.77
HumanEval 3.00 3.92
MBPP 3.42 4.30
MT-Bench 3.08 3.67

Throughput

Throughput is total output tokens divided by end-to-end wall time. Each cell shows output tok/s (speedup vs. autoregressive).

Concurrency 1

Task Autoregressive DSpark DFlash 2
GSM8K 123.6 341.2 (2.76×) 435.9 (3.53×)
MATH-500 122.2 331.5 (2.71×) 410.1 (3.36×)
HumanEval 123.2 257.3 (2.09×) 337.7 (2.74×)
MBPP 124.5 295.7 (2.37×) 382.4 (3.07×)
MT-Bench 121.9 221.6 (1.82×) 280.6 (2.30×)

Concurrency 8

Task Autoregressive DSpark DFlash 2
GSM8K 712.2 1,463.1 (2.05×) 1,524.8 (2.14×)
MATH-500 669.4 1,362.5 (2.04×) 1,718.4 (2.57×)
HumanEval 695.3 1,085.4 (1.56×) 1,415.4 (2.04×)
MBPP 646.4 1,199.8 (1.86×) 1,478.2 (2.29×)
MT-Bench 706.2 966.2 (1.37×) 1,176.9 (1.67×)

Concurrency 32

Task Autoregressive DSpark DFlash 2
GSM8K 1,109.5 2,248.1 (2.03×) 2,687.2 (2.42×)
MATH-500 1,550.5 2,910.7 (1.88×) 3,838.3 (2.48×)
HumanEval 1,665.3 2,439.3 (1.46×) 3,237.0 (1.94×)
MBPP 1,406.1 2,436.7 (1.73×) 3,176.1 (2.26×)
MT-Bench 1,597.6 2,127.3 (1.33×) 2,594.7 (1.62×)

Citation

If you find DFlash 2 useful, please cite:

@misc{inco2026dflash2,
  title  = {{DFlash 2: Keep Drafting Parallel}},
  author = {{Inco AI}},
  year   = {2026},
  month  = {August},
  url    = {https://inco.ai/blog/dflash2/}
}

Please also cite the original DFlash paper:

@inproceedings{chen2026dflash,
  title     = {{DFlash: Block Diffusion for Flash Speculative Decoding}},
  author    = {Chen, Jian and Liang, Yesheng and Liu, Zhijian},
  booktitle = {International Conference on Machine Learning (ICML)},
  year      = {2026}
}
Downloads last month
24
Safetensors
Model size
2B params
Tensor type
BF16
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for incoai/MiniMax-M3.1-Flash-DFlash2

Finetuned
(3)
this model

Collection including incoai/MiniMax-M3.1-Flash-DFlash2