The problem: autoregressive decoding is slow
Les LLM génèrent du texte 1 token à la fois. Chaque token nécessite un forward pass complet à travers le modèle — chaque poids, chaque couche — avant que le token suivant puisse commencer. Comme l’explique How inference works, cette phase de decode est memory-bandwidth-bound : le GPU lit des gigaoctets de poids depuis la mémoire pour produire un seul token, puis recommence pour le suivant. Les unités de calcul restent inactives la plupart du temps, en attente de données. Votre GPU ne fait pas de travail utile — il attend la mémoire. Le décodage spéculatif exploite cette capacité inutilisée. Au lieu de générer 1 token par forward pass, il devine plusieurs tokens à l’avance et les vérifie tous d’un coup.The core idea
Le décodage spéculatif utilise 2 modèles qui travaillent ensemble :- Draft model — un petit modèle rapide propose N tokens à l’avance (typiquement 4-8 tokens).
- Target model — le grand modèle que vous voulez réellement utiliser vérifie tous les N tokens proposés en un seul forward pass.
Le décodage spéculatif ne change pas la qualité de la sortie. Le modèle cible prend toujours chaque décision d’acceptation, donc la distribution de sortie est mathématiquement identique au décodage autoregressif normal.
N-gram speculative decoding
How it works
How it works
Au lieu d’utiliser un modèle de brouillon séparé, le décodage spéculatif n-gram examine les N derniers tokens dans la séquence en cours, recherche des motifs correspondants plus tôt dans le contexte, et propose les tokens qui suivaient ce motif. C’est de la recherche de motifs pure dans le texte existant.Par exemple, si les 4 derniers tokens sont
def calculate_total( et que le contexte contient plus tôt def calculate_total(items): return sum(, le moteur propose items, :, return, sum comme 4 tokens suivants. Le modèle cible les vérifie ensuite.When to use it
When to use it
Best for: code generation, structured output, repetitive text, templates, log parsing.Worst for: creative writing, diverse open-ended responses, short contexts with no repeating patterns.La spéculation n-gram brille lorsque votre sortie contient des structures répétitives — signatures de fonctions, schémas JSON, code standard. Elle échoue silencieusement (faible taux d’acceptation, retour au décodage normal) lorsque le texte est trop diversifié pour la recherche de motifs.
Implementation
Implementation
Draft model speculative decoding
How it works
How it works
Un modèle plus petit de la même famille génère les tokens candidats. Par exemple, Llama-3.1-8B fait le brouillon pour Llama-3.1-70B. Le petit modèle lance sa propre génération autoregressive pour proposer 4-8 tokens, puis le grand modèle les vérifie tous en 1 forward pass.Le taux d’acceptation — la fraction de draft tokens que le modèle cible accepte — se situe typiquement entre 70% et 85% pour des paires de modèles bien assorties. Un taux d’acceptation plus élevé signifie plus d’accélération.
When to use it
When to use it
Best for: general-purpose generation when you have VRAM headroom for the smaller model.Memory cost: les deux modèles doivent être chargés simultanément. Un modèle de brouillon 8B ajoute environ 4-5 GB (en quantification Q4) en plus du modèle cible. Planifiez votre model fit en conséquence.Speedup: 1.5-2.5x depending on acceptance rate and draft token count. Diminishing returns past 6-8 draft tokens because acceptance drops for later tokens in the sequence.
Implementation
Implementation
DFlash: a drafter that ships with the model
La plupart des configurations de modèles de brouillon vous laissent trouver un petit modèle compatible et ajuster l’association vous-même. DFlash, le modèle de brouillon de Meta pour Muse Glimmer 30B, passe cette étape : il est livré dans la même release que sa cible et propose des blocs de 16 tokens, que Muse Glimmer vérifie en 1 forward pass. Meta rapporte 3.1x sur une RTX 5090, 1.8x sur une Apple M5 Max, et 1.5x sur une Apple M4 Max. Ce sont des chiffres fournisseurs sans reproduction indépendante encore, donc benchmardez votre propre matériel avant de vous y fier.Model-native speculative heads: MTP and DSpark
How it works
How it works
Certaines architectures de modèles sont entraînées à prédire plusieurs tokens futurs simultanément depuis un seul forward pass. Le modèle lui-même produit plusieurs tokens candidats d’un coup — pas de modèle de brouillon séparé, pas de recherche de motifs. Les représentations internes du modèle génèrent les tokens spéculatifs.C’est fondamentalement différent de la spéculation externe : les têtes multi-token sont entraînées conjointement avec le modèle de base, donc elles partagent la même compréhension du contexte.
When to use it
When to use it
Best for: models that natively support it. There is no configuration choice — if the model was trained with MTP heads, you enable them; if not, you cannot add them.Current DeepSeek example:
DeepSeek-V4-Flash-0731 bundles its DSpark module in the official checkpoint. Select Qwen models use MTP heads instead.Advantage: no separate draft-model checkpoint or model-pair tuning.Disadvantage: requires specific model training. You cannot apply MTP to an arbitrary checkpoint.Implementation
Implementation
--speculative-draft-model-path pour ce modèle.La fiche modèle officielle 0731 documente DSpark pour vLLM et SGLang. Le support matériel varie encore, donc utilisez la recette runtime correspondante et benchmardez votre checkpoint exact. Voir DeepSeek V4 Flash 0731 local hardware.
EAGLE (extrapolation algorithm for greater language-model efficiency)
How it works
How it works
EAGLE entraîne un petit réseau de “tête” au-dessus des états cachés du modèle cible. Au lieu de charger un modèle de brouillon complet, il attache un réseau neuronal léger aux représentations intermédiaires du modèle cible et les utilise pour prédire les tokens futurs.Comme le réseau de tête lit l’état interne propre du modèle cible, il atteint des taux d’acceptation plus élevés (80-90%) que les modèles de brouillon naïfs. Le réseau de tête est minuscule comparé à un modèle complet — typiquement 5-10% de la taille du modèle cible.
When to use it
When to use it
Best for: when available, EAGLE offers the best speedup-to-memory ratio of any technique.Current status: research stage with limited runtime support. vLLM and SGLang have experimental EAGLE integration, but it requires pre-trained EAGLE head checkpoints that are not yet widely published for most model families.When EAGLE support matures, expect: 2-3x speedup with only 5-10% memory overhead — significantly better than full draft models.
Implementation
Implementation
Les checkpoints de tête EAGLE sont spécifiques au modèle et à l’architecture. Vérifiez qu’un checkpoint EAGLE publié existe pour votre modèle cible exact avant d’essayer cette technique.
Comparison
N-gram
Extra memory: none
Speedup: 1.2-1.5x
Requires training: no
Runtime support: vLLM, llama.cpp
Best for: repetitive content, code, structured output
Draft model
Extra memory: 20-30% extra
Speedup: 1.5-2.5x
Requires training: no (use a smaller model from the same family)
Runtime support: vLLM, llama.cpp
Best for: general-purpose generation with VRAM headroom
Multi-token prediction
Extra memory: none
Speedup: 1.5-2x
Requires training: yes (model-specific)
Runtime support: vLLM (select models only)
Best for: model-native heads such as DeepSeek V4 Flash 0731 DSpark and supported Qwen MTP variants
EAGLE
Extra memory: 5-10%
Speedup: 2-3x
Requires training: yes (head network)
Runtime support: experimental
Best for: best speedup-to-memory ratio when available
When to use speculative decoding
Use it when:- Votre charge de travail est decode-bound — de longues générations où la plupart du temps est passé à produire des tokens, pas à traiter le prompt
- Vous avez de la VRAM headroom pour un modèle de brouillon (au moins 5-10 GB libres au-delà du modèle cible)
- Vous générez de la sortie structurée ou répétitive — code, templates, JSON, logs
- Vous servez un seul utilisateur ou une charge de travail à faible concurrence
- Votre charge de travail est prefill-bound — des sorties courtes avec de longues entrées (summarization, classification). Le décodage spéculatif n’accélère que la phase de decode.
- Vous êtes déjà à votre limite de VRAM. Le modèle de brouillon ou les entrées supplémentaires de cache KV peuvent vous pousser en OOM. Voir DGX Spark memory tuning pour la planification de capacité.
- Vous utilisez le continuous batching avec une forte concurrence. Le décodage spéculatif entre en conflit avec la planification de lots efficace dans la plupart des runtimes — le pass de vérification suppose une longueur de brouillon fixe par requête, ce qui complique la composition des lots.
Practical setup guide
N-gram speculation in vLLM
Le point de départ le plus simple — pas de téléchargement supplémentaire, pas de mémoire supplémentaire :--ngram-prompt-lookup-max définit la taille de fenêtre pour la recherche de motifs. Des valeurs plus grandes trouvent plus de correspondances dans les contextes longs mais ralentissent légèrement l’étape de brouillon. Commencez à 5 et augmentez si l’acceptation est basse.
Draft model in vLLM
Pour une accélération plus forte quand vous avez la VRAM :Réduisez
--max-model-len si vous rencontrez des OOM. Les deux modèles partagent le même pool de VRAM, et le cache KV du modèle de brouillon s’ajoute au total.N-gram speculation in llama.cpp
--lookup-cache-static met en cache les recherches n-gram à travers les tokens, améliorant la vitesse de brouillon pour les motifs répétitifs.
How to measure the speedup
Lancez le même prompt deux fois — une fois avec le décodage spéculatif et une fois sans — et comparez les tokens par seconde :x-tokens-per-second ou calculez à partir de usage.completion_tokens divisé par le temps réel.
Pour du benchmark systématique, utilisez l’outil de benchmark intégré de vLLM :
Go deeper
Decode and prefill power
Ajustez les phases de prefill et de decode pour un débit maximal sur votre matériel.
How inference works
Comprenez le prefill, le decode, et pourquoi la bande passante mémoire est le goulot d’étranglement.
vLLM on DGX Spark
Configurez vLLM avec des paramètres optimaux incluant le support du décodage spéculatif.
Model fit
Calculez si votre modèle cible plus un modèle de brouillon tiennent dans la VRAM.
Test your deployment
Méthodologie de benchmark systématique pour les déploiements LLM locaux.