Ornith-1.5-122B-DFlash2

Blog | GitHub

This repository contains the DFlash 2 draft model for ornith-ai/Ornith-1.5-122B. 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

Serve with SGLang 0.5.21:

pip install "sglang[all]==0.5.21"

sglang serve \
  --model-path ornith-ai/Ornith-1.5-122B \
  --tp 2 \
  --enable-flashinfer-allreduce-fusion \
  --attention-backend trtllm_mha \
  --mamba-radix-cache-strategy extra_buffer \
  --mem-fraction-static 0.8 \
  --speculative-algorithm DFLASH \
  --speculative-draft-model-path incoai/Ornith-1.5-122B-DFlash2 \
  --speculative-num-draft-tokens 16

See the blog post for more details.

Evaluation

  • Runtime: SGLang 0.5.21 on two NVIDIA GB300 GPUs (TP2), with TensorRT-LLM for target attention and FlashAttention 4 for DFlash 2 draft attention
  • Speculation block size: 16 (15 draft tokens per verification step)
  • Sampling: Ornith's default parameters (temperature 0.6, top-p 0.95, top-k 20), with thinking enabled
  • 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 and DFlash 2, which proposes fifteen 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 DFlash 2
GSM8K 8.33
MATH-500 9.20
HumanEval 8.64
MBPP 6.37
MT-Bench 5.41

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 DFlash 2
GSM8K 257.9 585.5 (2.27×)
MATH-500 265.8 705.5 (2.65×)
HumanEval 265.2 672.1 (2.53×)
MBPP 262.4 519.4 (1.98×)
MT-Bench 265.0 355.0 (1.34×)

Concurrency 8

Task Autoregressive DFlash 2
GSM8K 994.8 1,866.8 (1.88×)
MATH-500 1,020.0 2,378.4 (2.33×)
HumanEval 1,076.3 2,295.0 (2.13×)
MBPP 984.1 1,562.3 (1.59×)
MT-Bench 1,001.9 1,173.5 (1.17×)

Concurrency 32

Task Autoregressive DFlash 2
GSM8K 1,358.5 4,043.1 (2.98×)
MATH-500 1,845.4 4,440.1 (2.41×)
HumanEval 1,930.6 4,811.0 (2.49×)
MBPP 1,570.7 3,124.7 (1.99×)
MT-Bench 1,691.6 2,287.1 (1.35×)

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
2
Safetensors
Model size
0.9B params
Tensor type
BF16
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for incoai/Ornith-1.5-122B-DFlash2

Finetuned
(4)
this model
Quantizations
1 model

Collection including incoai/Ornith-1.5-122B-DFlash2