2 points par GN⁺ 2024-04-02 | 1 commentaires | Partager sur WhatsApp
  • GPT fonctionne comme un transformer préentraîné sur de très grands volumes de données, qui prédit la distribution de probabilité du fragment de texte suivant, puis génère des phrases en échantillonnant cette distribution de façon répétée
  • La même architecture est utilisée non seulement pour la génération de texte, mais aussi pour la reconnaissance vocale, la synthèse vocale, la génération d’images et la traduction ; ici, l’accent est mis sur la prédiction du token suivant, qui sert de base aux outils de type ChatGPT
  • Le texte d’entrée est découpé en tokens, convertis en vecteurs d’embedding, puis passe par des blocs d’attention et des blocs de perceptron multicouche afin d’absorber le contexte environnant
  • GPT-3 contient 175 milliards de paramètres répartis dans environ 28 000 matrices, dont l’embedding et l’unembedding représentent chacun environ 617 millions de poids
  • Le vecteur final devient une distribution de probabilité sur le token suivant après passage par la matrice d’unembedding et le softmax, tandis que la temperature règle l’équilibre entre prédictibilité et diversité

Rôle de base de GPT et des transformeurs

  • Les trois lettres de GPT signifient Generative, Pretrained et Transformer
    • Generative signifie qu’il génère un nouveau texte
    • Pretrained signifie qu’il est entraîné sur un vaste ensemble de données, puis peut être ajusté à une tâche spécifique via un entraînement complémentaire
    • Transformer désigne l’architecture de réseau de neurones considérée comme l’invention centrale du boom actuel de l’IA
  • Les transformeurs sont utilisés dans de nombreux types de modèles
    • Des modèles qui prennent de l’audio en entrée et produisent une transcription
    • Des modèles qui génèrent une voix de synthèse à partir de texte
    • Des outils comme DALL-E ou Midjourney, qui produisent des images à partir d’une description textuelle
    • La traduction automatique, qui était l’usage initial du transformeur présenté pour la première fois par Google en 2017
  • La variante abordée ici est le modèle de prédiction du texte suivant qui sert de base à des outils comme ChatGPT
    • Il prend en entrée du texte, et dans certains cas aussi des images ou des sons environnants, puis prédit ce qui vient ensuite
    • La sortie est une distribution de probabilité sur plusieurs fragments de texte possibles

Comment la prédiction du token suivant devient génération

  • Prédire le mot suivant et générer du texte semblent, à première vue, être deux objectifs différents, mais en exécutant un modèle de prédiction de manière répétée, on peut produire un texte long
    • On entre un texte initial
    • Le modèle crée une distribution de probabilité pour le fragment suivant
    • On tire un échantillon aléatoire depuis cette distribution et on l’ajoute au texte
    • On réinjecte ensuite l’ensemble du nouveau texte pour répéter le même processus
  • Lorsqu’on exécute GPT-2 de cette manière sur un ordinateur portable, on obtient des exemples où l’histoire ne se tient pas bien
  • En passant à l’API GPT-3, qui repose sur la même architecture de base mais à plus grande échelle, on peut générer des récits plus plausibles
  • Le fait que ChatGPT et d’autres grands modèles de langage produisent leurs réponses mot par mot repose lui aussi, au fond, sur une boucle de prédiction et d’échantillonnage
  • Un point de départ simple pour en faire un chatbot consiste à représenter la situation de dialogue sous forme de texte
    • On utilise un system prompt décrivant un AI assistant utile interagissant avec un utilisateur
    • On ajoute la question de l’utilisateur comme premier fragment de dialogue
    • On laisse ensuite le modèle prédire ce que cet assistant dirait à la suite
    • Pour que cette approche fonctionne bien, une étape d’entraînement supplémentaire est nécessaire

Flux des données à l’intérieur d’un transformeur

  • L’entrée est divisée en petits fragments appelés tokens
    • Dans le texte, un token peut être un mot, une partie de mot ou une combinaison fréquente de caractères
    • Si l’entrée inclut des images ou du son, des patches d’image ou des fragments audio peuvent aussi devenir des tokens
  • Chaque token est associé à un vecteur, c’est-à-dire une liste de nombres
    • Ce vecteur encode d’une certaine manière le sens du fragment correspondant
    • Si on le voit comme une coordonnée dans un espace de grande dimension, les mots de sens proche ont tendance à se retrouver dans des vecteurs proches
  • La séquence de vecteurs passe d’abord par des blocs d’attention
    • Les blocs d’attention permettent aux vecteurs d’échanger des informations et de mettre à jour leurs valeurs
    • Ils traitent les variations de sens selon le contexte, comme entre model dans “a machine learning model” et model dans “a fashion model”
    • Ils déterminent dans quelle mesure un mot est pertinent pour mettre à jour le sens d’un autre, ainsi que la manière de faire cette mise à jour
  • Les vecteurs passent ensuite par un bloc appelé perceptron multicouche ou feed-forward layer
    • À cette étape, les vecteurs ne communiquent pas entre eux et subissent la même opération en parallèle
    • On peut comparer cela au fait de poser à chaque vecteur une longue liste de questions, puis de le mettre à jour selon les réponses
  • Le réseau complet répète des blocs d’attention et des blocs de perceptron multicouche
    • Il existe aussi des étapes de normalisation entre les deux, mais elles sont omises dans cette vue d’ensemble de haut niveau
    • À la fin, on espère que le sens essentiel de la phrase est contenu dans le dernier vecteur de la séquence
    • C’est à partir de ce dernier vecteur qu’on construit la distribution de probabilité sur tous les tokens suivants possibles

Format du deep learning et échelle des paramètres de GPT-3

  • Le deep learning est une approche du machine learning qui détermine le comportement d’un modèle à partir des données
    • Il est utilisé pour des problèmes nécessitant intuition et reconnaissance de motifs, comme attribuer un label à une image ou prédire le mot suivant dans un texte
    • Au lieu d’écrire explicitement la procédure en code comme dans les premiers systèmes d’IA, on construit une structure flexible dotée de paramètres ajustables, puis on ajuste leurs valeurs à l’aide d’exemples
  • La régression linéaire est l’exemple le plus simple de machine learning
    • Elle traite les cas où l’entrée et la sortie sont chacune un seul nombre, comme la surface d’une maison et son prix
    • Elle cherche la meilleure droite à l’aide de deux paramètres continus : la pente et l’ordonnée à l’origine
  • GPT-3 n’a pas deux paramètres, mais 175 milliards de paramètres
    • Un modèle d’une telle taille peut surapprendre sur les données d’entraînement ou devenir impossible à entraîner
    • Les modèles de deep learning sont considérés comme une famille de modèles dont la capacité à passer à l’échelle a été démontrée au cours des dernières décennies
    • L’algorithme d’entraînement commun à cette famille est la rétropropagation
  • Pour que la rétropropagation fonctionne bien à grande échelle, le modèle doit respecter un certain format
    • L’entrée doit être représentée sous forme de tableaux de nombres réels
    • Ces tableaux sont transformés en d’autres tableaux de nombres réels au fil des couches
    • La dernière couche d’un modèle de texte est une liste de nombres représentant la distribution de probabilité sur tous les tokens suivants possibles
  • Les paramètres du deep learning sont généralement appelés poids
    • La façon dont les poids interagissent avec les données repose sur des sommes pondérées
    • Des fonctions non linéaires interviennent aussi entre les couches, mais elles ne dépendent pas des paramètres
    • En pratique, on regroupe souvent ces sommes pondérées sous forme de multiplications matrice-vecteur plutôt que de les exposer directement
  • Les 175 milliards de poids de GPT-3 sont organisés en environ 28 000 matrices
    • Ces matrices se répartissent en 8 catégories
    • Les poids du modèle constituent le “cerveau” acquis pendant l’entraînement, tandis que les données traitées lors d’une exécution encodent un cas particulier, comme le texte d’entrée

Embedding, taille du contexte et distribution de probabilité en sortie

  • La première étape consiste à découper le texte d’entrée en tokens, puis à convertir chaque token en vecteur
    • En réalité, les tokens peuvent être des fragments de mots ou de la ponctuation, mais ils sont traités ici comme des mots pour faciliter la compréhension
    • Le modèle dispose à l’avance d’une liste de tous les tokens possibles, appelée vocabulary
  • La matrice d’embedding détermine en quel vecteur chaque token doit être transformé
    • Elle est notée W_E
    • Ses valeurs sont initialisées aléatoirement, puis déterminées par un apprentissage fondé sur les données
    • Dans GPT-3, la taille du vocabulary est de 50 257 et la dimension d’embedding est de 12 288
    • Leur produit donne une matrice d’embedding contenant environ 617 millions de poids
  • Un embedding de mot peut être vu comme un point dans un espace de grande dimension
    • Les mots de sens proche ont tendance à se situer à des positions voisines
    • Au fur et à mesure de l’entraînement, les embeddings ont tendance à s’organiser de sorte que certaines directions de l’espace portent un sens
    • On cite par exemple les relations woman - man et king - queen, ou encore Italy - Germany + Hitler, qui se rapproche de Mussolini
    • Dans l’exemple de queen, il est aussi précisé que l’embedding réel de queen peut être plus éloigné qu’un simple king mis au féminin
  • Le produit scalaire est une manière de mesurer à quel point deux vecteurs sont alignés
    • S’ils pointent dans la même direction, il est positif ; s’ils sont perpendiculaires, il vaut 0 ; s’ils sont opposés, il est négatif
    • On peut tester par produit scalaire l’hypothèse selon laquelle cats - cat représente une direction liée au pluriel
    • Les noms au pluriel ont alors tendance à donner des valeurs plus élevées que les noms au singulier
    • On observe aussi des valeurs croissantes pour les produits scalaires avec des mots comme one, two et three
  • Les vecteurs d’un transformeur ne doivent pas seulement représenter un mot isolé ; ils doivent aussi pouvoir absorber le contexte
    • Les vecteurs initiaux ne contiennent que le sens du token individuel extrait de la matrice d’embedding
    • En traversant le réseau, l’objectif est qu’ils intègrent un sens plus précis reflétant les mots voisins et même le contexte plus lointain
    • La context size de GPT-3 est de 2048, ce qui signifie qu’il est entraîné à traiter 2048 vecteurs à la fois
    • Cette taille de contexte limite la longueur de texte que le modèle peut prendre en compte pour prédire le mot suivant
    • Cela aide à comprendre pourquoi les premiers chatbots comme ChatGPT donnaient l’impression de perdre le fil dans de longues conversations
  • La dernière étape consiste à produire une distribution de probabilité sur le token suivant
    • Le dernier vecteur du contexte final est multiplié par la matrice d’unembedding W_U pour produire une liste de nombres de la taille du vocabulary
    • Chaque composante de cette sortie brute est appelée un logit pour la prédiction du mot suivant
    • W_U contient une ligne correspondant à chaque token du vocabulary, et la longueur de chaque ligne est égale à la dimension d’embedding
    • Dans GPT-3, W_U ajoute lui aussi environ 617 millions de paramètres
    • En additionnant embedding et unembedding, le total cumulé de paramètres dépasse légèrement le milliard
  • Le softmax transforme une liste arbitraire de nombres en une distribution de probabilité valide
    • Chaque valeur doit être comprise entre 0 et 1, et la somme totale doit être égale à 1
    • On élève e à la puissance de chaque valeur d’entrée pour obtenir des nombres positifs, puis on normalise en divisant par leur somme
    • Les grandes valeurs d’entrée obtiennent une probabilité élevée, proche de 1, tandis que les petites se rapprochent de 0
    • C’est plus souple que de ne prendre que la valeur maximale, ce qui permet à plusieurs valeurs proches de conserver une probabilité significative
  • La temperature contrôle le degré de concentration de la distribution softmax
    • Quand T est grand, même les valeurs faibles reçoivent davantage de poids et la distribution devient plus uniforme
    • Quand T est petit, les grandes valeurs dominent plus fortement
    • T=0 est le cas extrême où tout le poids se concentre sur la valeur maximale
    • Avec une temperature de 0, on choisit toujours le mot le plus prévisible, et l’exemple produit alors une histoire très convenue, de type Goldilocks
    • Une temperature plus élevée laisse une chance à des mots moins probables, mais dans l’exemple l’histoire démarre de façon plus originale avant de devenir rapidement dénuée de sens
    • L’API n’autorise pas une temperature supérieure à 2 ; ce n’est pas pour une raison mathématique, mais une limite arbitraire destinée à éviter que l’outil ne génère des résultats trop absurdes

1 commentaires

 
GN⁺ 2024-04-02
Commentaires Hacker News
  • Si quelqu’un comprend comment fonctionne GPT, j’ai une question. Je pensais que ces modèles choisissaient le mot suivant le plus plausible, mais si l’on choisit « l’un des mots plausibles », cela ne peut-il pas conduire à une situation où la liste des prédictions pour le mot suivant devient bien moins plausible ?
    S’il est possible de le calculer, il semblerait plus avantageux de faire tourner des candidats sur « deux mots ensemble », puis d’étendre cela à 3, 4, n mots ; je me demande si ce type d’approche existe
    Après avoir regardé la vidéo et lu les commentaires, j’ai appris qu’il s’agit de la recherche en faisceau (beam search), utilisée avec la température qui permet de régler ce comportement

    • En pratique, la recherche en faisceau ne semble pas très bien fonctionner pour les modèles génératifs.
      La température et top_k sont des paramètres assez similaires, introduits pour refléter le fait que chaque phrase qu’un humain peut prononcer est, probabilistiquement, imprévisible. Voici un exemple qui reproduit en 2021 un ancien graphique de la documentation Hugging Face de 2018/2019 : https://lilianweng.github.io/posts/2021-01-02-controllable-t...
      Une recherche en faisceau sur des séquences beaucoup plus longues pourrait être meilleure, et une approche combinant plusieurs techniques pourrait fonctionner, mais cela ne semble pas être le cas. La partie requête-clé-valeur des transformeurs se concentre, de nombreuses façons, sur une somme globale en relation avec l’ensemble du contexte. L’architecture elle-même n’est pas adaptée à ce type d’unités plus longues, et il n’existe pas non plus de système de base « à deux tokens »
      Quand la plupart des modèles GPT ont entre 50 000 et 100 000 tokens, on se retrouve avec bien plus de paramètres, du type 50 000*50 000, ainsi qu’un problème de rareté des données. Même sans tenir compte de la complexité d’apprentissage, de nombreux éléments des modèles GPT sont bien trop centrés sur l’exploitation de la richesse d’un token unique ou d’un index de token unique pour qu’on puisse dire qu’ils sont conçus pour ce type de recherche en faisceau
    • Le réglage de la température détermine jusqu’à quel point des tokens rares peuvent être rendus possibles comme token suivant. À 0, l’élément en tête de la liste de probabilités est choisi ; au-dessus de 0, des tokens de probabilité plus faible peuvent aussi être sélectionnés
    • Oui. C’est une faiblesse fondamentale des grands modèles de langage. Comme l’espace de recherche croît de façon exponentielle, il est malheureusement probable que ce soit impossible à résoudre.
      Des techniques comme la recherche en faisceau peuvent aider, mais elles n’apportent qu’une amélioration d’un facteur constant. Malgré cela, les grands modèles de langage ont atteint leurs performances actuelles en dépit de cette limite
    • Ce type d’approche existe. Les systèmes réellement déployés utilisent rarement une recherche gloutonne et recourent plutôt à des algorithmes de recherche plus globaux
      On peut citer par exemple la recherche en faisceau : https://www.width.ai/post/what-is-beam-search
      L’idée essentielle est de conserver une fenêtre de probabilité sur les tokens prédits afin d’améliorer la qualité de la sortie finale
    • Traiter des « mots ensemble », c’est en gros du chunking, ou du moins quelque chose qui s’en approche. J’ai trouvé impressionnant que l’on puisse additionner et soustraire des plongements vectoriels de mots individuels pour obtenir des résultats porteurs de sens.
      Si l’on regroupe des blocs plus grands, tout ce processus se mélange et l’on peut faire la même chose dans l’espace conceptuel. Par exemple, si l’on prend une méthode de référence comme les embeddings de phrase, cela devient le bloc de travail pour la comparaison
  • Je ne vois personne de mieux placé que lui pour enseigner le mécanisme d’attention au grand public. C’est comme un rêve devenu réalité

    • Impressionnant. Cette série 3B1B a commencé il y a 6 ans et en est maintenant à son chapitre 5.
      Si vous n’avez pas encore vu les chapitres précédents, je les recommande vraiment très fortement
  • Si cela vous a plu, la chaîne Andrej Karpathy propose aussi des vidéos intéressantes expliquant les réseaux de neurones et leur fonctionnement interne. C’est destiné à des gens qui savent programmer

    • En tant que programmeur assez expérimenté ayant regardé les vidéos d’Andrej, je recommanderais de les utiliser non pas comme point de départ pour découvrir les réseaux de neurones, mais pour consolider ou approfondir après avoir acquis les bases.
      Moi aussi, j’ai foncé tête baissée et, même s’il conseillait de regarder des vidéos antérieures, j’ai supposé à tort que je pourrais comprendre en cours de route. Certains termes sont indispensables pour vraiment en tirer quelque chose
      J’ai abandonné, comblé mes lacunes avec d’autres ressources, puis je suis revenu ; ses vidéos m’ont alors paru bien plus précieuses. À quiconque veut apprendre les réseaux de neurones, je recommande vivement d’apprendre de mon erreur
  • Au milieu des contenus du poisson d’avril, c’est un antidote incroyablement bon. J’ai presque envie de me l’injecter directement dans les veines

  • À ce sujet, cette visualisation interactive vaut aussi le détour : https://bbycroft.net/llm
    Discussion précédente : https://news.ycombinator.com/item?id=38505211

  • 3B1B est l’un des meilleurs éducateurs STEM sur YouTube

  • On dit que le token suivant est obtenu en échantillonnant les logits de la dernière colonne après désimbedding ; dans ce cas, est-ce qu’on ne récupère pas simplement à nouveau le dernier token ? Ou bien la taille de la matrice passe-t-elle à N+1 à une étape donnée ?

    • Un token de fin de séquence est ajouté à la fin de la séquence d’entrée, puis transformé en token suivant prédit
  • J’attends les prochaines vidéos avec impatience. Cette fois, j’ai l’impression que je vais enfin pouvoir vraiment comprendre et assimiler la façon dont tout cela fonctionne