Qwen3.8-27B-DFlash
A DFlash speculative-decoding draft for the Qwen3.8-27B verifier. The draft is trained from scratch (random initialization) against teacher signals from the verifier; it is not a fine-tune of the 27B weights. This is an experimental research artifact and a proof of concept, not a production-ready speedup.
The model proposes up to 15 tokens per verification step. It is used with the 27B verifier; it is not a standalone language model.
Model details
| Release | v6 (epoch 1) |
| Architecture | DFlash draft (speculators, DFlashDraftModel) |
| Verifier | Qwen3.8-27B (teacher, not weight initialization) |
| Initialization | from scratch (random); no verifier weights copied |
| Transformer layers | 5 |
| Hidden size | 5120 (20 heads, 4 KV heads, head dim 256) |
| Draft vocabulary | 248,320 (full verifier vocab) |
| Block size | 16 → max 15 speculative tokens |
| Attention | non-causal in-block, sliding window 2048 |
| Target hidden layers | 6, 20, 34, 48, 62 |
sample_from_anchor |
false |
| Parameters / dtype | ~1.78 B / BF16 |
| File | model.safetensors (3.57 GB) |
| SHA-256 | ae3fee98221c231c306d29e438e994d44382e411fcdea4ca08a6e4e83c372724 |
Training data
Prompts were sampled from public datasets (chat, WildChat, competitive
programming, science/STEM, code, and math corpora). The answers, teacher
samples, and verifier hidden states were generated locally with the BF16
Qwen3.8-27B on the Strix Halo machine. Totals below combine the v5 and v6
corpora, which are disjoint by primary_id (deduplicated):
| category | rows | tokens | supervised tokens | avg tokens/row |
|---|---|---|---|---|
| chat | 33,643 | 92,794,473 | 46,222,871 | 2,758 |
| competitive_programming | 16,578 | 98,820,566 | 77,684,703 | 5,961 |
| wildchat | 34,401 | 83,283,527 | 42,205,540 | 2,421 |
| science_stem | 11,344 | 59,245,318 | 56,315,634 | 5,223 |
| code | 10,477 | 36,933,155 | 34,377,396 | 3,525 |
| math | 5,003 | 35,662,113 | 35,147,908 | 7,128 |
| total | 111,446 | 406,739,152 | 291,954,052 | 3,650 |
"Tokens" counts prompt + answer; "supervised tokens" are the answer tokens used for the draft loss (~71.8% of the total).
Provenance
- Current release: v6 epoch-1 checkpoint.
- SHA-256 of
model.safetensors:ae3fee98221c231c306d29e438e994d44382e411fcdea4ca08a6e4e83c372724. - Draft weights were trained against BF16 teacher hidden states at the five target layers above.
- The previous release (v5-e4) remains available at the
v5-e4tag.
Usage
config.py is required because the checkpoint uses the speculators
configuration layout:
import speculators # noqa: F401 (registers the "dflash" speculator type)
from transformers import AutoConfig
config = AutoConfig.from_pretrained(
"asf0/Qwen3.8-27B-DFlash",
trust_remote_code=True,
)
Installing speculators (the checkpoint records 0.8.0.dev0) and a recent
transformers is required. Loading the draft together with the verifier is
handled by the speculators/DFlash runtime; this repository only contains the
draft weights.
For llama.cpp, use the GGUF build instead:
asf0/Qwen3.8-27B-DFlash-GGUF.
Benchmarks
Measured on the same Strix Halo machine. Greedy decoding, thinking disabled,
Qwen3.8-27B Q8_0 verifier, q8_0 KV, llama.cpp, --spec-draft-n-max 15.
Current release (v6 epoch 1), 18-prompt balanced set, one session:
| config | tok/s | tok/step | ms/step | drafted/step | acceptance |
|---|---|---|---|---|---|
p-min 0.3 (recommended) |
18.99 | 3.22 | 169.7 | 5.75 | 38.7% |
p-min 0.4 |
18.53 | 3.11 | 167.9 | 4.16 | 50.7% |
Previous release (v5-e4), same 18-prompt set, same session:
| config | tok/s | tok/step | ms/step | drafted/step | acceptance |
|---|---|---|---|---|---|
p-min 0.3 |
18.49 | 3.17 | 171.2 | 5.92 | 36.6% |
p-min 0.4 |
18.36 | 3.10 | 168.8 | 4.16 | 50.5% |
v6 is +3.4% over v5 at the previous default (p-min 0.4) and +2.7% at
the best setting (p-min 0.3). Lower p-min drafts more aggressively:
acceptance drops but throughput rises.
Reference controls (older 12-prompt set, not directly comparable): native MTP 19.07 tok/s, DFlash2 20.95 tok/s.
Block size
dflash.block_size = 16 caps a draft step at 15 proposed tokens, so
--spec-draft-n-max above 15 has no effect. The sweep over
n-max {7,11,15} × p-min {0.1,0.2,0.3,0.4} confirmed 15 is the ceiling: lower
values lose throughput, higher values are clamped.
Limitations
- Not faster than DFlash2 or native MTP. It is close to MTP and still behind DFlash2; this is a research artifact.
- Requires a DFlash-enabled runtime. The GGUF needs a llama.cpp build with
--spec-type draft-dflash; this is not guaranteed to be in mainline. - Benchmarks are from a single machine and a modest prompt set; treat them as a reproducibility record rather than a universal speed claim.
Author
Built by asf0.
Citation
@misc{asf0_qwen38_dflash_2026,
title = {Qwen3.8-27B-DFlash: a DFlash speculative-decoding draft for Qwen3.8-27B},
author = {asf0},
year = {2026},
howpublished = {\url{https://huggingface.co/asf0/Qwen3.8-27B-DFlash}},
note = {Experimental speculative-decoding draft; verifier: Qwen3.8-27B}
}
License and attribution
Apache-2.0. The draft is trained from scratch; it is not a fine-tune of
Qwen3.8-27B, which is used as the
verifier and teacher (Apache-2.0). The DFlash architecture and checkpoint format
come from the speculators project (Apache-2.0). See
NOTICE.
- Downloads last month
- 23