Décodage spéculatif : comment deux LLM peuvent être plus rapides qu'un
##Présentation
En 2023, Google DeepMind a publié un article qui défiait discrètement l'une des hypothèses les plus fondamentales de l'IA basée sur les transformateurs : générer du texte, un jeton à la fois, est le seul moyen d'y parvenir. Ils ont appelé cette technique échantillonnage spéculatif — et la communauté des chercheurs a rapidement découvert son potentiel à l'échelle industrielle sous la bannière plus large du décodage spéculatif.
Aujourd’hui, le décodage spéculatif est une technologie open source prête à la production que toute équipe sérieuse de service d’inférence devrait comprendre. Il réalise quelque chose qui semblait auparavant contradictoire : 2 à 3 fois plus d'accélération dans l'inférence LLM sans sacrifier ne serait-ce qu'un seul iota de qualité de sortie. vLLM, TensorRT-LLM, Hugging Face « text-generation-inference » et les fournisseurs de cloud ont tous livré des implémentations de niveau production. NVIDIA a démontré des améliorations de débit de 3,6 fois avec sa propre variante (Arctic Inference) en décembre 2025.
L’idée contre-intuitive est simple : exécuter deux modèles est plus rapide qu’en exécuter un. Mais l’exécution est élégante – une version condensée de ce que font les scientifiques en chef lorsqu’ils préparent un assistant à effectuer le travail évident pendant qu’il prend des décisions difficiles.
Cet article retrace la technique depuis ses origines mathématiques à travers les trois principales familles d'implémentation (draft-target, EAGLE, Medusa), les mathématiques du taux d'acceptation qui régissent les accélérations, les données d'analyse comparative de la production et un guide concret pour la déployer dans votre propre pile d'inférence.
Table of Contents
- Le problème : le décodage autorégressif est fondamentalement lent
- Comment fonctionne le décodage spéculatif
- Variantes techniques : EAGLE, Medusa, Draft Model
- Le calcul du taux d'acceptation : quand atteint-il le seuil de rentabilité
- Production Dedéploiement : EAGLE-3, vLLM, Cloud
- Comparaison : décodage spéculatif par rapport à d'autres techniques d'accélération d'inférence
- Mise en route : 3 façons d'activer le décodage spéculatif dès aujourd'hui
- Conclusion et prochaines étapes
Le problème : le décodage autorégressif est fondamentalement lent
!Speculative decoding architecture: draft model + target model parallel inference flow
Pour comprendre pourquoi le décodage spéculatif fonctionne, vous devez d’abord comprendre à quel point l’inférence LLM standard est réellement goulot d’étranglement.
Le goulot d'étranglement autorégressif
La génération LLM standard est séquentielle par conception. Pour produire le jeton suivant, le modèle effectue une passe avant complète : chargeant les poids de chaque couche à partir de la VRAM, calculant l'attention sur tous les jetons précédents, projetant l'état caché final à travers la tête du modèle de langage et échantillonnant le jeton suivant. Puis répétez.
Cela signifie que chaque jeton nécessite un cycle complet de charge et de poids. Sur les GPU modernes, la capacité arithmétique est énorme, mais pour alimenter ces cœurs tenseurs, il faut tirer des poids via un bus mémoire fini. Résultat : L'inférence LLM est limitée en mémoire et les unités arithmétiques passent la majorité de leur temps inactives, à attendre les lectures de la VRAM.
Ce n'est pas un bug matériel, c'est une conséquence architecturale de la génération autorégressive. Le résoudre nécessite une approche différente de la boucle de génération.
Pourquoi la quantification post-formation ne suffit pas
Les techniques d'accélération telles que la quantification INT4/INT8, GPTQ et AWQ réduisent l'empreinte de poids par passe avant, apportant plus de poids dans le cache par cycle. Mais ils sont fondamentalement limités : ils réduisent le coût de chaque étape séquentielle, mais ils ne modifient pas le nombre d'étapes séquentielles. Pour générer 100 jetons, vous avez toujours besoin de 100 passes avant, même si chaque passe est plus rapide.
Ce dont vous avez réellement besoin, c'est de produire plusieurs jetons par passe directe à partir du grand modèle de haute qualité. Le décodage spéculatif le fait sans compromettre les garanties statistiques du résultat.
Comment fonctionne le décodage spéculatif
Le décodage spéculatif (SD) fonctionne sur un paradigme simple mais puissant : rédiger puis vérifier.
L'algorithme de base
Étape 1 : Le projet de mécanisme propose K tokens à l'avance
Étape 2 : Le modèle cible vérifie TOUS les K jetons de draft dans un SEUL parpasse avant allélique
Étape 3 : Le préfixe accepté le plus long des brouillons de jetons est ajouté à la sortie
Étape 4 : Le cycle se répète à partir du dernier jeton acceptéLa garantie mathématique est la suivante : la distribution de sortie finale est exactement identique à ce que le modèle cible générerait tout seul. Il n'y a aucune approximation, aucune perte de fidélité.
Voici l'exemple concret de l'implémentation de NVIDIA :
Préfixe de saisie :
"Le rapide"Le projet de modèle propose :brown→fox→hopped→overLe modèle cible vérifie les 4 jetons en parallèle :
marron= ✅ (P_target ≥ P_draft)renard= ✅ (P_target ≥ P_draft)hopped= ❌ (P_target << P_draft)over= ❌ (rejeté — premier rejet)Le modèle cible génère la suite corrigée de
"Le renard brun rapide"→a sauté→le→paresseux→chien
Résultat : 2 jetons acceptés sur 3 tours spéculatifs pour une accélération de ~1 + α × γ, où α est le taux d'acceptation et γ est le nombre de jetons spéculatifs proposés par tour.
L'intuition clé
Accélération = 1 / (1 - α × γ) où :
- α (alpha) = fraction de draft tokens acceptée par le modèle cible, de 0,0 à 1,0
- γ (gamma) = nombre de tokens spéculatifs proposés par tour de draft
Cette formule révèle pourquoi la qualité du projet de modèle est extrêmement importante :
- À α = 0,8, γ = 5 : accélération ≈
1 / (1 - 0,8 × 5) = 1 / 0 = ∞→ effectivement infini (chaque tour accepte les 5 = terminé) - De manière plus réaliste α = 0.5, γ = 4 : accélération ≈
1 / (1 - 2.0) = −1 / 1 = 1.0×→ pas d'accélération (modèle mal calibré)
Le but du jeu est de rendre α aussi proche que possible de 1,0. C'est pourquoi la conception du modèle préliminaire, et pas seulement le déploiement, est le levier essentiel.
Variantes techniques : EAGLE, Medusa, Draft Model
Il n’existe pas de méthode unique pour mettre en œuvre un décodage spéculatif. Chaque approche fait des compromis différents entre la complexité du déploiement, le plafond d'accélération et la précision.
1. Projet de modèle (classique)
La formulation originale : un modèle de brouillon plus petit et plus rapide (par exemple, une variante distillée ou quantifiée de la cible, souvent 4 à 10 fois moins de paramètres) s'exécute de manière autorégressive pour proposer des jetons γ. Le modèle cible vérifie ensuite.
- Plus : Simple à mettre en place, bien étudié, fonctionne avec n'importe quelle famille de modèles
- Inconvénients : les distributions de projets et d'objectifs divergent inévitablement, plafonnant l'α autour de 0,5 à 0,7 dans de nombreux scénarios du monde réel.
- Idéal pour : inférence à usage général, tâches à grande diversité (écriture créative, discussion ouverte)
2. EAGLE (Algorithme d'extrapolation pour une plus grande efficacité du modèle de langage)
EAGLE remplace le projet de modèle séparé par une tête de prédiction légère attachée directement aux représentations internes du modèle cible. Il prend les sorties à l'état caché des couches internes du modèle cible (avant la tête LM) et les projette - en une seule passe - sur un arbre entier de jetons candidats suivants simultanément.
- EAGLE-3 ajoute des représentations de fonctionnalités fusionnées multicouches (intégrations de bas, moyen et haut niveau)
- Utilise la vérification parallèle basée sur un arbre : plusieurs hypothèses de jetons explorées simultanément dans un brouillon d'arbre, puis vérifiées en un seul lot.
- Aucun projet de modèle distinct requis : utilise le propre cache KV et les états internes du modèle cible
Résultats : EAGLE-3 atteint une accélération de 3,0 à 6,5 fois par rapport au décodage autorégressif Vanilla et une amélioration de 20 à 40 % par rapport à EAGLE-2 (arXiv 2503.01840).
: Architecture de la tête EAGLE
┌───────────────────── ─────────────────────┐
│ Modèle cible (poids figés) │
│ ... Couche 28 : hided_state extrait│
│ ... Couche 24 : Hidden_state extrait │
│ ... Couche 20 : Hidden_state extrait │
└──────────────┬────── ─────────────────────┘
│ concaténation de fonctionnalités multicouches
┌────────▼─────────┐
│ Tête d'EAGLE │ ← minuscule, entraînable (~ quelques % de
│ (linéaire + norme │ paramètres du modèle cible)
│ + softmax LM) │
└────────┬──────────┘
│
Projet d'arbre de jetons K
│
┌────────▼──────────┐
│ Target LM Head │ ← convertit les états cachés → probabilités de jetons
└──────────────────┘
Passe avant unique = arbre entier vérifié- Avantages : α le plus élevé en pratique (0,7–0,9+), pas de modèle distinct à servir, absence d'inadéquation de distribution
- Inconvénients : nécessite de fixer une tête par modèle cible et de l'entraîner ; la tête doit être affinée par famille de modèles
- Idéal pour : services d'inférence de production où le taux d'acceptation est le goulot d'étranglement
3. Medusa (décodage multi-têtes)
Medusa adopte une approche structurellement différente : au lieu d'un mécanisme de brouillon séparé, elle ajoute des têtes de prédiction supplémentaires directement au-dessus d'un LLM gelé. Chaque tête prédit une position future différente du jeton :
: Configuration multi-têtes Medusa
┌──────────────────────────┐
│ Base LLM (gelée) │
└──────────┬───────────────┘
│ état caché à la position t
┌──────▼──────┐
│ LM Head 0 │ → prédit le jeton t+1
│ LM Head 1 │ → prédit le jeton t+2
│ LM Head 2 │ → prédit le jeton t+3
│ LM Head 3 │ → prédit le jeton t+4
└──────┬───────┘
│
Draft jetons [t+1, t+2, t+3, t+4]
│
┌──────▼────────────-┐
│ Target LM vérifie │
│ tout en un seul passage │
└─────────────────────┘- Avantages : Le modèle original reste complètement figé, aucun temps d'inférence pour le mécanisme de dessin, les têtes Medusa sont faciles à entraîner
- Inconvénients : le taux d'acceptation a tendance à être en retard sur EAGLE pour les tâches à long terme ; Les têtes de Medusa sous-performent sur des chaînes de raisonnement complexes
- Idéal pour : les équipes capables d'affiner leur modèle cible ne souhaitent aucune surcharge d'inférence lors de la génération de brouillons.
Remarque : Medusa est antérieure à EAGLE mais reste un choix pratique, en particulier pour l'architecture open source Medusa-2 à goulot d'étranglement et l'extension Hydra pour la dépendance séquentielle de la tête.
Le calcul du taux d'acceptation : quand atteint-il le seuil de rentabilité ?
Le décodage spéculatif n'est pas gratuit : chaque tour spéculatif a un coût de calcul qui doit être récupéré en évitant les passes séquentielles. Le seuil de rentabilité est :
Accélération nette > 1,0 lorsque : γ × α > 1Où γ est le nombre de jetons spéculatifs et α est le taux d'acceptation.
Benchmarks empiriques à partir de déploiements réels
Utilisation de Llama-3.1-8B-Instruct comme modèle cible avec une latence E2E de base de 4 065 ms (d'après le test patched-vLLM de BentoML) :
Ce qu'il faut retenir d'un point de vue pratique : un mécanisme de traction bien conçu atteignant α ≥ 0,6 avec γ ≥ 5 est le seuil minimum pour une accélération significative. À α ≥ 0,8, des accélérations spectaculaires de 3×+ sont réalisables. C'est exactement pourquoi la rédaction au niveau des fonctionnalités d'EAGLE converge si efficacement : elle évite l'inadéquation de distribution qui maintient l'α du modèle de projet plafonné autour de 0,5 à 0,65.
Production Dedéploiement : EAGLE-3, vLLM, Cloud
vLLM : production par défaut
vLLM v0.8.4+ est livré avec 7 méthodes de spéculation intégrées :
vllm sert méta-llama/Llama-3-8B-Instruct \
--speculative-config '{
"méthode": "eagle3",
"num_speculative_tokens": 7
}'L'indicateur intégré --speculative-config gère en interne toute la comptabilité du cache KV, l'attention aux arbres et l'échantillonnage des rejets. L'extension à d'autres frameworks (HuggingFace TGI, SGLang) suit le même modèle : une seule bascule de configuration apporte une accélération de 2 à 3 fois.
Inférence NVIDIA Arctique
En poussant EAGLE plus loin, l'Arctic Inference de NVIDIA offre le débit de décodage spéculatif mesuré le plus élevé sur les GPU NVIDIA, spécifiquement optimisé sous TensorRT-LLM et le mécanisme de report de vLLM. Les benchmarks sur Llama-3.1-70B montrent que Arctic Inference atteint un gain de débit de 3,6× par rapport au décodage autorégressif standard (fonctionnalité vLLM v0.8.5+).
AWS Trainium
AWS a publié des résultats exécutant un décodage spéculatif sur ses accélérateurs Trainium personnalisés avec vLLM. Principale constatation : pour les charges de travail lourdes en décodage (typiques de la génération de type chatbot avec des fenêtres contextuelles modérées), le décodage spéculatif a réduit la latence totale par requête d'un facteur de 1,4 à 1,8 dans la famille de modèles testés, tout en maintenant une précision du modèle cible d'environ 100 %.
Projet de formation sur le modèle
Pour le décodage spéculatif de type brouillon, le brouillon de modèle devrait idéalement partager la même architecture et le même tokenizer que la cible. L'équipe BentoML a constaté que la formation d'un modèle de brouillon personnalisé spécifiquement adapté à la répartition de la charge de travail d'inférence produisait des taux d'acceptation considérablement plus élevés par rapport aux modèles de brouillon génériques prêts à l'emploi – jusqu'à 3 fois plus rapides par rapport aux lignes de base séquentielles contre seulement 1,8 à 2,0 × avec les rédacteurs génériques.
Comparaison : décodage spéculatif par rapport à d'autres techniques d'accélération d'inférence
: Comparaison des techniques d'accélération
┌──────────────────────────────── ──┬──────────────┬──────────────┐
│ Technique │ Accélération │ Coût │
├──────────────────────────────── ──┼──────────────┼──────────────┤
│ Quantification INT4/INT8 │ 1,2–1,5× │ ✓ Gratuit │
│ GPTQ / AWQ (4 bits) │ 1,5–2,0× │ ✓ Gratuit │
│ Quantification du cache KV (KVCache) │ 1,1–1,3× │ ✓ Gratuit │
│ Traitement par lots continu (vLLM) │ 1,5–5,0× │ ✓ Gratuit │
│ Décodage spéculatif (EAGLE) │ 1,5–6,5× │ 1–2 % de paramètres │
│ Décodage spéculatif (EAGLE-3) │ 2,0–6,5× │ Paramètres 1–2 % │
│ **BitNet b1.58 (1,58 bits)** │ 2–5× │ ⚠ Recycler │
│ Distillation (TinyLlama, etc.) │ 1,0–1,3× │ Coût élevé │
└──────────────────────────────── ──┴──────────────┴──────────────┘Remarque : BitNet b1.58 atteint un débit brut similaire à partir d'un mécanisme complètement différent : passant des poids FP16 au ternaire {-1, 0, +1}. Il couvre entièrement la dimension efficacité, tandis que le décodage spéculatif couvre la dimension vitesse par jeton. Ce ne sont pas des alternatives ; ils se complètent.
Mise en route : 3 façons d'activer le décodage spéculatif dès aujourd'hui
Option 1 : vLLM (EAGLE, zéro configuration au-delà du drapeau)
## Le vLLM standard sélectionne automatiquement EAGLE-3 s'il est disponible pour le modèle
vllm sert méta-llama/Llama-3.1-8B-Instruct \
--speculative-config '{"method": "eagle3", "num_speculative_tokens": 5}'Benchmark avec le script intégré :
exemples python3/features/speculative_decoding/spec_decode_offline.py \
--model méta-llama/Llama-3.1-8B-InstructOption 2 : TensorRT-LLM (EAGLE + Inférence Arctique)
à partir de tensorrt_llm importer LLM, SamplingParams
llm = LLM(
model="méta-llama/Llama-3.1-8B-Instruct",
spéculative_config={
"modèle": "sg2018/EAGLE-llama3.1-8B",
"méthode": "aigle",
"num_speculative_tokens": 5,
}
)Option 3 : Inférence de génération de texte HuggingFace (Medusa via Offload)
TGI prend en charge le décodage spéculatif dès le départ via le paramètre draft_model :
serveur de génération de texte --model-id méta-llama/Llama-3-8B-Instruct \
--speculate draft-model:meta-llama/Llama-3-8B-Instruct \
--spéculer-max 5Conclusion et prochaines étapes
Le décodage spéculatif est l'une de ces rares techniques où la théorie est élégante et le gain technique est réel et immédiat. A ce stade en 2025, il dispose de :
- ✅ Garantie théorique : la sortie est mathématiquement identique à la génération autorégressive vanille
- ✅ Implémentations de production multiples : vLLM, TensorRT-LLM, TGI et piles cloud natives
- ✅ 3,0 à 6,5× accélérations réelles dans les déploiements de production comparés
- ✅ Coût de qualité nul : accepte uniquement les jetons vérifiés par le modèle cible ; la sortie est garantie correcte
- ✅ Combinabilité : piles avec quantification, optimisation du cache KV et traitement par lots continu pour des accélérations composées
Les conseils pratiques pour toute équipe proposant des LLM aujourd'hui : dissociez la rédaction de la génération, choisissez une voie rapide (EAGLE-3 ou Medusa pour les familles de modèles de première classe, N-gram ou suffixe pour les cas sans frais généraux) et comparez votre propre α sur votre propre charge de travail - car les chiffres d'accélération théoriques ne sont aussi bons que votre taux d'acceptation réel.
Ce que vous pouvez faire aujourd'hui :
- 🚀 Activer le décodage spéculatif vLLM : un indicateur, aucun changement de code, accélération 2 à 3 fois sur n'importe quel modèle pris en charge en quelques minutes
- 📊 Évaluez-vous :
python3 examples/features/speculative_decoding/spec_decode_offline.py— mesurez la latence α, TPS et E2E sur votre charge de travail - 📚 Lire les articles fondateurs : Speculative Sampling (DeepMind, 2023) · EAGLE (2024) · EAGLE-3 (2025) · Méduse (2024)
- 🔧 Affinez une tête Medusa : Si vous possédez votre modèle cible et pouvez exécuter quelques époques d'entraînement, Medusa vous offre un mécanisme de tirage sans frais généraux et sans frais de service distincts.
Le décodage spéculatif n’est pas une technologie d’avenir. Il est ici, dans votre pile d'inférence, prêt à être à un seul drapeau de la transformation de 100 jetons par seconde en 300. Les ingénieurs qui l'activeront en premier déploieront moins cher, fonctionneront plus frais et serviront des utilisateurs plus satisfaits, sans compromettre un seul point de précision.