- Un très grand modèle de langage composé d’environ 1,8 billion de paramètres et de 120 couches, soit plus de 10 fois la taille de GPT-3
- Architecture Mixture of Experts (MoE) avec 16 experts, n’en activant que 2 à chaque forward pass pour réduire les coûts
- Entraîné sur environ 13 billions de tokens, avec 2 époques pour le texte et 4 époques pour le code
- Architecture multimodale avec un encodeur vision séparé, suivie d’un fine-tuning supplémentaire sur environ 2 billions de tokens après le préentraînement texte
- Entraînement pendant 90 à 100 jours sur environ 25 000 A100, pour un coût d’entraînement estimé à environ 63 millions de dollars
Nombre de paramètres et taille du modèle
- GPT-4 serait plus de 10 fois plus grand que GPT-3, avec au total environ 1,8 billion de paramètres répartis sur 120 couches
- À chaque forward pass (génération d’un token), seuls environ 280 Md de paramètres et environ 560 TFLOPs seraient utilisés
- À comparer avec un modèle purement dense, qui aurait nécessité environ 1,8 billion de paramètres et environ 3 700 TFLOPs
- Les paramètres partagés pour l’attention représenteraient environ 55 Md
Architecture Mixture of Experts (MoE)
- OpenAI maintient les coûts à un niveau raisonnable grâce à l’utilisation d’un modèle MoE
- Le modèle utilise 16 experts, chacun comptant environ 111 Md de paramètres pour le MLP
- Chaque forward pass est routé vers 2 experts
-
Routage MoE
- Dans le monde académique, les algorithmes avancés de routage pour choisir l’expert par token sont beaucoup discutés, mais le routage actuel de GPT-4 serait assez simple
-
Compromis dans le choix du nombre d’experts
- Avec le MoE, toutes les parties du modèle ne sont pas utilisées à chaque génération de token, ce qui rend l’inférence très délicate
- Certaines zones restent inactives, ce qui réduit le taux d’utilisation lors du service aux utilisateurs
- D’après la recherche, 64 à 128 experts permettent d’obtenir une loss plus faible que 16, mais cela relève de la recherche pure
- Un grand nombre d’experts complique la généralisation à diverses tâches et rend la convergence plus difficile
- Pour ces raisons, OpenAI aurait choisi prudemment 16 experts
- Avec le MoE, toutes les parties du modèle ne sont pas utilisées à chaque génération de token, ce qui rend l’inférence très délicate
Jeu de données
- GPT-4 a été entraîné sur environ 13 billions de tokens, un chiffre qui additionne les répétitions d’époques et non des tokens uniques
- 2 époques sur les données textuelles et 4 époques sur les données de code
- Inclut plusieurs millions de lignes de données de fine-tuning par instructions obtenues auprès de ScaleAI et en interne
-
Composition du mélange de données
- Sur les 13 billions de tokens, CommonCrawl et RefinedWeb représenteraient chacun 5 billions de tokens
- Une fois les doublons d’époques supprimés, il reste des données secrètes d’« origine inconnue »
- Des rumeurs indiquent qu’une partie proviendrait de twitter, reddit et youtube
- Parmi les sources supposées figurent LibGen (plus de 4 millions de livres), Sci-Hub (plus de 80 millions d’articles), l’ensemble de GitHub, etc.
- Certains avancent que les données manquantes seraient un jeu de manuels universitaires collectés manuellement
- Après conversion en txt, il est facile de les transformer en format d’instructions via self-instruct
- Cela aurait contribué à donner l’impression que GPT-4 est « intelligent » quel que soit le domaine de spécialité
- Il existe aussi des articles qui tentent de déterminer les données d’entraînement en forçant l’extraction de certains livres mémorisés par GPT-4
- Certains livres sont très bien connus du modèle, ce qui confirme qu’ils ont été utilisés à l’entraînement, et il se souvient même des identifiants uniques des problèmes Project Euler
Contexte 32K de GPT-4
- Lors de la phase de préentraînement, une longueur de contexte de 8k (seqlen) a été utilisée
- La version 32k seqlen est le résultat d’un fine-tuning du modèle 8k après le préentraînement
Taille de batch
- La taille de batch a été augmentée progressivement sur plusieurs jours dans le cluster, pour atteindre finalement une taille de batch de 60 millions
- Comme tous les experts ne voient pas tous les tokens, cela représente environ 7,5 millions de tokens par expert
- La taille de batch réelle ne peut être calculée qu’en divisant ce chiffre par la seq len
Stratégie de parallélisation
- Pour paralléliser sur tous les GPU A100, un parallélisme tensoriel 8-way a été utilisé (limite de NVLink)
- Au-delà, un parallélisme pipeline 15-way a été appliqué
- Il est possible que ZeRO Stage 1 ait été utilisé, ainsi que du FSDP au niveau des blocs
-
Pourquoi FSDP n’aurait pas été utilisé
- Une partie de l’infrastructure matérielle disponible pourrait être d’ancienne génération
- Dans les clusters de calcul locaux, il est courant de mettre à niveau l’infrastructure en plusieurs « étapes » pour éviter les interruptions d’exploitation
- Une partie de l’infrastructure matérielle disponible pourrait être d’ancienne génération
Coût d’entraînement
- Les FLOPS d’entraînement de GPT-4 seraient d’environ 2.15e25, sur environ 25 000 A100 pendant 90 à 100 jours, avec un MFU d’environ 32 à 36 %
- Ce taux d’utilisation très faible serait dû au nombre excessif de pannes ayant entraîné des redémarrages depuis des checkpoints
- En supposant environ 1 $ par heure d’A100, ce seul entraînement aurait coûté environ 63 millions de dollars
- Aux conditions actuelles, un préentraînement serait possible avec environ 8 192 H100 en environ 55 jours, soit environ 21,5 millions de dollars à 2 $ de l’heure par H100
Coût d’inférence de GPT-4
- GPT-4 coûte 3 fois plus cher que Davinci à 175 Md de paramètres
- En raison de besoins en clusters plus importants et d’un taux d’utilisation bien plus faible
- Estimation du coût : pour l’inférence de GPT-4 8k seqlen sur 128 A100, 0,0049 cent par 1k tokens ; sur 128 H100, 0,0021 cent
- En supposant un taux d’utilisation suffisamment élevé et le maintien de grandes tailles de batch
Multi-Query Attention (MQA)
- Comme d’autres, OpenAI utilise aussi MQA
- Un seul head étant nécessaire, cela réduit fortement la capacité mémoire requise pour le cache KV
- Malgré cela, GPT-4 32k seqlen ne peut pas fonctionner sur des A100 de 40 Go, et la version 8k est limitée en taille de batch maximale
Continuous Batching
- OpenAI a implémenté à la fois des tailles de batch variables et le continuous batching
- Cela permet à la fois d’autoriser une latence maximale donnée et d’optimiser le coût d’inférence
Multimodalité vision
- Un encodeur vision séparé de l’encodeur texte est relié par cross-attention, dans une architecture similaire à Flamingo
- Des paramètres supplémentaires s’ajoutent aux 1,8 billion de paramètres
- Après le préentraînement uniquement texte, un fine-tuning supplémentaire a été effectué sur environ 2 billions de tokens
- Il était prévu d’entraîner le modèle vision dès le départ, mais faute de maturité suffisante, OpenAI aurait commencé par le texte afin de réduire les risques
- L’objectif principal des capacités vision est de créer des agents autonomes capables de lire des pages web et de transcrire le contenu d’images et de vidéos
- Les données d’entraînement incluent des combinaisons de LaTeX rendu et de texte, des captures d’écran de pages web, des échantillons de frames de vidéos YouTube et des transcriptions basées sur Whisper
Speculative Decoding
- Il est possible que speculative decoding soit utilisé pour l’inférence de GPT-4 (pas certain à 100 %)
- Un modèle plus petit et plus rapide décode à l’avance plusieurs tokens, puis les envoie en un seul batch au grand modèle oracle
- Si les prédictions du petit modèle sont correctes, le grand modèle les valide et plusieurs tokens sont décodés en un seul batch
- Si le grand modèle les rejette, le reste du batch est abandonné et la génération continue avec le grand modèle
- La récente théorie du complot sur la baisse de qualité de GPT-4 pourrait s’expliquer par le fait que le modèle oracle accepte des séquences à faible probabilité du modèle de speculative decoding
Architecture d’inférence
- L’inférence s’exécute sur des clusters de 128 GPU, avec plusieurs clusters répartis dans plusieurs datacenters
- Elle repose sur un parallélisme tensoriel 8-way et un parallélisme pipeline 16-way
- Chaque nœud de 8 GPU contient environ 130 Md de paramètres
- Le modèle compte 120 couches et est donc réparti sur 15 nœuds
- Le premier nœud, qui doit aussi calculer les embeddings, pourrait comporter moins de couches
- D’après ces chiffres, si GPT-4 avait suivi l’optimum de Chinchilla, il aurait dû être entraîné sur deux fois plus de tokens, ce qui suggère la difficulté d’obtenir des données de haute qualité
1 commentaires
Avis sur Hacker News
Cela avait déjà été posté ici et ici
La source originale est https://www.semianalysis.com/p/gpt-4-architecture-infrastruc... et le post sur Twitter semble quasiment reformuler l’article de blog original. C’est probablement pour cela que le tweet a été supprimé
Le fait qu’ils utilisent un MoE (Mixture of Experts) était nouveau et très intéressant, et j’aimerais en savoir plus sur la manière dont ils l’ont fait fonctionner. Une variante d’implémentation pourrait aussi expliquer les fluctuations de qualité observées dans les sorties. Quant au modèle de vision mentionné ici, on en sait encore peu en dehors de quelques démos d’il y a quelques mois, donc j’attends sa publication
Dans le contexte de l’IA, « MoE » signifie généralement « Mixture of Experts » et désigne une technique de machine learning qui divise un problème en sous-problèmes, fait résoudre chacun par des « experts » spécialisés, puis combine leurs sorties
Si le fait que GPT-4 utilise un MoE était effectivement nouveau, cela pourrait donner un peu plus de crédibilité à cette affirmation
Cela montre bien que les grands modèles de langage sont très différents d’une intelligence artificielle générale. Leur adjoindre une calculatrice n’est qu’un bricolage temporaire ; utile, certes, mais à mon avis cela ne les rend pas capables de faire de la science
Ce post, lui, est au moins gratuit pour le moment
Si c’est vrai, l’entraînement a nécessité 21 yottaflops. Je ne sais même plus quand j’ai vu pour la dernière fois le préfixe yotta-
Et le coût d’entraînement de GPT-4 est tombé à environ un tiers de ce qu’il était il y a un an. La vitesse à laquelle le prix de l’entraînement des grands modèles de langage baisse est vraiment stupéfiante, et c’est une bonne nouvelle pour l’open source. Le mémo de Google avait raison en disant qu’il n’y avait pas de fossé défensif
Même si le prix de gros du riz tombait à 0,001 dollar le kilo, si j’ai 1 million de dollars et vous 1 000 dollars, je peux toujours acheter 1 000 fois plus de riz que vous
Et pour beaucoup d’usages, plus intelligent est tout simplement meilleur. Si l’on peut acheter une réponse plus juste pour quelques centimes de plus, ces quelques centimes en valent toujours la peine. Tant qu’on peut entraîner des modèles plus gros et meilleurs avec davantage de matériel et de données, c’est cela, le fossé défensif
J’admire la technologie, mais cette fois j’ai peur, car j’ai du mal à imaginer ce que cela signifiera pour l’avenir. J’ai l’impression que cela va tuer le web ouvert, puis que des lois finiront par être adoptées pour l’enterrer définitivement
Dire que « la théorie du complot selon laquelle la qualité du nouveau GPT-4 a baissé pourrait venir du fait que le modèle oracle a accepté des séquences à plus faible probabilité du modèle de décodage spéculatif », c’est au fond reconnaître que les soupçons pouvaient être justes, tout en proposant un mécanisme précis, mais aussi continuer à insulter et à gaslighter ceux qui ont soulevé le problème
Ce n’est pas prouvé, donc c’est une théorie, et c’est une théorie du complot parce que des gens pensent qu’OpenAI a volontairement dégradé son service
Cette personne n’a pas l’air de savoir de quoi elle parle. Elle poste en permanence ce genre de bêtises sur Twitter. En gros, c’est du copier-coller avec un peu d’assaisonnement
Par exemple, admettons pour le MoE, mais 16 experts de 111 milliards de paramètres n’ont aucun sens. GPT-3 faisait déjà 175 milliards de paramètres, et on n’a pas l’impression qu’ils iraient réduire l’échelle du modèle de base à l’avenir. Un chiffre plus plausible serait environ 220 milliards de paramètres par modèle avec 8 modèles experts, pour un coût total d’inférence identique
Le chiffre de 13 billions de tokens pour les données d’entraînement donne aussi l’impression d’avoir été sorti de nulle part
Google étudie depuis longtemps le Mixture of Experts pour faire monter en échelle les grands modèles de langage. Le modèle GLaM, présenté en 2022, compte 1,7 trillion de paramètres et 64 experts
https://icml.cc/media/icml-2022/Slides/17378.pdf
George Hotz a récemment déclaré dans une interview avec Lex Fridman que « Sam Altman ne vous dira pas que GPT-4 fait 220 milliards de paramètres et utilise 8 jeux de poids dans un modèle en mélange à 16 voies »
À la réaction de Lex, on aurait dit qu’il savait lui aussi que c’était vrai
C’est peu étayé. Les seules personnes qui savent exactement comment fonctionne GPT-4 sont les employés d’OpenAI, et les autres ne peuvent que spéculer
Cela dit, la source secrète et le fossé défensif se trouvent dans les données. J’ai déjà entendu dire qu’OpenAI payait des participants à des concours de programmation pour écrire et commenter du code contenant des informations comme la complexité
Je me demandais encore comment des services gratuits premium comme Thread Reader peuvent continuer à fonctionner, alors même que Twitter facture l’accès à l’API à des tarifs excessifs et met en place des mesures anti-scraping
L’offre API la moins chère avec droit de lecture est à 100 dollars par mois pour lire 10 000 tweets, donc on ne peut créer qu’environ 500 de ces pages à la demande
const puppeteer = require('puppeteer');Cet article a des passages étranges au regard de l’assurance avec laquelle il prétend « connaître tous les chiffres »
Il dit que « l’entraînement préalable est aujourd’hui possible avec environ 8 192 H100 pendant environ 55 jours, pour 21,5 millions de dollars sur la base de 2 dollars par heure de H100 », mais je ne vois pas pourquoi il ajuste arbitrairement à la fois la taille du système et le temps d’entraînement
Il dit aussi que le MoE est difficile à gérer en inférence parce que toutes les parties du modèle ne sont pas utilisées à chaque génération de token, certaines restant inactives tandis que d’autres sont utilisées, ce qui nuit au taux d’utilisation lors du service aux utilisateurs, mais on ne sait pas bien de quel taux d’utilisation il parle. La mémoire ? Si l’utilisation en inférence est vraiment si préoccupante, on peut simplement lancer un modèle non-MoE, non ?
À propos de MQA, il dit aussi que « c’est pour cela qu’un seul head est nécessaire et que la capacité mémoire du cache KV peut être fortement réduite », ce qui est proche, mais faux. Un seul head de Key et de Value est nécessaire, mais le nombre de heads de Query reste le même
Mon intuition, c’est qu’une personne relativement informée a pris la formule de l’article sur le scaling de 2020 et a construit un système imaginaire dont les maths tombent juste. Moi aussi je pourrais bricoler un texte de ce genre avec un vernis de crédibilité, mais ce serait au-delà de mon niveau, donc ce serait pareillement proche de la réalité tout en étant clairement faux. C’est pourquoi cette impression me paraît très suspecte
Le point essentiel de MQA, c’est qu’à cause de ce partage, le cache KV devient plus petit d’un facteur égal au nombre de heads par rapport au cas habituel. Le fait qu’il y ait plusieurs heads de Query n’a aucun effet sur la taille du cache, et du point de vue de la capacité mémoire comme de la bande passante, le facteur limitant du décodage MHA est le cache