---
title: MiniMax-M3.1-Flash-DFlash2
canonical_url: "https://www.modelscope.cn/models/incoai/MiniMax-M3.1-Flash-DFlash2"
md_url: "https://www.modelscope.cn/models/incoai/MiniMax-M3.1-Flash-DFlash2.md"
repository: incoai/MiniMax-M3.1-Flash-DFlash2
last_updated: 2026-10-23
license: apache-2.0
pipeline_tag: text-generation
tasks:
  - text-generation
model_type:
  - qwen3
architectures:
  - DFlash2DraftModel
base_model:
  - MiniMaxAI/MiniMax-M3.1-Flash
base_model_relation: finetune
parameters: 2.1B
tensor_type:
  - BF16
library_name:
  - safetensors
  - pytorch
frameworks:
  - pytorch
downloads: 7
stars: 0
tags:
  - dflash2
  - speculative-decoding
  - block-diffusion
  - draft-model
  - sglang
---

# MiniMax-M3.1-Flash-DFlash2

> MiniMax-M3.1-Flash-DFlash2 - incoai 在 ModelScope 开源的模型。MiniMax-M3.1-Flash-DFlash2

incoai/MiniMax-M3.1-Flash-DFlash2 是 ModelScope 魔搭社区上的 2.1B 参数text-generation模型，采用 apache-2.0 许可，基于 MiniMaxAI/MiniMax-M3.1-Flash 构建。

- **Repository**: incoai/MiniMax-M3.1-Flash-DFlash2
- **License**: apache-2.0
- **Tasks**: text-generation
- **Parameters**: 2.1B
- **Base model**: MiniMaxAI/MiniMax-M3.1-Flash
- **Tags**: dflash2, speculative-decoding, block-diffusion, draft-model, sglang
- **Downloads**: 7
- **Stars**: 0
- **Last updated**: 2026-10-23

Source: https://www.modelscope.cn/models/incoai/MiniMax-M3.1-Flash-DFlash2

---

# MiniMax-M3.1-Flash-DFlash2

[Blog](https://inco.ai/blog/dflash2/) | [GitHub](https://github.com/z-lab/dflash)

This repository contains the DFlash 2 draft model for
[`MiniMaxAI/MiniMax-M3.1-Flash`](https://huggingface.co/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.

<div align="center">
  <img src="assets/dflash2-figure.png" alt="DFlash 2: parallel block drafting with a candidate path selector" width="100%">
</div>

## Quick Start

Set up [SGLang](https://github.com/sgl-project/sglang) for the target model with the
[MiniMax-M3.1 cookbook](https://docs.sglang.io/cookbook/autoregressive/MiniMax/MiniMax-M3.1),
then launch it with these speculative decoding options:

```bash
  --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](https://inco.ai/blog/dflash2/) 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`](https://github.com/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:

```bibtex
@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:

```bibtex
@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}
}
```
