L'autorégression est la méthode de base qu'un grand modèle utilise pour générer du texte : à partir des jetons déjà présents, il prédit le jeton suivant le plus probable, rattache ce nouveau jeton à la fin de l'entrée, prédit le suivant, et répète ce cycle jusqu'à produire un marqueur de fin ou atteindre une limite de longueur. Quand vous voyez une réponse de discussion sortir mot à mot, vous voyez la forme extérieure de ce décodage pas à pas, et non un effet supplémentaire fabriqué à part.
Avancer jeton après jeton
Un jeton peut se comprendre, en gros, comme l'unité de texte aux yeux du modèle : ce peut être un caractère, une partie d'un mot ou une combinaison avec de la ponctuation. À chaque étape, le modèle fait face à tout le contexte accumulé jusque-là, et il n'a qu'un seul jugement à rendre : quel est le jeton suivant le plus probable ? Une fois ce jeton choisi, le contexte s'allonge d'autant, et le jugement suivant repose sur ce nouveau contexte plus long. Changer ne serait-ce qu'un mot plus haut peut déplacer la suite, parce que chaque étape s'appuie sur tous les choix faits avant elle.
À l'entraînement on compare au texte complet, à la génération on ne peut qu'avancer
L'entraînement et la génération sont deux choses différentes. À l'entraînement, le texte original complet est déjà là : le modèle peut voir une phrase entière d'un coup et s'exercer, en parallèle, à déterminer quel jeton doit suivre à chaque position, comme étudier avec la réponse sous les yeux. À la génération, il n'y a pas de suite toute prête à consulter : le modèle ne peut que générer un jeton, le rattacher, puis générer le suivant, et le travail doit donc se faire en série. C'est la principale raison pour laquelle les réponses longues sont lentes. Ce n'est pas simplement que la machine n'est pas assez rapide ; structurellement, cette méthode ne peut pas calculer les jetons ultérieurs à l'avance, car elle doit attendre que les résultats précédents soient posés.
L'entrée se lit d'un coup, la sortie doit venir pas à pas
Quand vous posez une question, un long passage que vous saisissez peut être lu en une fois et traité en parallèle, de sorte qu'une invite longue ne multiplie en général pas l'attente au prorata de sa longueur. Une réponse, c'est autre chose. Autant la sortie contient de jetons, autant elle exige d'étapes de décodage, et chaque étape demande un nouveau calcul. Plus la réponse est longue, plus il y a d'étapes, et plus cela prend naturellement de temps. Cela explique aussi pourquoi, pour la même question, une réponse courte revient vite alors qu'une réponse longue vous fait attendre pendant qu'elle s'écrit : le goulot se situe le plus souvent côté sortie, et non côté entrée.
Tous les modèles génératifs ne font pas ainsi, et trois malentendus sont à distinguer
L'autorégression n'est que le choix des grands modèles de discussion courants, pas la seule voie pour générer du contenu. Les modèles de texte à diffusion partent d'un état flou, retirent progressivement le bruit et révisent l'ensemble, tandis que les modèles à masque fonctionnent comme un texte à trous, en cachant d'abord une partie du contenu puis en la complétant ; ni l'un ni l'autre ne procède en pressant les jetons un à un de gauche à droite. Trois malentendus sont fréquents. Le premier consiste à croire que le modèle pense tout le paragraphe avant de le taper ; en réalité, il n'y a pas de brouillon global achevé, la suite est toujours influencée par ce qui précède, ce qui est l'une des raisons pour lesquelles il peut dériver de plus en plus en écrivant. Le deuxième consiste à croire que la sortie mot à mot est un effet de frappe créé à dessein ; en réalité, l'affichage en flux dans l'interface montre simplement le processus de décodage en synchronie. Le troisième consiste à prendre l'échantillonnage pour une autre méthode de génération en soi ; des paramètres comme la température n'affectent que le choix du jeton candidat à chaque étape, et ils ne changent rien à la boucle autorégressive elle-même.