Speculative decoding for local LLMs: how much do MTP and DFlash really speed things up?
Quick answer
How much faster is MTP speculative decoding on a home GPU?
Across 20 measured MTP pairs on RigBase (same build, same model, with and without MTP) the median speed-up is 1.70x, ranging from 1.16x to 3.51x. Dense models gain more (1.84x median over 12 pairs) than mixture-of-experts models (1.40x median over 8 pairs).
Last updated:
Speculative decoding lets a cheap drafter propose several tokens that the big model then verifies in one pass. Qwen3.8 ships its own MTP head, and DFlash drafters exist for several models. RigBase lists 25 measured pairs from 18 builds where the same model was run on the same machine with and without it.
Summary by method
| Method | Pairs | Median speed-up | Range |
|---|---|---|---|
| MTP | 20 | 1.70x | 1.16x – 3.51x |
| DFlash | 4 | 2.00x | 0.81x – 4.18x |
| Other (KFlash / DSpark) | 1 | 1.10x | 1.10x – 1.10x |
Speed-up = speculative result ÷ the fastest plain-decode result for the same model on the same build. Both numbers come from the same source write-up; prompts, quants and engines can differ between the two rows, so open the build page before quoting a single ratio.
Every measured pair, fastest speed-up first
| Build | Model | Plain tok/s | With speculation tok/s | Speed-up |
|---|---|---|---|---|
| Nvidia GB10 (unified) | Qwen3.6 27B | 7.85 FP8 | 32.83 DFlash; NVFP4 | 4.18x |
| RTX 5090 Laptop GPU 24 GB | Qwen3.8 Flash-Next | 24.4 IQ3_S (ISTA-DASLab GGUF), experts of 34/48 layers in system RAM, no dr | 85.6 MTP; IQ3_S + model draft head, 8,120 of 24,576 experts on the card | 3.51x |
| RX 9070 XT 16 GB + Radeon AI PRO R9700 32 GB | Gemma 4 31B | 19.3 Q6_K, f16 KV | 52.2 MTP; Q6_K + MTP drafter, f16 KV | 2.70x |
| Intel Arc Pro B60 24GB | Qwen3.8 27B | 16.01 UD-Q4_K_M, KV f16, no drafter | 42.3 DFlash; UD-Q4_K_M + DFlash2 draft model (n=7), KV q8 draft | 2.64x |
| 2x Tesla V100 32 GB (PG500-216, sm_70) | Qwen3.8 27B | 42.4 Q8_0 | 104 MTP; Q8_0 | 2.45x |
| RX 9070 XT 16 GB + Radeon AI PRO R9700 32 GB | Qwen3.8 27B | 31.49 IQ4_XS-v3, q8_0 KV | 71.59 MTP; IQ4_XS-v3 + MTP head, q8_0 KV | 2.27x |
| Nvidia RTX Spark N1X, 6,144-core Blackwell GPU (unified) | Qwen3.8 27B | 15.2 Q4_K_M (17.1 GB, Unsloth) | 33.3 MTP; Q4_K_M (17.1 GB, Unsloth) + MTP (2 draft tokens) | 2.19x |
| AMD Radeon 8060S (integrated, Strix Halo) | Qwen3.8 27B | 12.1 Q4_K_M (17.1 GB, Unsloth) | 25 MTP; Q4_K_M (17.1 GB, Unsloth) + MTP (2 draft tokens) | 2.07x |
| AMD Ryzen AI Max+ 395 (Radeon 8060S iGPU, gfx1151) | Qwen3.8 Flash-Next | 16.8 UD-IQ4_XS, no speculation | 31.7 MTP; UD-IQ4_XS + native MTP draft head + ngram-mod | 1.89x |
| RTX 5090 32GB | Qwen3.8 27B | 73.6 Q4_K_M, f16 KV | 136.7 MTP; Q4_K_M, q4_0 KV | 1.86x |
| RTX 5060 Ti 16 GB | Qwen3.8 27B | 27.6 Unsloth UD-IQ4_XS, q8_0 KV | 50.2 MTP; Unsloth UD-IQ4_XS + mtp-Qwen3.8-27B-Q4_0 head, q8_0 KV | 1.82x |
| AMD Ryzen AI Max+ 395 (Radeon 8060S iGPU) | Qwen3.8 Flash-Next | 20.8 Q4_K_XL, KV q8_0, no MTP | 36.1 MTP; Q4_K_XL + MTP (dzannotti head), KV q8_0 | 1.74x |
| RTX 5060 Ti 16 GB | Qwen3.8 27B | 27.6 Unsloth UD-IQ4_XS, q8_0 KV | 45.8 MTP; Unsloth UD-IQ4_XS + mtp-Qwen3.8-27B-Q4_0 head, q8_0 KV | 1.66x |
| AMD Ryzen AI Max+ 395 (Radeon 8060S iGPU, gfx1151) | Qwen3.8 Flash-Next | 16.8 UD-IQ4_XS, no speculation | 25.4 MTP; UD-IQ4_XS + native MTP draft head + ngram-mod | 1.51x |
| 2x Intel Arc Pro B60 24GB (Maxsun Arc Pro B60 Dual 48G Turbo | Qwen3.8 27B | 16.13 Q4_K_L (Swift-Qwen3.8-27B GGUF, 17.72 GiB), no MTP | 24 MTP; Q4_K_L (Swift-Qwen3.8-27B GGUF) + embedded Q8_0 MTP head, KV q8_0 | 1.49x |
| RTX 3090 24GB | Qwen3.8 27B | 38.3 Unsloth UD-Q4_K_M, f16 KV | 56.37 MTP; Unsloth UD-Q4_K_M (nextn/MTP head embedded), f16 KV | 1.47x |
| AMD Radeon AI PRO R9700 32 GB (640 GB/s) | Qwen3.8 27B | 29.8 IQ4_NL | 43 MTP; IQ4_NL + MTP draft 2 | 1.44x |
| Apple M6 (12-core GPU, unified) | Qwen3.8 27B | 11.2 GGUF Q4_K_M | 15.3 DFlash; Splash package (incoai/Qwen3.8-27B-Splash) | 1.37x |
| Apple M5 Max (unified) | Qwen3.8 Flash-Next | 50 oQ4e MLX (4.72 bpw, Jundot/Qwen3.8-Flash-Next-oQ4e-mtp) | 64.5 MTP; oQ4e MLX (4.72 bpw) with MTP head | 1.29x |
| AMD Ryzen AI Max+ 395 (Radeon 8060S iGPU) | Qwen3.8 Flash-Next | 30.6 i1-Q4_K_M (Uncensored fine-tune), no draft | 38.7 MTP; i1-Q4_K_M (Uncensored fine-tune) + MTP draft | 1.26x |
| Apple M2 Ultra 60-core GPU (unified, Mac Studio) | Qwen3.8 27B | 33.6 oQ4e-mtp mixed 4/5-bit MLX (4.887 bits/weight, 16.2 GB loaded) | 41.6 MTP; oQ4e-mtp mixed 4/5-bit MLX (4.887 bits/weight, 16.2 GB loaded) | 1.24x |
| Apple M5 Max (unified) | Qwen3.8 Flash-Next | 50 oQ4e MLX (4.72 bpw, Jundot/Qwen3.8-Flash-Next-oQ4e-mtp) | 59.3 MTP; UD-IQ4_XS + mtp-Qwen3.8-Flash-Next-Q8_0 head | 1.19x |
| AMD Ryzen AI Max+ 395 (Radeon 8060S iGPU) | Qwen3.8 Flash-Next | 30.6 i1-Q4_K_M (Uncensored fine-tune), no draft | 35.5 MTP; i1-Q4_K_M (Uncensored fine-tune) + MTP draft | 1.16x |
| Apple M6 (12-core GPU, unified) | Qwen3.6 35B-A3B | 63.2 MLX 4-bit | 69.3 KFlash; MLX affine 4-bit (group 64) + MTP head and DFlash2 drafter | 1.10x |
| Apple M6 (12-core GPU, unified) | Qwen3.6 35B-A3B | 63.2 MLX 4-bit | 51.5 DFlash; Splash package (incoai/Qwen3.6-35B-A3B-Splash) | 0.81x |
How to read this
- Dense models benefit most. One verification pass reads the weights once and serves several tokens. MoE models route different tokens to different experts, so verification reads more weights.
- Prompt type matters. Code is predictable and accepts many drafted tokens; open prose accepts fewer. Several sources report code and prose separately, and RigBase lists the lower figure as the headline.
- Don't compare across modes. A speculative number is not a like-for-like answer to a plain-decode number on another rig. Filter the builds table by speculative-decoding tag, or use the VRAM tiers, which show plain results first.
- Context and power. Gains shrink at deep context and when GPUs are power-capped; the build pages list both where the source states them.
Related: Is Q4 good enough? · GGUF vs AWQ vs FP8 vs NVFP4 · Qwen3.8 27B results · Qwen3.8 Flash-Next results · free dataset
FAQ
How much faster is MTP speculative decoding on a home GPU?
Across 20 measured MTP pairs on RigBase (same build, same model, with and without MTP) the median speed-up is 1.70x, ranging from 1.16x to 3.51x. Dense models gain more (1.84x median over 12 pairs) than mixture-of-experts models (1.40x median over 8 pairs).
Can speculative decoding make a model slower?
Yes. 1 of the 25 pairs below is slower with speculative decoding than without it. It is most likely on mixture-of-experts models, where verifying several drafted tokens reads many more expert weights, and on prose where few drafted tokens are accepted.
Is the output the same with and without MTP or DFlash?
In theory yes, because the big model verifies every drafted token. In practice numerical differences can change near-tied tokens; one measured Mac test found different greedy text in 7 of 8 scenarios (see its build page) and did not judge quality. RigBase lists speed only.
Which speed should I compare my own setup to?
Compare like with like: plain decode against plain decode, MTP against MTP. RigBase tags every result with its speculative-decoding mode and the how-it-was-measured line on each build page.