Diffusion Language Models
Les modèles de langage par diffusion génèrent du texte en démasquant plusieurs tokens en parallèle au fil de plusieurs étapes de débruitage. Présentation de la diffusion masquée, de LLaDA et de Mercury.
Un modèle de langage à diffusion génère du texte en partant d’une séquence entièrement corrompue, généralement composée uniquement de jetons de masque, puis affine plusieurs positions en parallèle au fil d’une série d’étapes de débruitage. À l’inverse, un grand modèle de langage (LLM) classique écrit un jeton à la fois, de gauche à droite. Cette approche transpose au texte discret le principe des modèles de diffusion d’images : un processus direct détruit progressivement une séquence, et un transformer apprend à inverser ce processus. L’approche a atteint une échelle de production en 2025. LLaDA, un modèle de diffusion de 8 milliards de paramètres entraîné à partir de zéro, s’est montré compétitif avec LLaMA3 8B en apprentissage en contexte ; les modèles Mercury Coder d’Inception Labs ont atteint 1 109 et 737 jetons par seconde sur des GPU NVIDIA H100 lors de tests indépendants ; et la version expérimentale Gemini Diffusion de Google DeepMind affiche une vitesse d’échantillonnage moyenne de 1 479 jetons par seconde.
Fonctionnement de la diffusion masquée#
LLaDA et la plupart des autres modèles récents utilisent une diffusion masquée, ou à état absorbant. Le processus direct choisit un niveau de bruit t compris entre 0 et 1, puis remplace chaque jeton par un symbole de masque avec une probabilité t :
import torch
torch.manual_seed(6)
tokens = ["the", "cat", "sat", "on", "the", "warm", "mat", "by", "the", "door"]
# Forward process of a masked diffusion LM: at noise level t, each token is masked with probability t
for t in [0.25, 0.5, 0.75, 1.0]:
masked = torch.rand(len(tokens)) < t
noisy = ["[M]" if m else token for token, m in zip(tokens, masked)]
print(f"t={t:.2f}: {' '.join(noisy)}")L’exécution affiche la phrase avec 2, 5, 8, puis finalement les 10 mots masqués. Pendant l’entraînement, un transformer sans masque causal voit une telle séquence et prédit simultanément tous les jetons masqués, en appliquant une fonction de perte d’entropie croisée aux positions masquées, que LLaDA pondère par 1/t. L’objectif généralise le modèle de langage masqué de BERT, qui prédit toujours 15 % des jetons, à tous les taux de masquage, et borne la log-vraisemblance du modèle afin que le résultat soit un modèle génératif complet.
La génération exécute le processus à rebours à partir de t = 1. À chaque étape, le modèle prédit toutes les positions masquées, valide les prédictions les plus fiables et masque de nouveau les autres ; LLaDA appelle cette stratégie le remasquage des prédictions à faible confiance. Les sorties longues sont souvent produites bloc par bloc, une approche formalisée sous le nom de diffusion par blocs, qui permet de mettre en cache les blocs précédents sans devoir fixer la longueur de sortie à l’avance :
De D3PM aux modèles de production#
Le modèle D3PM de Google a défini en 2021 la diffusion sur des états discrets, notamment l’état de masque absorbant qu’utilisent désormais la plupart des modèles. En 2022, le modèle Diffusion-LM de Stanford a appliqué la diffusion à des représentations vectorielles continues de mots afin d’orienter le texte généré selon des contraintes syntaxiques et thématiques. Le modèle SEDD d’Aaron Lou, Chenlin Meng et Stefano Ermon, lauréat du prix du meilleur article d’ICML 2024, a réduit de 25 % à 75 % la perplexité des modèles de diffusion de texte précédents et surpassé GPT-2. LLaDA a ensuite montré que l’approche pouvait passer à des milliards de paramètres et, grâce à sa capacité à lire le contexte dans les deux sens, dépasser GPT-4o dans une tâche de complétion de poème à rebours conçue pour tester la malédiction de l’inversion des modèles de gauche à droite. Inception propose Mercury via une API Chat Completions compatible avec OpenAI ; l’interface LLM d’Ultralytics peut donc l’appeler avec api="chat.completions" et base_url d’Inception, par exemple pour transformer les détections de YOLO26 en rapport rédigé.
Points forts et compromis#
Le démasquage parallèle demande moins de passes avant que le nombre de jetons, ce qui explique sa vitesse ; la qualité diminue toutefois quand chaque étape valide davantage de jetons. Les jetons validés lors d’une même étape sont échantillonnés de manière indépendante ; en en validant beaucoup à la fois, on risque donc de produire des combinaisons incohérentes. À chaque étape, le modèle porte aussi son attention sur l’ensemble du bloc dans les deux sens, ce qui rend cette étape plus coûteuse qu’une étape autorégressive avec un cache KV. Le contexte bidirectionnel facilite le remplissage et la modification de texte : le modèle peut compléter un passage au milieu d’une fonction ou d’un document en s’appuyant sur le texte des deux côtés, une capacité adaptée à la complétion de code et aux outils de programmation agentique qui modifient des fichiers existants.
Modèles de langage à diffusion et termes connexes#
- Génération de texte autorégressive : prédit chaque jeton à partir des jetons qui le précèdent, avec une passe avant par jeton.
- Diffusion d’images : Stable Diffusion et les autres modèles de diffusion latente ajoutent du bruit gaussien aux pixels ou aux représentations latentes continues, souvent à l’aide d’un transformer de diffusion (DiT) comme débruiteur.
- Diffusion forcée : attribue à chaque jeton son propre niveau de bruit, combinant la prédiction du jeton suivant à la diffusion de séquence complète, principalement pour la vidéo et la planification.
- Décodage spéculatif : accélère un modèle autorégressif en faisant proposer plusieurs jetons par un modèle plus petit, puis en les vérifiant en une seule passe du grand modèle, sans modifier la distribution de sortie de ce dernier.










