Aller au contenu principal

Génération autorégressive et décodage

À chaque étape, un modèle génératif produit généralement des scores sur son vocabulaire. Le décodeur choisit un token, puis l’ajoute au contexte. La réponse entière résulte de cette boucle. Cela permet de distinguer ce que le modèle a appris, ce que la règle de sélection a choisi et pourquoi le service s’est arrêté.

Commencer par les représentations des tokens et les décodeurs causaux. Cette page concerne la génération autorégressive de texte ; d’autres méthodes, notamment la diffusion, ne suivent pas la même boucle token par token.

Décomposer la probabilité d’une séquence

Pour un prompt xx et une sortie y1,,yTy_1,\ldots,y_T :

p(yx)=t=1Tp(ytx,y<t).p(y\mid x)=\prod_{t=1}^{T}p(y_t\mid x,y_{<t}).

C’est la règle de chaîne des probabilités. Le modèle apprend ces distributions conditionnelles ; l’entraînement par maximum de vraisemblance minimise souvent la somme des log-probabilités négatives. Les préfixes véritables permettent de calculer plusieurs cibles pendant l’entraînement. En inférence, les préfixes contiennent les sorties précédentes du modèle : une erreur précoce modifie donc les entrées suivantes.

Une projection fournit VV logits, puis softmax donne la distribution du prochain token. Il s’agit d’une probabilité de continuation, pas de vérité. Le modèle peut produire avec assurance un nom erroné. Réduire la température ne lui apporte pas l’information manquante.

Choix glouton et recherche de séquences

Le décodage glouton choisit le token le plus probable à chaque étape. Peu coûteux et assez lisible, il ne garantit pas la séquence globalement la plus probable. Dans un exemple construit sur deux étapes, A vaut 0,6 et B 0,4. La meilleure fin après A vaut 0,5, contre 0,9 après B. Le chemin glouton vaut 0.6×0.5=0.300.6\times0.5=0.30, contre 0.4×0.9=0.360.4\times0.9=0.36 pour l’autre.

La recherche en faisceau conserve plusieurs préfixes pour explorer davantage de séquences. Elle coûte plus de calcul et de cache. La longueur compte aussi : multiplier davantage de probabilités inférieures à 1 diminue souvent la probabilité jointe, d’où des ajustements de longueur dans les implémentations. Une vraisemblance plus élevée ne garantit pas une meilleure rédaction ouverte. Holtzman et al. étudient répétition et dégénérescence avec ce type de décodage et proposent l’échantillonnage nucleus.

Une étiquette courte ou une extraction exacte peut demander de la stabilité ; une tâche créative peut rechercher plusieurs continuations plausibles. Aucun réglage n’est optimal partout.

Température, top-k et top-p

La température transforme les logits ; elle n’ajoute pas directement de créativité :

pi(T)=exp(zi/T)jexp(zj/T),T>0.p_i(T)=\frac{\exp(z_i/T)}{\sum_j\exp(z_j/T)},\qquad T>0.

Sous 1, la distribution se concentre ; au-dessus de 1, elle s’aplatit. Une température nulle désigne généralement une option gloutonne ou un comportement limite, pas une valeur à substituer dans la formule. Ce n’est pas non plus une calibration de la justesse : concentrer la distribution ne réduit pas nécessairement le taux d’erreur réel.

Top-k conserve les k meilleurs candidats puis renormalise. Top-p conserve le plus court préfixe trié par probabilité dont la masse cumulée atteint p, puis renormalise. Avec [0.50,0.25,0.15,0.10] et top-p 0,8, les trois premiers restent, soit une masse de 0,90 ; on ne réduit pas le troisième à 0,05. L’ordre des filtres et de la température peut modifier le résultat. Suivre l’implémentation utilisée ; voir les stratégies de Transformers.

Cet exemple transforme des logits fictifs sans appeler de modèle :

import math

def distribution(logits, temperature):
scaled = [v / temperature for v in logits]
peak = max(scaled)
weights = [math.exp(v - peak) for v in scaled]
total = sum(weights)
return [round(v / total, 4) for v in weights]

for t in (0.5, 1.0, 2.0):
print(t, distribution([2.0, 1.0, 0.0], t))

Quand la température augmente, la première probabilité baisse et les autres montent, sans changement de classement. Un échantillonnage peut toujours choisir un token peu probable. Une graine fixe aide à reproduire une expérience ; des changements de service, d’opérations matérielles ou de planification des lots peuvent néanmoins affecter le résultat complet.

Gardez les logits fixes et déplacez le curseur de température : les probabilités changent, mais l’ordre des candidats reste le même.

Mêmes scores, températures différentes

Ces candidats fictifs ont pour logits [2, 1, 0]. Essayez T = 0,2, 1 et 2.

A z = 266.5%
B z = 124.5%
C z = 09.0%

A reste le candidat le plus probable. Une température plus élevée répartit les probabilités plus uniformément ; elle n’ajoute pas de connaissances et ne vérifie pas la justesse d’un token. Aucun modèle n’est appelé.

L’arrêt fait partie du système

La génération peut s’arrêter sur EOS, une limite de tokens, une chaîne d’arrêt ou une annulation. Fin normale, budget épuisé et interruption sont des événements distincts. Une tâche structurée doit examiner la raison de l’arrêt au lieu d’accepter un JSON tronqué comme réussi.

Une chaîne d’arrêt peut apparaître dans un contenu légitime. Il faut savoir si une limite compte seulement la sortie ou aussi le prompt. La fenêtre de contexte doit accueillir entrée, contenu produit et autres éléments requis par l’implémentation. Une sortie plus longue augmente calcul et cache. Les performances d’inférence distinguent traitement initial et décodage itératif.

Le décodage contraint peut masquer les tokens incompatibles avec une grammaire JSON ou un appel d’outil. Il améliore la validité structurelle, sans garantir la réalité d’une date, la pertinence d’une requête SQL ou la conformité métier des arguments. Il faut encore analyser la sortie, valider le schéma et vérifier les conditions d’exécution.

Comparer les réglages sur une tâche

Fixer modèle, gabarit et jeu d’entrées. Comparer le glouton, quelques réglages d’échantillonnage et une recherche adaptée. Pour les tâches ouvertes, produire plusieurs sorties par entrée en conservant graines et raisons d’arrêt. Pour classification et extraction, mesurer justesse, taux de format valide, latence et coût. Une réponse remarquable isolée ne suffit pas.

Séparer justesse et répétabilité. Répéter dix fois une erreur n’améliore pas la vérité ; obtenir une bonne réponse par hasard demande aussi d’en mesurer la fréquence. Pour utiliser des probabilités dans des actions, voir calibration, seuils et abstention. Pour une chaîne de réponse complète, voir l’évaluation de la recherche et de la génération.

Explorer les liensOuvrir le réseau