2 · Avant DSpark : huit ans de méthodes¶
Toutes les méthodes qui suivent partagent le schéma du chapitre 1 — proposer, puis vérifier. Ce qui les distingue est d'où vient le brouillon et combien il coûte.
2018 — Le décodage parallèle par blocs¶
Stern, Shazeer et Uszkoreit proposent d'ajouter au modèle des têtes de sortie supplémentaires, prédisant les positions \(k+1\), \(k+2\), \(k+3\), puis de vérifier le bloc obtenu. L'idée du « proposer un bloc, valider ce qui tient » est déjà entière, mais l'article précède les grands modèles de langage : il visait la traduction automatique, et la règle d'acceptation n'y préserve pas la distribution.
2022–2023 — Le décodage spéculatif proprement dit¶
Deux articles quasi simultanés fixent la méthode moderne :
- Leviathan, Kalman et Matias (Google), Fast Inference from Transformers via Speculative Decoding, arXiv 2211.17192 ;
- Chen et al. (DeepMind), Accelerating Large Language Model Decoding with Speculative Sampling, arXiv 2302.01318.
Leur apport décisif est la règle d'acceptation-rejet vue au chapitre précédent, qui rend la méthode exacte. Le brouillon est ici un modèle séparé et plus petit de la même famille — typiquement un 7B pour brouillonner un 70B.
Le défaut est immédiat : il faut posséder, entraîner et surtout héberger un second modèle, avec sa propre mémoire et son propre cache.
2023 — Arbres de brouillons, et brouillons sans modèle¶
SpecInfer (Miao et al., arXiv 2305.09781) remarque qu'on n'est pas obligé de proposer une seule séquence. On propose un arbre de continuations, et un masque d'attention bien construit permet de toutes les vérifier dans la même passe. La longueur acceptée monte parce qu'on couvre plusieurs hypothèses à la fois. La vérification en arbre est devenue un standard, reprise par presque tout ce qui suit.
En parallèle, une idée minuscule s'impose en pratique : le prompt lookup (ou décodage par \(n\)-grammes). Le brouillon n'est produit par aucun réseau — on cherche simplement les derniers jetons émis dans le contexte, et on recopie ce qui suivait. Coût quasi nul, inutile en conversation ouverte, redoutable en résumé, en édition de code ou en RAG, où le modèle recopie beaucoup.
Intuition
Un brouillon n'a pas besoin d'être intelligent. Il a besoin d'avoir souvent raison, et de coûter peu. Le copier-coller satisfait le second critère de manière imbattable.
2024 — Le brouillon rentre dans le modèle¶
L'année où l'on cesse d'héberger un second modèle.
Medusa (Cai et al., arXiv 2401.10774) greffe sur le dernier état caché du modèle cible plusieurs têtes légères, prédisant chacune une position d'avance. C'est simple, peu coûteux, et cela se combine à la vérification en arbre. Mais les têtes sont indépendantes : la tête qui prédit la position \(k+3\) ignore ce que la tête \(k+2\) a choisi. L'acceptation s'effondre donc vite quand on allonge le brouillon.
EAGLE (Li et al., arXiv 2401.15077) corrige exactement ce point. Au lieu d'autoregresser sur les jetons, on autoregresse sur les vecteurs de caractéristiques internes du modèle cible, plus informatifs et plus réguliers, avec une seule petite couche de transformeur. Deux itérations suivent : EAGLE-2 (arXiv 2406.16858) rend l'arbre de brouillons dynamique, guidé par la confiance ; EAGLE-3 (arXiv 2503.01840) abandonne la contrainte de prédiction de caractéristiques et fusionne plusieurs niveaux de représentation.
EAGLE-3 est devenu le point de comparaison du domaine, intégré à vLLM, SGLang et TensorRT-LLM. C'est la référence face à laquelle tout nouvel article se situe.
D'autres pistes de la même période méritent d'être connues :
- Lookahead decoding (arXiv 2402.02057) fabrique et met en cache des \(n\)-grammes à la volée, sans aucun modèle de brouillon entraîné ;
- ReDrafter (Apple, arXiv 2403.09919) utilise un brouillon récurrent avec recherche en faisceau ;
- LayerSkip (Meta, arXiv 2404.16710) fait brouillonner le modèle par lui-même, en sortant à une couche intermédiaire : aucun paramètre supplémentaire.
Fin 2024 — La prédiction multi-jetons devient native¶
Avec DeepSeek-V3 (arXiv 2412.19437), la prédiction multi-jetons (multi-token prediction, MTP) cesse d'être un ajout après coup : les modules MTP sont entraînés avec le modèle, comme objectif auxiliaire améliorant sa qualité, et sont ensuite réutilisés tels quels comme drafter à l'inférence. C'est le baseline de production que DSpark cherchera à battre, sous le nom de MTP-1 — un module séquentiel unique.
Février 2026 — DFlash, ou le brouillon vraiment parallèle¶
Tous les drafters précédents ont un défaut commun : ils restent séquentiels. Produire \(\gamma\) jetons de brouillon demande \(\gamma\) petites passes, chacune trop menue pour occuper un GPU moderne.
DFlash (arXiv 2602.06036, ICML 2026) change de famille de modèle pour le brouillon : un modèle de diffusion par blocs, léger, qui produit tout le bloc en une seule passe avant, avec attention bidirectionnelle entre les positions. Il est conditionné sur le modèle cible par injection KV — les états cachés du modèle cible sont insérés directement dans le cache clé-valeur du drafter, ce qui l'ancre dans le contexte réel.
Les auteurs annoncent plus de 6× d'accélération sans perte, et jusqu'à 2,5× de mieux qu'EAGLE-3.
Le renversement de DFlash
Les modèles de diffusion ont longtemps cherché à concurrencer les modèles autorégressifs sur la génération de bout en bout, sans y parvenir en qualité. DFlash propose de les employer là où leur parallélisme est un avantage net et où leur qualité importe peu : comme brouillon, dont les erreurs sont de toute façon filtrées par la vérification.
Reste le défaut symétrique de celui de Medusa : dans un bloc produit d'un seul coup, les jetons ne se voient pas les uns les autres. L'acceptation décroît donc rapidement le long du bloc.
Le dilemme, en une ligne¶
| Famille | Exemples | Qualité du brouillon | Efficacité GPU |
|---|---|---|---|
| Modèle séparé | Leviathan 2022, Chen 2023 | Bonne | Faible (2 modèles hébergés) |
| Têtes parallèles indépendantes | Medusa | Faible au-delà de 2–3 jetons | Bonne |
| Séquentiel sur caractéristiques | EAGLE-1/2/3, MTP | Très bonne | Faible (\(\gamma\) petites passes) |
| Parallèle par blocs | DFlash | Décroît le long du bloc | Très bonne (1 passe) |
| Sans modèle | prompt lookup, lookahead | Nulle à excellente selon la tâche | Excellente |
C'est précisément ce dilemme — accepter beaucoup ou brouillonner vite — que DSpark entreprend de supprimer.
Chapitre précédent : Le principe · Chapitre suivant : DSpark