2 points par GN⁺ 2024-05-09 | 1 commentaires | Partager sur WhatsApp
  • Lors de la génération de longues réponses, le décodage autorégressif (AR), qui produit les tokens un par un, constitue le principal goulot d’étranglement de latence ; CLLM cherche à le réduire via un décodage parallèle par blocs de n tokens
  • Les Consistency Large Language Models (CLLMs) consistent à affiner un LLM préentraîné afin qu’il apprenne à projeter rapidement un état arbitraire de n tokens vers le même point fixe que le résultat greedy AR
  • Le Jacobi decoding converge théoriquement vers le même résultat que la génération greedy AR, mais avec des LLM classiques, le gain de vitesse restait limité à environ 1,05x en moyenne, ce qui le rendait peu pratique
  • Dans des expériences sur Spider, Human-Eval, GSM8k et MT-bench, CLLM a montré une accélération de génération de 2,4x à 3,4x, avec des performances comparables ou supérieures à des méthodes d’inférence rapide comme Medusa2 et Eagle
  • À l’inférence, il n’est pas nécessaire d’ajouter de composants modèles auxiliaires ni de modifier l’architecture du modèle cible, ce qui permet de viser à la fois des gains de vitesse et une meilleure efficacité mémoire

Le goulot d’étranglement de décodage visé par CLLM

  • Les LLM sont utilisés dans de nombreux domaines, comme la programmation, le droit ou le conseil santé, mais à l’inférence ils génèrent généralement les tokens un par un via un décodage autorégressif (AR)
  • Plus la réponse est longue, plus cette génération token par token augmente la latence et le temps d’attente perçu par l’utilisateur
  • Les méthodes d’inférence rapide existantes demandent souvent des modifications d’architecture, des composants auxiliaires ou un modèle brouillon pour produire plusieurs tokens en une seule fois

Fonctionnement et limites du Jacobi decoding

  • Le Jacobi decoding s’inspire des itérations à point fixe de Jacobi et de Gauss-Seidel, et il a été démontré qu’en décodage greedy il est équivalent à la génération AR
  • Il transforme une génération séquentielle en un système de n variables et n équations non linéaires, ce qui permet un calcul parallèle via des itérations de Jacobi
  • Le déroulement concret est le suivant
    • à partir du prompt d’entrée, on devine aléatoirement les n tokens suivants
    • on injecte le prompt et cette séquence de n tokens dans le LLM pour les mettre à jour de façon itérative
    • lorsque la séquence ne change plus, on atteint un point fixe (fixed point)
    • la séquence finale de n tokens converge alors vers la sortie qu’aurait produite le décodage AR avec stratégie greedy
  • Le chemin reliant la supposition aléatoire initiale au résultat final de génération AR est appelé trajectoire de Jacobi (Jacobi trajectory)
  • Le Jacobi decoding de base ne montre en pratique qu’un gain limité d’environ 1,05x en moyenne par rapport au décodage AR sur des LLM réels
    • un LLM entraîné en AR a du mal à prédire correctement les tokens suivants si les tokens précédents contiennent des erreurs
    • la plupart des itérations de Jacobi ne corrigent qu’un seul token dans la séquence de n tokens, ce qui allonge la trajectoire
  • Le lookahead decoding et le speculative decoding cherchent à réduire les inefficacités du Jacobi decoding et du décodage AR classique, mais au prix d’un surcoût mémoire à l’inférence

Objectif d’apprentissage de Consistency LLM

  • CLLM adapte un LLM préentraîné pour qu’il se déplace de manière cohérente depuis n’importe quel point d’une trajectoire de Jacobi vers le point fixe
  • Cet objectif est similaire à celui des consistency models, une technique d’accélération issue des modèles de diffusion
  • À partir de trajectoires de Jacobi collectées sur le modèle cible, le modèle est entraîné avec une perte qui encourage une convergence en une seule étape pendant les itérations de Jacobi
  • L’entraînement qui transforme chaque modèle cible en CLLM comporte deux parties
    • Préparation des trajectoires de Jacobi
      • pour chaque prompt, le Jacobi decoding est exécuté séquentiellement sur chaque segment découpé en blocs de n tokens
      • la séquence de réponse complète prend alors la forme d’une concaténation de points fixes consécutifs
      • chaque séquence générée au sein de la trajectoire est calculée comme un exemple d’entraînement
      • le découpage en blocs de n tokens permet d’éviter le ralentissement lié à l’évaluation d’entrées très longues dans les réponses longues
    • Optimisation conjointe de la consistency loss et de la perte AR
      • la consistency loss pousse le modèle à prédire plusieurs tokens d’un coup
      • la perte AR aide CLLM à rester aligné sur la distribution du LLM cible afin de préserver la qualité de génération

Construction de la fonction de perte

  • Le LLM cible est noté p et CLLM , avec initialisé à partir des paramètres de p
  • La global consistency (GC) loss pousse CLLM à produire le point fixe y* lorsqu’on lui fournit en entrée un état arbitraire y de la trajectoire de Jacobi
  • La local consistency (LC) loss aligne les sorties produites à partir de deux états adjacents y(j) et y(j+1) de la trajectoire de Jacobi
  • La distance entre distributions D(·||·) suit les options discutées dans la méthode GKD ; dans ces expériences, c’est surtout la forward KL qui est utilisée
  • La perte AR applique une perte autorégressive classique à partir de la sortie générée l par le LLM cible p, afin d’éviter de s’éloigner de sa distribution
  • La perte totale d’entraînement est composée de la consistency loss et de la perte AR pondérée par un coefficient w

Configuration expérimentale et résultats

  • Les expériences couvrent trois tâches de domaine spécialisé et un benchmark de dialogue open domain
    • Spider : text-to-SQL
    • Human-Eval : complétion de code Python
    • GSM8k : mathématiques
    • MT-bench : dialogue open domain
  • Selon les tâches, les modèles cibles utilisés sont un coder LLM fine-tuné, Deepseek-coder-7B-instruct, LLaMA-2-7B et ABEL-7B-001
  • L’entraînement comme l’évaluation ont été effectués sur des serveurs NVIDIA A100 40GB
  • Sur les domaines spécialisés, CLLM a montré les plus fortes accélérations par rapport au modèle cible d’origine et à des baselines comme Medusa2 ou speculative decoding
  • Sur MT-bench, un CLLM entraîné à partir de LLaMA2-7B sur le dataset ShareGPT, combiné au lookahead decoding, a atteint une accélération comparable à celle de Medusa2
    • le score MT-bench est lui aussi comparable
    • CLLM ne nécessite aucune modification de l’architecture d’origine du modèle cible
    • l’absence de composants auxiliaires améliore l’efficacité mémoire

Coût d’entraînement

  • Le coût de fine-tuning de CLLM est présenté comme intermédiaire
  • Sur le dataset Spider, LLaMA-7B atteint une accélération de 3,4x après avoir traité seulement 1 million de tokens
  • Sur un grand dataset comme CodeSearchNet-Python, l’utilisation de seulement 10 % du dataset pour générer les trajectoires de Jacobi permet d’obtenir environ 2,5x d’accélération
  • Le nombre total de tokens est estimé par la formule suivante
    • nombre moyen de trajectoires par prompt × longueur moyenne des trajectoires × nombre de prompts
  • Les coûts d’entraînement estimés par dataset sont les suivants
    • Spider : 2 millions de tokens, soit < 0,01 % du coût de préentraînement
    • CodeSearchNet-Python : 100 millions de tokens, soit ~0,1 % du coût de préentraînement
    • GSM8K : 10 millions de tokens, soit ~0,01 % du coût de préentraînement
    • ShareGPT : 200 millions de tokens, soit ~0,2 % du coût de préentraînement

Fast forwarding et tokens stationnaires

  • Le LLM cible ne génère généralement qu’un seul token correct par itération de Jacobi
  • Avec CLLM, on observe un phénomène de fast forwarding, où plusieurs tokens consécutifs sont correctement prédits en une seule itération de Jacobi
  • Sur le LLM cible, même des tokens générés correctement à une étape peuvent parfois être remplacés par des tokens erronés lors d’itérations ultérieures
  • CLLM montre une capacité à prédire à l’avance les bons tokens même lorsque les tokens précédents sont erronés, puis à les conserver dans les itérations suivantes
    • ces tokens sont appelés tokens stationnaires (stationary tokens)
  • Le fast forwarding et les tokens stationnaires permettent au Jacobi decoding de CLLM de converger plus rapidement, contribuant ainsi à l’accélération de génération

Apprentissage de motifs linguistiques

  • Il a été observé que CLLM acquiert pendant l’entraînement le concept linguistique de collocations
  • Les collocations désignent des suites de mots ou de termes qui apparaissent ensemble plus souvent que ne le voudrait le hasard
  • On en trouve des exemples à la fois en langue naturelle et dans le code
    • langue naturelle : talk to, remind … of …
    • structures verbe + nom : make a decision, catch a cold
    • structures grammaticales propres au domaine : SELECT … FROM …, if … else
  • L’objectif de consistency generation amène CLLM à inférer ces structures depuis n’importe quel point d’une trajectoire de Jacobi, ce qui l’encourage à prédire plusieurs mots simultanément afin de réduire le nombre d’itérations

Ressources et code

1 commentaires

 
GN⁺ 2024-05-09
Avis de Hacker News
  • Cela ressemble à mon expérience dans un cours de « dessin libre » (sans cours magistral)
    Depuis l’enfance, on me disait que je dessinais bien, mais en réalité je me souviens surtout de répéter des dessins détaillés similaires à ceux que j’avais déjà faits, ou d’y passer beaucoup de temps. Je pense qu’avec assez de temps et de patience, n’importe qui peut rendre une scène assez convaincante
    Il n’y avait ni règles ni cours magistral, et chacun apportait le matériel qu’il voulait. Certains avaient de l’encre, d’autres des crayons, moi j’avais du fusain, et la seule chose fixée était le temps entre les poses du modèle. Les premières poses étaient très courtes, autour d’une minute, puis elles s’allongeaient progressivement jusqu’à des poses de 5 minutes, et on pouvait à tout moment déchirer son dessin et recommencer la même pose
    Les courts échauffements forçaient en fait à réussir les proportions et les contours du premier coup ; contrairement à l’idée reçue selon laquelle se presser fait tout rater, il me semble que, lorsqu’on apprend ou affine une technique, l’urgence agit comme un facteur de stress qui favorise l’attention et l’apprentissage
    Même avant ce cours, j’aurais probablement pu faire des dessins de qualité similaire, mais je suis certain que cela m’aurait pris 5 à 10 fois plus de temps. Le fait d’être empêché de tourner autour du pot et de ressentir le coût des erreurs précipitées a fonctionné
    Cela dit, je trouve dommage d’appeler cette technique Consistency. Le nom convient pour une amélioration des performances, mais me semble moins adapté à une amélioration de la vitesse d’inférence ; je comprends l’idée de « cohérence avec le résultat qui serait finalement sorti si l’on avait généré un token à la fois ». Je préférerais l’appeler Proficiency LLM, puisqu’on attend la même sortie, mais sans les hésitations qui mènent laborieusement à la même conclusion

    • En tant qu’auteur de CLLM, merci de partager cette expérience et ces intuitions. Le processus d’affinement des compétences en dessin ressemble au processus d’entraînement de CLLM, même si, dans l’entraînement actuel de CLLM, le facteur de stress ne devient pas progressivement plus sévère
      En dessin, on peut fixer un temps autorisé à chaque tentative et le réduire progressivement. Dans CLLM, on pourrait rendre le processus d’entraînement plus difficile en demandant de mapper vers l’état final des états de plus en plus éloignés sur la trajectoire de Jacobi
      Le terme « consistency » vient de l’analogie entre les consistency models pour la génération d’images par diffusion et les consistency LLM, car leurs processus d’entraînement sont similaires
    • J’ai vécu une expérience intéressante un été dans un cours pratique de zoologie des invertébrés
      Les étudiants entraient au labo, recevaient un spécimen, et les seules consignes étaient : « Dessinez ceci en 30 minutes. Commencez »
      Il n’y avait pas de « voici comment on dessine », ni de « faites ceci, ne faites pas cela » ; en pratique, c’était plutôt : « Peu importe que vous soyez anxieux ou que vous pensiez ne pas savoir dessiner. Pas d’excuses, dessinez simplement. Maintenant »
      Nous avons tous dessiné, et tout au long de l’été, à mesure que davantage d’animaux arrivaient et que nous répétions le même entraînement, nous avons tous énormément progressé
      Ce que ce cours m’a appris, c’est que tout le monde, vraiment tout le monde, peut dessiner. L’attitude collective est passée de « je ne sais même pas si c’est possible » à « bien sûr que c’est possible ; c’est facile, banal, rien d’extraordinaire »
      C’est une approche que je recommande vivement, et c’était l’un des cours les plus libérateurs et surprenants que j’aie suivis à l’université
    • Les systèmes deviennent généralement plus efficaces lorsqu’ils subissent du stress. En même temps, cela peut aussi les pousser vers des optima locaux ; comme toujours, il y a des avantages et des inconvénients
  • Les auteurs disent que le décodage de Jacobi équivaut au décodage autorégressif glouton, mais en pratique, n’a-t-on pas souvent envie de mettre une température d’échantillonnage supérieure à 0 pour éviter les répétitions et les réponses trop génériques ?
    Je ne connais pas du tout cette stratégie de décodage, donc il se peut que je passe à côté d’un moyen simple de prendre cela en compte

    • Bonne question. Nous travaillons activement à prendre en charge d’autres stratégies d’échantillonnage que l’échantillonnage glouton
      Dans le contexte de l’entraînement de CLLM, au lieu de mapper vers un point fixe statique obtenu par décodage de Jacobi comme objectif d’apprentissage, nous appelons cela un point fixe dynamique. Pour les nouvelles avancées, il suffit de suivre le dépôt GitHub
    • D’accord. Il est facile de vérifier quel token correspondait au choix de valeur maximale, mais il semble difficile de vérifier quel token est apparu avec la probabilité souhaitée
      Une étape de fine-tuning qui apprendrait à la trajectoire à converger vers une complétion de n tokens ayant les statistiques voulues resterait sans doute possible, mais je ne vois pas bien par quoi remplacer l’étape de vérification du point fixe. Peut-être par quelque chose comme « vérifier que la vraisemblance dépasse ce seuil fixe »
  • Cela ressemble à une optimisation assez risquée à faire avant de vraiment comprendre ce qui se passe à l’intérieur d’un LLM. Par exemple, ceux qui croient à l’interprétation géométrique auraient sûrement des choses à dire, et cela pourrait être nuisible dans les cas où l’on utilise des tokens de « remplissage »
    De plus, l’hypothèse selon laquelle on « forme une phrase complète dans son esprit puis on la prononce mot par mot » n’est pas un fait universel, seulement une hypothèse, et elle me semble simplifier à l’excès l’activité de notre esprit. A-t-on vraiment un plan complet avant de parler ou de taper ? En tant que bouddhiste, j’y vois quelque chose de proche d’une illusion. Et plus largement, qu’en est-il des pensées simultanées ? Pensons-nous linéairement à l’échelle de la phrase ?
    Quoi qu’il en soit, les maths sont plutôt élégantes

    • Cette optimisation n’affecte pas les résultats du LLM et garantit de produire des résultats équivalents à ceux d’un décodage direct
      Ne traitons pas les LLM comme quelque chose de magique qui ressemblerait à notre esprit. Ce ne sont que des programmes de plus qui produisent des phrases plausibles
    • Cette hypothèse peut être utile dans ce contexte, mais il semble assez évident qu’elle n’est pas vraie
      Si l’on demande à des gens d’expliquer un événement passé complexe sous plusieurs angles, ils insèrent rapidement, au milieu des phrases, des fragments, des compléments et des digressions pour couvrir toute l’étendue de l’événement. Je ne crois pas avoir déjà vu l’hypothèse de granularité au niveau de la phrase dans un contexte scientifique sérieux
    • Je ne peux pas parler pour tout le monde, mais au moins moi, je ne forme pas de phrases complètes dans ma tête avant de parler
      Il m’arrive de me retrouver au milieu d’une phrase dans une impasse grammaticale et de devoir terminer ma pensée avec un mot ou une tournure maladroite, ou bien de m’arrêter et de recommencer depuis le début
    • Même si les mots peuvent être décomposés, dans plusieurs langues, en unités plus petites porteuses de sens, nous ne semblons pas construire les mots séquentiellement à partir de ces composants sous-jacents
      Il n’y a pas non plus de raison évidente pour que ce phénomène se rompe soudainement au niveau de la phrase
    • Je me demande ce qu’est l’interprétation géométrique
  • Il est étonnant que cela ne suscite pas davantage d’attention. Cela semble apporter un bénéfice clair en performances d’inférence
    Le coût de ce fine-tuning est raisonnable, autour de 0,01 % du coût du préentraînement initial. Les gains de performances semblent aussi assez constants

    • Cela ressemble à un résultat très important pour les performances des LLM
      Je ne connais pas vraiment d’autre article ayant suggéré qu’on puisse améliorer à ce point les performances d’inférence des LLM. Y en a-t-il eu auparavant ?
      D’autant plus si l’on exige au minimum de préserver la qualité de sortie, d’améliorer non seulement la latence des requêtes mais aussi le débit global, de ne pas nécessiter de calcul supplémentaire, et de rester relativement pratique à implémenter sans ajouter beaucoup de complexité
      Comme cela s’appuie sur les travaux menés autour du décodage parallèle/Jacobi, on pourrait considérer que l’intuition elle-même est incrémentale. Les résultats précédents étaient eux aussi nécessaires et importants, mais celui-ci pourrait être celui qui extrait une valeur réelle des possibilités du décodage parallèle
    • Des gains d’inférence similaires, voire supérieurs, sont déjà obtenus avec le décodage spéculatif, largement utilisé
      Ce travail est donc vraiment intéressant et, à ma connaissance, des tentatives moins réussies avaient déjà eu lieu, mais son impact réel n’est pas encore clair
    • Merci de t’intéresser à notre travail. Avec consistency loss + AR loss, entraîner seulement une partie du jeu de données a déjà donné une accélération importante, pour un coût de l’ordre de 0,01 % du préentraînement
      Entraîner sur davantage de données augmente encore la vitesse, car le modèle peut apprendre à partir de collocations et de syntagmes qui apparaissent plus fréquemment
      Pour les détails, voir l’article ; on y constate aussi que les gains de vitesse finissent par saturer à mesure que la taille des données d’entraînement augmente
  • Au début, je pensais que c’était un article du genre Medusa, qui utilise davantage la tête d’unembedding pour deviner les tokens suivants, mais pas du tout
    C’est vraiment impressionnant. Ils n’ajoutent aucun paramètre supplémentaire, seulement une perte auxiliaire d’entraînement

    • Le seul point commun entre Medusa et CLLM est que les deux entraînent/adaptent un LLM pour accélérer l’inférence
      Les techniques d’entraînement et de décodage sont complètement différentes et, comme tu le soulignes, CLLM ne nécessite ni paramètres supplémentaires ni configuration de masques d’attention pour une vérification basée sur un arbre
  • On va bientôt se rendre compte qu’il n’est pas forcément nécessaire d’entraîner des modèles
    Ce qu’il faut, c’est une bonne indexation et un bon échantillonnage
    Fondamentalement, à un certain niveau, tous les LLM peuvent être vus comme une base de données du dataset, avec par-dessus une excellente interface en langage naturel
    Ce ne sont que deux manières différentes d’explorer des données stockées

    • Un LLM peut facilement produire des données qui n’existent pas dans son jeu d’entraînement
      Un LLM n’explore pas des données stockées. Un LLM n’est pas une base de données de ses données d’entraînement
    • Mais l’indexation aussi est une forme d’entraînement. Elle n’utilise simplement pas de descente de gradient de bout en bout
    • Le modèle étant plusieurs ordres de grandeur plus petit qu’une version compressée des données d’entraînement, il ne peut pas être équivalent à cette base de données
    • Dans ce cas, l’article Infinigram pourrait te plaire. Il a été discuté récemment
      https://news.ycombinator.com/item?id=40266791
  • Existe-t-il un endroit où quelqu’un qui s’y connaît peu, comme moi, peut « poser des questions à un expert en IA » ?
    Par exemple, j’aimerais demander pourquoi un LLM ne répond pas de façon déterministe au même prompt
    J’aimerais apprendre cela, et je devrais peut-être suivre une vidéo du type « construire un LLM en 1 heure » sur YouTube

    • Le logiciel contient littéralement un générateur de nombres aléatoires qui choisit l’un des tokens suivants candidats pondérés produits par le modèle
      Le processus de sélection peut comporter plusieurs leviers pour contrôler la réponse. Si tu veux le rendre déterministe et que tu as un accès direct au logiciel, selon celui que tu utilises, le régler sur top-k = 1 ou temperature = 0.0 le rendra déterministe
      En général, les réglages par défaut ne sont pas déterministes, car lorsque le processus est complètement déterministe, la qualité des résultats a tendance à être moins bonne
    • Pour cette réponse, regarde les vidéos de 3blue1brown
      Un modèle LLM sort un vecteur de probabilités sur les tokens, et l’utilisateur du LLM choisit un token dans la liste des plus probables à l’aide de nombres aléatoires
    • Parce qu’un LLM est essentiellement une matrice de probabilités
      Quand tu saisis un prompt, il calcule la probabilité du mot suivant, puis répète ce processus jusqu’à produire une phrase. Les probabilités apprises reposent sur les données d’entraînement
      À cause de ce modèle probabiliste de base, ce n’est pas déterministe à 100 %. En plus, des modèles comme ChatGPT ajoutent volontairement un paramètre temperature pour introduire de l’aléatoire dans l’ensemble du processus
      Si tu veux lire davantage, cette réponse s’appuie sur l’article suivant : The Matrix: A Bayesian learning model for LLMs, https://arxiv.org/abs/2402.03175
    • Dans la plupart des systèmes, on peut contrôler cela avec un paramètre d’inférence appelé temperature
      Mais régler la température aussi bas que possible a tendance à fortement dégrader la qualité des réponses. Le système reste bloqué dans un optimum local et se met à répéter. Une telle réponse peut être « déterministe », mais elle n’est pas bonne
    • Cet article était un bon point de départ, assez structuré tout en gardant la vision d’ensemble
      https://writings.stephenwolfram.com/2023/02/what-is-chatgpt-...
  • Il n’y a pas de repas gratuit ; à mon avis, il y a ici aussi une forme de perte de trajectoire
    Par exemple, certaines trajectoires de Jacobi excluent par définition des chemins à température plus élevée. Du point de vue de la recherche de données, cela peut même être positif, mais si l’on veut maximiser la créativité, cela peut être négatif

    • Il existe de meilleurs et de moins bons algorithmes
      Je ne suis pas sûr que « il n’y a pas de repas gratuit » s’applique toujours de manière particulièrement pertinente. Certaines choses ne se trouvent pas sur le front de Pareto
  • J’aimerais avoir une explication plus détaillée sur le passage « les méthodes de décodage spéculatif entraînent un coût mémoire supplémentaire à l’inférence ».
    Dans le décodage spéculatif, un modèle plus petit génère des « branches » rapides mais potentiellement incorrectes, qui sont ensuite vérifiées par le grand modèle. Mais le décodage spéculatif ne nécessite que la mémoire correspondant à un seul token, et les tokens des autres branches sont simplement masqués pendant l’inférence. Avec une taille de contexte de 1000 et environ 30 branches de 5 tokens, le surcoût mémoire est de 3 %, donc négligeable. Si la taille du contexte est beaucoup plus petite que le nombre de branches, je me demande si un utilisateur d’un LLM génératif avec seulement une fenêtre de contexte de 50 tokens se soucierait vraiment de la vitesse de génération.
    De plus, les techniques de décodage spéculatif ne se limitent pas à l’échantillonnage glouton. Elles doivent se comporter exactement comme le modèle d’origine et échantillonner selon la probabilité attendue. La plupart des articles sur le décodage spéculatif rapportent déjà une accélération de 2,6 à 3,5×. Cet article de blog annonce une génération 2,4 à 3,4× plus rapide ; je ne sais donc pas si c’est une si grande amélioration.
    Plus haut, j’ai mentionné le décodage spéculatif, et les techniques auxquelles l’auteur semble le comparer sont Medusa2 et Eagle, mais le problème fondamental reste le même. Quelle que soit la méthode utilisée pour prédire des tokens à l’avance, il existe certains points où les tokens précédents sont absolument nécessaires avant de pouvoir prédire le token suivant. Ce n’est pas une question de modèle ou de technique, mais de ce qui est mathématiquement possible. Si la distribution de probabilité du cinquième token suivant dépend fortement des quatre tokens précédents, comment peut-on prédire 5 tokens d’un coup ? C’est pareil pour le décodage spéculatif, le décodage de Jacobi ou le décodage parallèle multi-token.
    Si cette méthode ne prend en charge que l’échantillonnage glouton, je me demande quel est son avantage. D’autant plus que d’autres techniques atteignent déjà les gains de vitesse attendus. Comparer l’accélération de l’échantillonnage glouton avec celle de l’échantillonnage aléatoire revient à comparer des pommes et des oranges, et je doute qu’après avoir adapté cette méthode à l’échantillonnage aléatoire, les mêmes gains de vitesse subsistent, à cause du problème fondamental mentionné plus haut.

    • Le point selon lequel « les tokens précédents sont absolument nécessaires avant de pouvoir prédire le token suivant » est peut-être justement l’apport central de cet article.
      Le consistency training pourrait montrer qu’un LLM peut prédire les n tokens suivants même si les tokens précédents contiennent de mauvaises suppositions.
      Par ailleurs, mathématiquement, p(x_t|x_1,...,x_t-1) dépend bien de tous les éléments de x_1 à x_t-1, mais en pratique, il se peut que la prédiction de x_t n’ait besoin que de x_1 à x_t-2 et que l’attention portée à x_t-1 soit minime. On pourrait donc prédire x_t avec x_1 à x_t-2 et un x_t-1 incorrect.
    • Le décodage spéculatif exige de charger en mémoire un modèle plus petit et d’exécuter l’inférence avec ce modèle.
  • C’est intéressant. C’est le genre d’idée que beaucoup de gens ont probablement déjà eue, mais l’article et la présentation étaient bien structurés.

    • Oui. Mon colocataire et moi en avions parlé il y a un an. On peut aussi faire quelque chose de similaire pour le pilotage des LLM.