Tech

Comment llm génère-t-il du texte ?

Un LLM ne comprend pas le langage. Il calcule, token après token, la suite la plus probable d’une séquence. Toute la mécanique de génération de texte repose sur cette boucle : encoder l’entrée, produire une distribution de probabilités sur le vocabulaire, sélectionner un token, puis recommencer en intégrant ce token au contexte.

Préfill et decode : les deux phases d’inférence d’un LLM

Les articles grand public décrivent la génération comme une boucle unique. En production, l’inférence se découpe en deux étapes aux profils de calcul très différents.

Lire également : Par quoi remplacera-t-on les batteries au lithium dans le futur ?

La phase de préfill traite l’intégralité du prompt en parallèle. Le modèle calcule les représentations internes de tous les tokens d’entrée simultanément grâce aux matrices d’attention. Cette étape est gourmande en mémoire, mais elle exploite massivement le parallélisme GPU.

La phase de decode est séquentielle. Le modèle génère un seul token à chaque pas, l’ajoute au contexte, puis recalcule l’attention sur la séquence étendue. Le cache KV (key-value) stocke les vecteurs d’attention déjà calculés pour éviter de tout retraiter à chaque token. Sans ce cache, le coût de génération serait quadratique par rapport à la longueur de la séquence.

A lire aussi : Faut-il être bon en mathématiques pour devenir cybersécurité ?

Nous observons que la latence perçue par l’utilisateur dépend principalement du decode : c’est lui qui dicte le débit de tokens par seconde affiché dans un chatbot. Optimiser un LLM en production revient souvent à optimiser cette phase, pas le préfill.

Stratégies de décodage : comment un LLM choisit le token suivant

Étudiante observant la génération de texte en temps réel sur une interface d'intelligence artificielle conversationnelle dans un espace universitaire

À chaque pas de génération, le modèle produit un vecteur de logits, un score brut pour chaque token du vocabulaire. La conversion en probabilités passe par une fonction softmax. Le choix du token dépend ensuite de la stratégie de décodage, et c’est là que la qualité du texte se joue.

Température et remodelage de la distribution

La température contrôle la dispersion des probabilités. Une valeur basse (autour de 0,2) concentre la masse sur les tokens les plus probables, produisant un texte prévisible et répétitif. Une valeur haute (au-delà de 1) aplatit la distribution, ce qui introduit de la variété mais aussi des incohérences.

En pratique, la température n’est presque jamais utilisée seule. Elle est combinée à des filtres sur la distribution.

Top-k, top-p et filtrage des logits

  • Le top-k conserve uniquement les k tokens les plus probables et redistribue la masse entre eux. Simple à paramétrer, mais rigide : un k fixe ignore que certaines positions appellent peu de candidats viables et d’autres en appellent beaucoup.
  • Le top-p (nucleus sampling) sélectionne le plus petit ensemble de tokens dont la probabilité cumulée dépasse un seuil p. Ce filtrage adaptatif ajuste automatiquement la taille du pool de candidats selon le contexte.
  • Les deux filtres peuvent être combinés. Un pipeline courant applique d’abord le top-k pour élaguer, puis le top-p sur le sous-ensemble restant, avant d’échantillonner selon la température.

Le greedy decoding (toujours choisir le token le plus probable) et le beam search (explorer plusieurs hypothèses en parallèle) restent utilisés pour des tâches où la fidélité prime sur la fluidité, comme la traduction automatique ou la génération de code structuré.

Guidage par modèles auxiliaires : dépasser la prédiction brute

La boucle « prédire puis échantillonner » ne suffit plus pour les déploiements actuels. Les logits sont modifiés avant l’échantillonnage par des modèles ou objectifs supplémentaires, ce que les descriptions classiques omettent.

Un exemple documenté : les travaux PPLM (Plug and Play Language Models) d’Uber montrent qu’on peut injecter un gradient issu d’un petit classifieur directement dans les représentations internes du LLM, sans modifier ses poids. Le modèle auxiliaire pousse la génération vers un style, un sentiment ou un thème donné, token par token.

En production, les pipelines de génération intègrent souvent un modèle de préférences entraîné par RLHF ou un filtre de toxicité. Ces modules ajustent les probabilités des tokens avant le choix final. Le LLM « brut » propose, le système de guidage dispose.

Mains d'un chercheur tapant sur un clavier mécanique entouré de documents annotés et d'une visualisation de pipeline de tokenisation sur écran

Fenêtre de contexte et tokens : contraintes structurelles de la génération

La longueur de contexte d’un LLM détermine combien de tokens il peut traiter simultanément en entrée et en sortie. Chaque token consommé par le prompt réduit d’autant la place disponible pour la réponse.

La tokenisation elle-même influence la génération. Les modèles utilisent majoritairement le Byte Pair Encoding (BPE), qui découpe le texte en sous-mots fréquents. Un mot courant comme « langage » sera un seul token, tandis qu’un terme rare sera fragmenté en plusieurs. Le vocabulaire BPE compte généralement plusieurs dizaines de milliers d’entrées.

Ce découpage a des conséquences directes sur la qualité du texte généré. Un mot segmenté en trois tokens exige trois étapes de prédiction successives, chacune pouvant introduire une erreur. C’est une des raisons pour lesquelles les LLM peinent davantage avec les langues à morphologie riche ou les termes techniques rares : le modèle doit « épeler » ces mots token par token.

Ce que la boucle de génération ne résout pas

Un LLM génère du texte statistiquement plausible, pas du texte vérifié. Les hallucinations proviennent du mécanisme même de prédiction : le modèle maximise la vraisemblance d’une séquence sans vérifier la correspondance avec des faits. Aucun paramètre de température ou de top-p ne supprime ce problème.

Les approches RAG (Retrieval-Augmented Generation) greffent une étape de recherche documentaire avant la génération. Le modèle reçoit des extraits de sources pertinentes dans son contexte, ce qui ancre la réponse dans des données récupérées plutôt que dans ses seuls poids. Le texte généré reste probabiliste, mais la distribution est conditionnée par un contenu factuel injecté en amont.

La génération de texte par un LLM est un processus d’échantillonnage conditionnel sur une séquence de tokens. Chaque amélioration, du cache KV au guidage par modèle auxiliaire, vise le même objectif : produire une sortie utile à partir d’une mécanique qui ne distingue pas le vrai du vraisemblable.