- Remplacer l’objectif standard des LLM, la prédiction du token suivant, par la prédiction simultanée de plusieurs tokens futurs permet d’améliorer les performances en génération de code et de langage naturel, à données et budget de calcul identiques
- L’architecture repose sur plusieurs têtes de sortie au-dessus d’un corps Transformer partagé ; en inférence de base, seule la tête du token suivant est utilisée, comme dans la génération autorégressive classique
- Pour les modèles de code, un modèle à 13B paramètres a résolu 12 % de problèmes HumanEval et 17 % de problèmes MBPP de plus qu’un modèle comparable de prédiction du token suivant ; le gain est plus marqué avec les grands modèles
- Les têtes supplémentaires sont exploitées pour le décodage auto-spéculatif : le modèle de prédiction à 4 tokens montre jusqu’à 3× d’accélération, et le modèle de prédiction à 8 bytes jusqu’à 6,4×
- Sur des tâches synthétiques, cette approche a favorisé les induction heads et le raisonnement algorithmique, et pourrait réduire l’écart de distribution entre le teacher forcing à l’entraînement et la génération autorégressive à l’inférence
Méthode de prédiction multi-token
- La modélisation linguistique classique minimise, à chaque position, la perte d’entropie croisée d’un seul token suivant
- La prédiction multi-token étend l’objectif d’entraînement afin de prédire en une fois les n tokens suivants à chaque position
- L’architecture du modèle se divise en trois parties
- Un corps Transformer partagé produit une représentation latente du contexte observé
- n têtes de sortie indépendantes prédisent en parallèle chaque token futur
- Une matrice d’unembedding partagée calcule les probabilités finales des tokens
- La méthode d’inférence la plus simple est la prédiction autorégressive classique, qui n’utilise que la tête de prédiction du token suivant ; les autres têtes peuvent être supprimées
- Les têtes de sortie supplémentaires peuvent être utilisées pour le décodage auto-spéculatif (self-speculative decoding), par exemple avec le blockwise parallel decoding ou une tree attention de type Medusa
Implémentation efficace en mémoire
- Dans une implémentation naïve, les logits et gradients de chaque tête doivent tous être chargés en mémoire, ce qui augmente l’usage mémoire GPU
- Dans les LLM actuels, la taille du vocabulaire V est bien supérieure à la dimension d de la représentation latente, ce qui fait du vecteur de logits le goulot d’étranglement de la mémoire GPU
- L’implémentation proposée exécute séquentiellement le forward/backward de chaque tête de sortie après le forward pass du corps partagé
- Les logits et gradients d’une tête sont libérés avant de passer à la tête suivante
- Seul le gradient accumulé est conservé dans le corps
- Cette méthode réduit le pic d’utilisation mémoire GPU de O(nV + d) à O(V + d), sans augmenter le coût d’exécution
Résultats expérimentaux sur les modèles de code
- Les expériences sur données réelles comparent des modèles de prédiction du token suivant et des modèles de n-token prediction avec le même nombre de paramètres
- Si n−1 couches sont ajoutées aux têtes de prédiction future, n−1 couches sont retirées du corps partagé
- Six tailles de modèles, de 300M à 13B, sont entraînées from scratch avec au moins 91B code tokens
- Dans les évaluations MBPP et HumanEval, les petits modèles pouvaient être moins bons que les modèles de référence, mais la prédiction multi-token prend l’avantage à mesure que l’échelle augmente
- Le modèle 13B résout plus de problèmes qu’un modèle comparable de prédiction du token suivant
- HumanEval : 12 % de problèmes résolus en plus
- MBPP : 17 % de problèmes résolus en plus
- Une ablation sur un modèle 7B entraîné avec 200B code tokens compare n=1, 2, 4, 6 et 8
- n=4 est systématiquement le meilleur sur pass@1, pass@10 et pass@100 pour HumanEval et MBPP
- Sur APPS/Intro, n=6 est en tête
- La taille de fenêtre optimale peut varier selon la distribution des données d’entrée
Vitesse d’inférence et modèles au niveau byte
- Un greedy self-speculative decoding est appliqué au modèle 7B de prédiction à 4 tokens, et la vitesse de décodage est mesurée sur des prompts de test de code et de langage naturel non utilisés à l’entraînement
- Les résultats montrent une accélération de 3,0× sur le code et de 2,7× sur le texte
- Sur le code, en moyenne 2,5 des 3 tokens proposés étaient acceptés
- Le modèle de prédiction à 8 bytes atteint une accélération de 6,4× en inférence
- Dans l’expérience de tokenization au niveau byte, un transformer 7B au niveau byte est entraîné sur 314B bytes, soit environ 116B tokens
- Le modèle de prédiction à 8 bytes résout davantage de problèmes que la prédiction du byte suivant
- 67 % de problèmes résolus en plus sur MBPP pass@1
- 20 % de problèmes résolus en plus sur HumanEval pass@1
- La prédiction multi-byte peut constituer une voie pour entraîner plus efficacement les modèles au niveau byte
Plusieurs epochs, fine-tuning et résultats en langage naturel
- Même après plusieurs epochs sur les mêmes données, la prédiction multi-token conserve certains avantages par rapport à la prédiction du token suivant
- MBPP pass@1 : +2,4 %
- HumanEval pass@100 : +3,2 %
- Les autres indicateurs sont similaires
- Dans le fine-tuning sur CodeContests, le modèle 7B préentraîné avec la prédiction à 4 tokens dépasse le modèle de référence du token suivant sur l’ensemble des pass@k
- Le modèle de prédiction à 4 tokens fine-tuné tel quel avec une loss n′=4 est aussi meilleur que le modèle de référence
- Le meilleur résultat global est obtenu en supprimant les têtes supplémentaires et en fine-tunant avec une cible next-token
- En langage naturel, un modèle 7B est entraîné sur 200B tokens et évalué sur 6 benchmarks NLP standard
- Le modèle de prédiction à 2 tokens est comparable au modèle de référence du token suivant
- Le modèle de prédiction à 4 tokens voit ses performances légèrement baisser
- Une taille de modèle plus importante pourrait être nécessaire
- L’évaluation générative en langage naturel est menée séparément sur des tâches de résumé et de mathématiques
- Sur 8 benchmarks de summarization, les modèles n=2 et n=4 dépassent le modèle de référence du token suivant en ROUGE-L F1, aussi bien après un entraînement sur 200B que sur 500B tokens
- Sur l’évaluation GSM8K 8-shot, n=2 dépasse le modèle de référence à 200B tokens, mais la tendance s’inverse après 500B tokens ; n=4 est globalement moins bon
Induction et raisonnement algorithmique observés sur des tâches synthétiques
- L’induction désigne le schéma où, après l’apparition de « AB » dans une phrase, si « A » réapparaît plus tard, le modèle prédit ensuite « B »
- Des modèles de 1M à 1B paramètres non-embedding sont entraînés sur le jeu de données children stories, puis leur induction capability est mesurée avec un jeu de test contenant des noms aléatoires à 2 tokens
- Pour les petits modèles de 30M ou moins, la perte de prédiction à 2 tokens améliore nettement la formation de l’induction capability
- À partir de 100M, cet avantage disparaît
- Dans les tâches d’arithmétique polynomiale, des expressions incluant négation unaire, addition, multiplication et composition sont entraînées et évaluées dans F7[X]/(X5)
- La prédiction multi-token augmente la précision sur l’ensemble des niveaux de difficulté, et améliore aussi fortement la généralisation out-of-domain, malgré des valeurs absolues faibles
- Remplacer la prédiction du token suivant par la prédiction multi-token a eu un effet plus important que d’augmenter la taille du modèle de 30M à 100M
Pourquoi cela peut fonctionner
- La prédiction multi-token peut atténuer le décalage de distribution entre l’entraînement en teacher forcing et la génération autorégressive à l’inférence
- La prédiction du token suivant peut se concentrer sur des prédictions à court horizon tout en négligeant les dépendances à longue portée
- La prédiction multi-token attribue implicitement un poids plus élevé aux tokens fortement corrélés avec les tokens qui suivent
- Cela peut s’interpréter comme un renforcement des choice points
- L’idée est qu’une génération de texte utile dépend du choix de la bonne décision à ces choice points
- Dans le développement information-théorique, la prédiction à 2 tokens apparaît comme augmentant davantage l’importance du terme de mutual information entre X et Y que la prédiction du token suivant
Limites et coûts
- Les problèmes restants sont la sélection automatique de n pour la prédiction multi-token, l’utilisation du loss scale et du loss balancing, l’ajustement de la taille du vocabulaire, et le développement d’une loss de prédiction auxiliaire opérant dans l’espace d’embedding
- L’entraînement de tous les modèles expérimentaux a utilisé environ 500K GPU hours au total
- Le matériel était composé de A100-80GB et de H100
- Les émissions totales estimées sont d’environ 50 tCO2eq, compensées à 100 % via le sustainability program de Meta
- L’objectif est d’améliorer l’efficacité compute et data des modèles de langage, mais il faut rester attentif aux rebound effects et considérer à la fois les bénéfices sociaux et les risques des LLM
1 commentaires
Avis de Hacker News
Il se passe beaucoup trop de choses dans ce domaine.
Ce serait bien d’avoir une ressource qui explique chronologiquement, comme une visite d’usine, quand des termes comme données, pré-entraînement, entraînement, inférence, mélange d’experts, RAG apparaissent dans le flux réel.
La plupart du temps, je ne sais pas où ces termes s’insèrent dans la vue d’ensemble, et quand j’ai découvert le pré-entraînement, je pensais que c’était un processus de traitement des données avant l’entraînement, alors qu’en réalité c’était encore un autre entraînement.
Le rapport signal/bruit dans ce domaine est très faible, et même la documentation d’acteurs de référence comme Langchain est déjà obsolète ou parfois contradictoire.
C’était similaire pendant la surchauffe autour de la blockchain ; c’est sans doute une caractéristique des trains de la hype.
En particulier, avec des évolutions récentes aussi rapides que pour RAG, il est difficile de savoir par où commencer, car il sera compliqué d’avoir un ouvrage de référence qui reste à jour pendant quelque temps.
Cela dit, la documentation d’outils de plus haut niveau comme LlamaIndex constitue un bon point de départ, non pas parce qu’elle explique les concepts eux-mêmes en profondeur, mais parce qu’elle montre où ils s’insèrent dans l’ensemble.
YouTube, comme toujours, est une mer de non-spécialistes qui cherchent à attirer des clics avec la dernière tendance ; je ne le recommanderais donc pas comme point de départ.
Bien sûr, c’est vrai pour tout, mais plutôt que d’essayer de bricoler autour de ça, mieux vaut partir du principe qu’un outil bien meilleur que GPT-4 arrivera dans un avenir proche, et concevoir un produit différencié sur cette hypothèse.
Pour quelqu’un qui connaît le décodage spéculatif, c’est fondamentalement du décodage spéculatif appliqué à soi-même.
On réinjecte toujours de façon autorégressive dans le réseau la séquence d’étiquettes prédite, et on ne conserve les prédictions que jusqu’au point où elles correspondent.
Les performances ne se dégradent donc pas : cela devient seulement plus rapide. Ici, jusqu’à 3×, ce qui est assez courant pour le décodage spéculatif.
Cela peut aussi s’améliorer grâce à l’apprentissage multitâche. L’idée de prédire, comme perte auxiliaire, des cibles situées plusieurs étapes plus loin existe déjà depuis assez longtemps, et c’est un bon travail.
Si le décodage spéculatif améliorait aussi les capacités de planification, il serait adopté plus facilement.
Le décodage spéculatif ne réduit pas les performances du modèle en termes d’exactitude ou de qualité de sortie.
Mathématiquement, la distribution modifiée qui est échantillonnée est identique à celle qu’on obtiendrait avec un décodage autorégressif standard, et les différences ne viennent que du hasard.
Si par performances on entend la vitesse, alors le décodage spéculatif peut aussi ralentir les choses, mais ce ne devrait pas être le cas pour la plupart des entrées et avec un bon choix de modèle brouillon.
Les LLM ne prennent-ils pas en compte, dans la prédiction de séquences, la distribution de probabilité de toutes les combinaisons de tokens possibles jusqu’à une certaine longueur de sortie ? Je pensais qu’ils le faisaient déjà.
Sinon, c’est étonnant que cela fonctionne aussi bien aujourd’hui.
Par exemple, si les possibilités et probabilités d’une séquence de 2 bits sont 00 : p=0,36, 01 : p=0,04, 10 : p=0,30, 11 : p=0,30, alors la séquence de 2 bits la plus probable est 00.
Mais si l’on prédit seulement le prochain token, on obtient 0 : p=0,40, 1 : p=0,60, donc le bit suivant semble être 1, ce qui mène à un point de départ non optimal pour prédire le bit d’après.
Sur de longues séquences, l’erreur deviendra d’autant plus marquée que la distribution jointe se factorisera mal en distributions marginales.
En y réfléchissant davantage, il semble possible de mener une étude simple consistant à modifier la fonction de perte d’entropie croisée pour ne considérer que le n-ième token futur dans les données textuelles d’entraînement, puis à tracer la relation entre les performances du LLM et n.
Si l’on suppose que les LLM actuels ont tous n=1, l’hypothèse est qu’on pourrait contourner en grande partie l’explosion des ressources nécessaires pour prédire la distribution de probabilité jointe des 1 à n prochains tokens.
Car prédire directement le n-ième token exige implicitement un meilleur modèle des données. Du moins pour les textes produits par des humains ; cela ne vaut pas forcément pour tous les types de données.
Les LLM sont conçus pour échantillonner du texte suivant la distribution d’entraînement, pas pour indiquer le texte « le plus probable » qui suit, et en réalité ce n’est pas ce que nous voulons.
Sinon, la diversité des sorties disparaîtrait.
Dans votre exemple, pour une application de chat, il serait logique d’échantillonner 0 dans 40 % des cas et 1 dans 60 % des cas.
Pour des usages comme les questions-réponses, où la phrase la plus probable est importante, la recherche en faisceau peut aider, comme d’autres l’ont dit.
Il faut aussi prendre en compte le fait que le modèle peut « regarder devant lui » et calculer à l’avance des tokens futurs, puis les utiliser pour la prédiction du token courant.
En fait, des travaux comme [1] traitent de ce sujet.
Enfin, prédire un token à la fois n’est pas une approche erronée : c’est la façon dont les humains parlent. Nous effectuons mentalement ce type de « regard en avant » avant de parler.
[1] https://arxiv.org/abs/2404.00859
Si je me souviens bien, on observe des motifs étranges dans les sorties des LLM : par exemple, « an » est souvent moins probable que « a », ce qui fait apparaître moins de noms commençant par une voyelle que prévu.
Autrement dit, si l’on entraîne un modèle de langage sur une distribution donnée et qu’on échantillonne avec une température de 1, on obtient exactement la même distribution.
Si l’on échantillonne à basse température ou de façon gloutonne, on obtient évidemment une autre distribution.
Il existe plusieurs stratégies d’échantillonnage par optimisation locale, comme la recherche en faisceau, et il y a aussi eu beaucoup de travaux d’échantillonnage plus global, comme le décodage spéculatif.
Les LLM actuels repartent-ils vraiment de zéro pour chaque token de sortie ?
Si on leur demande « Qu’est-ce qui rend les bananes jaunes ? » et qu’ils répondent « Bananas are yellow due to a pigment called bromelain. », on a l’impression que, lorsqu’ils produisent « a », les concepts de pigment et de bromelain sont déjà activés dans une certaine mesure dans le réseau neuronal.
À ce stade, ils ne peuvent plus changer d’avis et enchaîner sur une réponse du type « an optical illusion... » ; on dirait donc qu’ils ont déjà planifié la suite en décidant de parler d’un pigment appelé bromelain.
Le LLM peut-il réutiliser, pour la suite de la réponse, le travail déjà effectué lorsqu’il produit « a » ? Peut-on préserver l’état du réseau neuronal pour la réponse suivante ?
« Bananas are yellow due to a » et « Bananas are yellow due to an »
Dans le premier cas, il peut répondre « Bananas are yellow due to a pigment called bromelain. », et dans le second « Bananas are yellow due to an organic compound called bromelain, which is a yellow pigment. »
Dans les deux cas, que GPT choisisse « a » ou « an » peut ne pas affecter le sens de la réponse.
À l’extrême, on pourrait considérer que le LLM fonctionne avec une heuristique stupide selon laquelle le token qui suit « due to » est « a » à 55 % et « an » à 45 %.
La réalité est bien sûr plus sophistiquée, mais cette heuristique suffit déjà à expliquer ce comportement.
Si les données de pré-entraînement ne contenaient pas le fait relatif à la bromélaïne, le LLM pourrait très bien compléter automatiquement avec quelque chose comme « an optical illusion ».
GPT-3 commettait assez souvent ce genre d’erreurs factuelles, mais je me souviens qu’il avait déduit les règles grammaticales de « a » et « an ».
Comme indiqué, je ne pense pas qu’il soit nécessaire que les concepts soient réellement activés à l’avance, mais dans un sens implicite et émergent, il est possible qu’une telle préactivation se produise.
On peut voir le cache KV comme une représentation du texte jusqu’ici et des réflexions du modèle à son sujet.
Comme les modèles de langage sont entraînés sur des séquences entières jusqu’à leur fin, je pense que ce genre de phénomène a de fortes chances de se produire.
La prédiction multi-token encourage explicitement ce comportement, mais seulement à l’intérieur de la petite fenêtre de n tokens définie.
Par ailleurs, il existe aussi beaucoup de travaux visant à améliorer l’utilisation du calcul dans les modèles de langage transformer, avec des approches comme l’arrêt anticipé, le mélange de profondeurs ou de nouvelles architectures comme les SSM.
Il existe probablement une forme de plan conceptuel de ce qui pourrait suivre « a » ou d’autres candidats, mais ce type de prédiction de haut niveau est réexaminé depuis le début une fois que « a » est généré.
Le modèle peut non seulement changer d’avis après la génération de chaque mot, il doit le faire.
Ce genre de « planification » est donc très fugace, et ressemble davantage à un rappeur freestyle improvisant qu’à une personne qui réfléchit longuement avant de choisir sa réponse et sa formulation.
Le cœur du LLM prend des tokens en entrée et produit un ensemble classé de tokens susceptibles de suivre, avec un niveau de « confiance ».
Ensuite, il y a généralement une étape de filtrage et de recherche, où ces tokens classés sont réinjectés dans le LLM pour obtenir davantage de tokens classés et construire un petit arbre de probabilités.
Par exemple, si l’on réinjecte les N meilleurs tokens, chacun produit un nouvel ensemble des N meilleurs tokens.
On examine ensuite cet arbre pour appliquer un filtrage de base, par exemple choisir la branche dont la confiance cumulée est la plus élevée, celle qui contient le moins de tokens répétés ou celle qui contient le moins de tokens correspondant aux tokens d’entrée ; le plus souvent, on combine ces critères et on ajoute même une sélection aléatoire pondérée par la confiance cumulée.
C’est pourquoi un LLM dont les poids sont totalement fixes peut produire des sorties différentes lorsqu’on lui fournit plusieurs fois la même entrée.
Donc, pour répondre précisément à la question, le modèle peut « changer d’avis ». Chaque token généré donne au filtre probabiliste de sortie l’occasion de choisir un nouveau chemin parmi les chemins de sortie possibles.
C’est peut-être une question très naïve, mais si l’on suppose qu’on peut créer un vecteur qui encode le sens d’une phrase entière, pourquoi ne pourrait-on pas entraîner un LLM à prédire ce vecteur de phrase plutôt qu’un seul mot ?
Entraîner un autoencodeur pour le langage est en fait très facile, car la quantité d’information contenue dans le texte est faible par rapport au visuel/à la vidéo
La partie difficile est de faire en sorte que le modèle se concentre sur le sens alors que tout le signal vient de la correspondance exacte dans l’espace des tokens
C’est de là que vient l’idée de Yann LeCun de Joint Embedding Predictive Architecture
Il y a aussi toujours un compromis : les tâches auxiliaires apportent plus de signal, mais déplacent le centre d’attention
Dans notre cas, nous avons constaté une baisse de performance quand le nombre de tokens prédits était trop élevé
Les méthodes de prédiction latente doivent donc clarifier ce qui est utile
Le problème est qu’une fois obtenu un vecteur représentant la réponse, il faut quelque chose comme un autre modèle pour reconvertir cette réponse en représentation sous forme de mots
Cela pourrait être une sorte de modèle de diffusion pour le texte
En plus, la fonction que ce modèle de diffusion devrait approximer n’est pas injective ; dans le meilleur des cas elle est surjective, et dans le pire elle pourrait même ne pas être une fonction au sens mathématique
Car pour un même embedding, il existe de nombreuses représentations textuelles possibles, dont la plupart peuvent être invalides grammaticalement ou sémantiquement
Enfin, un embedding étant une représentation avec perte de certaines données, la fonction inverse perdrait beaucoup de nuances et de contexte
Les LLM évitent ce problème en prédisant le token suivant — désormais les n tokens suivants — tout en maintenant la cohérence avec la requête, les n tokens précédents et eux-mêmes ; la fonction qu’ils approximent devrait globalement être proche d’une surjection
Aujourd’hui, elle manipule grosso modo des mots, donc l’IA ne peut utiliser que les mots qu’elle connaît, mais elle peut synthétiser de nouvelles phrases à partir de ces mots
Si l’IA fonctionne à l’échelle de la phrase, ne va-t-elle pas simplement répéter des phrases déjà vues ? Elle pourrait alors synthétiser de nouveaux paragraphes, mais pas de nouvelles phrases
En anglais, je ne suis pas sûr que la phrase soit une abstraction utile pour l’IA. Elle l’est à peine pour les humains
Quand on regarde des chats ordinaires, des e-mails ou des commentaires YouTube, il y a énormément de choses qui ne sont pas vraiment des phrases, ou qui n’utilisent même pas de ponctuation
Je ne pense pas que la phrase corresponde à une unité de sens
Selon l’auteur, une phrase peut faire deux mots ou la moitié d’un article universitaire en anglais ; elle peut traverser six idées ou n’en contenir qu’une seule
L’endroit où une phrase se termine dépend généralement davantage des habitudes de l’auteur que du sens
Quand on découpe une phrase en tokens, chaque token obtient une représentation vectorielle
Si l’on passe au niveau de la phrase, le vocabulaire de tous les tokens deviendrait infini
On pourrait tenter de le faire avec un modèle plus rapide, mais j’imagine que la qualité de sortie baisserait
Je n’ai pas encore lu l’article en très grand détail, mais j’ai un petit commentaire éditorial
L’annexe L.2 m’a paru satisfaisante, mais l’argument condensé de la section 5.2 m’a semblé un peu fragile
En particulier, dans H(X) + H(Y) = H(X | Y) + 2I(X ; Y) + H(Y | X), la partie où l’on dit qu’on « laisse tomber » H(Y | X) n’était pas claire
Si l’on prédit un troisième token Z, H(Y | X) devrait faire partie du contexte implicite C, et ne peut donc pas être abandonné librement, non ?
Même dans l’annexe, cet argument ne m’a pas semblé devenir clair
Cela dit, je n’étais pas perdu au point de douter du fond de l’argument ; c’est surtout un problème de présentation
Alors, parmi la cible à 2 tokens H(X) + H(Y), quelle partie est de l’information auxiliaire qui aide l’apprentissage, et quelle partie est du gaspillage ?
H(X | Y) et I(X; Y) sont utiles pour générer le token suivant, mais H(Y | X) est, par définition, une quantité d’information sans rapport avec le token suivant X
On peut donc dire que « la prédiction multi-token échange l’information utile I(X; Y) de H(Y) contre du calcul gaspillé sur H(Y | X) »
Il faut toutefois noter que H(Y | X) est l’entropie du token suivant lorsqu’on prédit Y à partir du préfixe (C, X)
Si le mécanisme d’attention peut transférer à l’étape suivante le calcul déjà effectué pour prédire Y|X, alors ce calcul n’était peut-être pas réellement du gaspillage, mais un précalcul
J’ai lu quelque part que les LLM n’ont littéralement qu’une fenêtre unidimensionnelle sur le monde
Tout n’est qu’une séquence de tokens
Des choses comme cette prédiction multiple pourraient peut-être élargir ce champ de vision à quelque chose comme 1,1 dimension
Quoi qu’il en soit, il existe de vrais arguments pour dire qu’il faut, d’une manière ou d’une autre, étendre cette fenêtre à deux dimensions ou plus
Par exemple, si l’on dispose de ressources au niveau de FAIR et que l’on veut vraiment entraîner un très bon modèle de code Java, il est logique de l’entraîner à prédire un AST plutôt que des tokens
Pour prédire les commentaires, les noms d’identifiants, etc., il faudrait sans doute encore une forme combinée avec un LLM généraliste, mais on ne modéliserait pas le programme lui-même comme un flux de tokens
On pourrait plutôt lui faire prédire des choses comme « ajouter un bloc if » ou « ajouter un bloc d’appel de méthode avec 4 paramètres »
On pourrait aussi entraîner le modèle à réserver certains emplacements de la fenêtre de contexte pour des informations comme les membres du type au niveau du curseur actuel, et intégrer la boucle d’inférence à une analyse statique de type IDE/LSP
Ainsi, le modèle pourrait voir plus d’informations que ce qui est réellement inclus dans le texte
Si l’on voit peu de modèles de ce genre aujourd’hui, c’est à mon avis parce que ce type de recherche coûte cher, et parce que les gens de l’IA sont tous très centrés sur Python ; or Python bénéficie beaucoup moins des avantages d’un IDE
En machine learning, le mot head n’est pas utilisé de façon cohérente, ce qui peut prêter à confusion
Dans cet article, il y a à la fois les notions de multihead attention et de multiple output heads
La multihead attention, dans l’architecture transformer, consiste à se concentrer sur différentes zones de l’entrée ; ici, l’analogie biologique est plutôt celle de la tête comme unité centrale de traitement
Une output head désigne la dernière couche d’un réseau neuronal, et l’on peut en avoir plusieurs qui produisent des sorties différentes à partir des mêmes couches précédentes
C’est aussi une analogie biologique assez lâche, mais elle se rapproche davantage d’une tête située à une extrémité du corps que d’une tête comme CPU
Dans aucun des deux cas il ne s’agit d’une analogie avec une tête de lecture lisant des données sur une bande
Les LLM semblent en grande partie « réfléchir » en réinjectant leur propre sortie comme entrée, et l’on observe régulièrement que forcer un modèle à penser à voix haute améliore la qualité du raisonnement.
Autrement dit, le raisonnement par chaîne de pensée, contrairement au fait de répondre directement à une question, pousse le modèle à reformuler ce qui lui est demandé, à exprimer une stratégie de haut niveau sur les informations nécessaires pour répondre, à énoncer ce qu’il sait, puis à expliquer comment ces informations influencent son raisonnement initial.
Mais on peut craindre que le fait de lui faire prédire plusieurs tokens suivants à chaque étape produise, par nature, l’effet inverse.
Le prompting par chaîne de pensée semble montrer qu’un modèle est plus « intelligent » lorsqu’il dispose de n + m tokens en entrée que lorsqu’il n’en a que n.
Donc, obtenir les 5 tokens suivants à partir de n pourrait donner un résultat moins bon que d’obtenir le token suivant à partir de n, puis le token suivant à partir de n+1, et ainsi de suite.
Le fait que cette méthode précise demande davantage de tokens n’a pas d’importance.
S’il n’existe pas de modèle peu coûteux, on restera toujours soumis au biais qui pousse le LLM à répondre par une estimation plutôt que par une vraie réponse.
Par ailleurs, la plupart des stratégies de décodage spéculatif produisent la même sortie que si l’on exécutait le modèle séquentiellement.
Si la prédiction est fausse, le token concerné est rejeté et seul le gain de vitesse disparaît.
Si l’on prédit indépendamment les tokens/mots +1 et +2, comment le résultat peut-il rester grammaticalement cohérent ? Ça risque de casser souvent, non ?
Ce n’est pas clair dans le résumé, mais la légende de la figure 1 indique : « pendant l’inférence, seule la tête de sortie du token suivant est utilisée. En option, les trois autres têtes peuvent être utilisées pour réduire le temps d’inférence ».
Si l’on récupère toutes les prédictions de plus haut niveau, on pourrait aussi utiliser les trois têtes, mais on ne pourrait alors plus appliquer les stratégies d’échantillonnage courantes.
Je ne sais pas combien de personnes, hors benchmarks, font réellement tourner des LLM avec une température de 0 ; et ce serait encore différent si l’on faisait quelque chose de meilleur que l’application d’une température.