The Draft-Model Family#
AngelSpec supports several draft architectures behind a common training pipeline. They differ in how they predict tokens (autoregressive vs. block-parallel), how they consume the target model’s hidden states, and what loss they optimize. All are selected by the draft model’s config, so switching architectures is a config change, not a code change.
Comparison#
Architecture |
Prediction |
How it uses target hidden states |
|---|---|---|
Eagle3 |
Autoregressive (test-time training) |
Input fusion — hidden states concatenated into the draft input |
DFlash |
Block-parallel |
Dual-source KV — multi-layer hidden projected into attention K/V |
DFlare |
Block-parallel |
DFlash, with a learnable per-layer mix of the captured target layers |
DFly |
Block-parallel |
DFlash FC context plus DFlare’s per-layer fusion as a residual (DFlareV2), with optional hidden-state correction |
DSpark |
Block-parallel + autoregressive head |
DFlash backbone, plus a Markov bias and an accept-rate head |
MTP |
Single-head, test-time training |
A full MoE decoder layer consuming the target’s last hidden state |
Autoregressive drafters (Eagle3, MTP) predict one token at a time, feeding each step’s output back in — accurate per token, but N sequential forward passes to draft N tokens.
Block-parallel drafters (DFlash, DFlare, DFly, DSpark) predict a whole block of tokens in a single forward pass using a block-causal attention mask, trading some per-token accuracy for far fewer forward passes.
Selecting an architecture#
The draft config’s architectures field (and, for the DFlash family, a model_arch field)
picks the model. The trainer dispatches on the config type:
DFlashConfig → DFlash (model_arch="dflare" → DFlare)
DSparkConfig → DSpark (model_arch="dflare" → DFlare-backbone variant, model_arch="dfly" → DFly)
MTPConfig → MTP
LlamaConfig → Eagle3 (Llama family)
DeepseekV3Config → Eagle3 (DeepSeek MLA family)