Grands modèles de langageGrands modèles de langage
Grands modèles de langage12 min de lecture

Les mélanges d’experts expliqués simplement

Le MoE de Mixtral expliqué. Cela signifie que le modèle essaie de prédire le prochain token, ou le prochain mot, d’une phrase que vous lui envoyez comme prompt d’input.

Mis à jour le 23 janv. 2025
Les mélanges d’experts expliqués simplement
Sommaire

À retenir

  • Cela signifie que le modèle essaie de prédire le prochain token, ou le prochain mot, d’une phrase que vous lui envoyez comme prompt d’input.
  • Premièrement, vous aurez évidemment votre texte et devrez obtenir vos embeddings, soit les nombres que le modèle comprend.
  • Ce mécanisme d’attention a fait beaucoup de bruit depuis la publication de l’article Attention is All You Need en 2017.

Regardez la vidéo complète !

Ce que vous savez sur les mélanges d’experts est faux. Nous n’utilisons pas cette technique parce que chaque modèle serait expert d’un sujet précis. En fait, chacun de ces prétendus experts n’est pas un modèle individuel, mais quelque chose de beaucoup plus simple.

Grâce à Jensen, nous pouvons maintenant supposer que la rumeur selon laquelle GPT-4 possède 1,8 billion de paramètres est vraie

1,8 billion équivaut à 1 800 milliards, soit 1,8 million de millions. Si nous pouvions trouver une personne pour traiter chacun de ces paramètres en une seconde, ce qui reviendrait essentiellement à vous demander de faire une multiplication complexe avec des valeurs comme celles-ci, il lui faudrait 57 000 ans ! Encore une fois, en supposant que vous puissiez faire ce calcul en une seconde. Si nous nous y mettions tous ensemble, en calculant un paramètre par seconde avec 8 milliards de personnes, nous pourrions terminer en 2,6 jours. Pourtant, les modèles Transformer le font en quelques millisecondes.

C’est possible grâce à énormément d’ingénierie, notamment ce qu’on appelle un « mélange d’experts ».

Malheureusement, nous n’avons pas beaucoup de détails sur GPT-4 ni sur la façon dont OpenAI l’a construit, mais nous pouvons examiner plus attentivement un modèle très semblable et presque aussi puissant de Mistral, appelé Mixtral 8x7B.

Exemple visuel tiré de Les mélanges d’experts expliqués simplement

Crédit de l’image : blogue de Mistral AI.

En passant, si vous ne connaissez pas encore Mistral, vous devriez vraiment envisager de suivre leur travail ! Mistral est une startup française qui construit des modèles de langage à la fine pointe. Elle est très prometteuse et plutôt ouverte à partager ses avancées comparativement à d’autres entreprises bien connues. Et si suivre toutes ces entreprises et recherches vous semble difficile, eh bien, vous pouvez facilement rester au courant de toutes ces nouvelles avancées en vous abonnant à la chaîne ou à mon infolettre dans les liens ci-dessous !

Mais qu’est-ce qu’un mélange d’experts exactement ? Comme je l’ai dit, il ne s’agit pas de plusieurs experts, contrairement à ce que la plupart des gens affirment. Même si le modèle s’appelle Mixtral 8x7B, ce n’est pas 8 fois un modèle de 7 milliards de paramètres, et il en va de même pour GPT-4. Même si nous supposons qu’il possède 1,8 billion de paramètres, ce qu’OpenAI n’a jamais confirmé, il n’existe pas 8 experts de 225 milliards de paramètres. En réalité, il s’agit d’un seul modèle.

Pour mieux comprendre, nous devons regarder ce qui fait fonctionner les modèles Transformer…

Exemple visuel tiré de Les mélanges d’experts expliqués simplement

L’architecture Transformer. Image tirée d’Attention is All you Need (Google).

Même si vous avez probablement vu cette image souvent, ce que nous utilisons en réalité ressemble davantage à ceci : un Transformer uniquement décodeur.

Exemple visuel tiré de Les mélanges d’experts expliqués simplement

Transformer uniquement décodeur. Image tirée d’Attention is All you Need (Google).

Cela signifie que le modèle essaie de prédire le prochain token, ou le prochain mot, d’une phrase que vous lui envoyez comme prompt d’input. Il le fait mot par mot, ou token par token, pour construire une phrase qui est statistiquement la plus logique selon ce qu’il a vu pendant son entraînement.

Maintenant, plongeons dans les parties les plus importantes. Premièrement, vous aurez évidemment votre texte et devrez obtenir vos embeddings, soit les nombres que le modèle comprend. Vous pouvez les imaginer comme une longue liste d’environ mille valeurs qui représentent différents attributs liés au sens de votre phrase ou de votre mot en input. Une valeur pourrait représenter sa taille, une autre sa couleur, une autre s’il peut être mangé ou non, etc. Il s’agit simplement de différents attributs que le modèle d’embedding apprend par lui-même afin de représenter notre monde avec seulement un ou deux milliers de valeurs numériques. Ce processus est appliqué à chaque token, soit un morceau de texte, une partie de code, une partie d’image ou n’importe quoi d’autre, transformé en cette liste de nombres. 

Mais cette information n’est qu’une liste de nombres. Nous venons de perdre toute l’information contextuelle. Il ne nous reste qu’un paquet de mots représentés par des nombres, alors nous ajoutons de l’information positionnelle, en gros de l’information syntaxique, pour mieux comprendre la phrase ou le texte envoyé, en indiquant globalement et localement où se trouve chaque mot. Chaque token finit donc par être représenté par encore plus de valeurs à l’intérieur du réseau. Ce n’est vraiment pas très efficace comparativement à une compréhension directe du langage. Dans le cas de Mixtral, chaque liste associée aux tokens compte 4096 valeurs. C’est déjà beaucoup, et nous en envoyons plusieurs en même temps ! Tout notre texte est maintenant correctement représenté par de nombreuses listes de ces 4000 nombres. Alors, que fait un modèle comme GPT-4 ou Mixtral avec tout cela ?

Exemple visuel tiré de Les mélanges d’experts expliqués simplement

Couche feed-forward dans le bloc Transformer.

Exemple visuel tiré de Les mélanges d’experts expliqués simplement

Couche feed-forward remplacée par les experts dans le bloc Transformer.

Il comprend cette information, puis répète le processus plusieurs fois dans une composante essentielle : le bloc Transformer, présenté dans le célèbre article Attention Is All You Need.

À l’intérieur de ce bloc se trouvent les deux composantes cruciales de tous ces modèles comme GPT-4, Gemini ou Mixtral : une étape d’attention et une étape feed-forward. Chacune joue son propre rôle.

Le mécanisme d’attention sert à comprendre le contexte des tokens d’input. La façon dont ils s’assemblent, ce que tout cela veut dire. Pour simplifier, nous avons plusieurs tokens, chacun déjà représenté par une liste de nombres. Le mécanisme d’attention transforme nos listes de nombres en fusionnant essentiellement des parties de toutes les listes actuelles et en apprenant la meilleure combinaison possible pour les comprendre. Vous pouvez voir cela comme une réorganisation de l’information pour qu’elle soit logique dans son propre cerveau. Lorsque nous disons que le modèle apprend pendant l’entraînement, il apprend quels nombres placer à quels endroits pour l’étape suivante. Il accorde moins d’importance aux tokens inutiles et davantage aux tokens utiles. Comme lorsque vous rencontrez une nouvelle personne : idéalement, vous accordez plus d’importance à son nom qu’aux premiers mots qu’elle a prononcés, qu’il s’agisse de « Salut », « Bienvenue » ou « Bonjour ». Se souvenir du nom est plus important que du synonyme utilisé, même si mon propre cerveau n’est pas d’accord. Ici, l’attention fait la même chose et apprend simplement, à partir de nombreux exemples, ce qui mérite plus d’importance.

Ce mécanisme d’attention a fait beaucoup de bruit depuis la publication de l’article Attention is All You Need en 2017, et pour une bonne raison : il suffit presque à comprendre le contexte. Il faut quand même autre chose pour arriver à ces énormes modèles puissants qui comptent des milliards et des billions de paramètres. Ces modèles Transformer sont aussi gros parce qu’ils empilent plusieurs blocs Transformer les uns sur les autres. Mais pour l’instant, nous avons seulement vu une étape d’attention qui mélange le contenu pour lui donner une nouvelle forme. Cela aide à comprendre le contexte, mais nous avons alors perdu les connaissances propres à chaque token.

Pour corriger ce problème, nous avons besoin d’une sorte de fonction capable de traiter individuellement chacun de ces nouveaux tokens transformés, afin d’aider le modèle à mieux comprendre cette partie précise de l’information. On l’appelle un réseau feed-forward ou un perceptron multicouche. Mais son nom n’est pas important. Ce qui compte, c’est qu’il utilise la même fonction, ou le même réseau, qui ressemble à l’attention, mais sur un token individuel précis. Il parcourt les tokens un par un pour les comprendre et les transformer en vue de l’étape suivante. Par étape suivante, je veux dire qu’on avance plus profondément dans le réseau pour traiter l’information de plus en plus loin, essentiellement jusqu’à la prochaine couche d’attention. C’est comme ce que fait notre cerveau avec l’information qui entre par nos oreilles ou nos yeux, jusqu’à ce qu’il la comprenne et produise une réponse, qu’il s’agisse de parler ou d’agir. Nous traitons l’information et la transformons dans une nouvelle forme. Les Transformers font la même chose.

Heureusement, nous pouvons effectuer cette étape en parallèle et n’avons pas à attendre que tous les tokens soient traités un par un. Elle devient quand même un important goulot d’étranglement pour le compute, puisque nous devons travailler en parallèle avec d’énormes quantités de nombres. C’est là qu’intervient le mélange d’experts, et plus précisément le mélange d’experts sparse. Nos experts sont essentiellement différents réseaux feed-forward au lieu d’un seul. C’est tout. Ils peuvent donc être des couches feed-forward plus petites et efficaces, fonctionner sur différents GPUs en parallèle, tout en offrant encore plus de paramètres au total ! Les 8 experts peuvent même apprendre des choses différentes et se compléter. Que des avantages. Dans le cas de Mixtral, il y a 8 experts de ce type. Pour que tout fonctionne, nous ajoutons simplement un autre miniréseau, appelé routeur ou réseau de gating, dont le seul travail consiste à apprendre vers quel expert envoyer chaque token.

Une couche de mélange d’experts remplace donc uniquement notre couche feed-forward par 8 couches de ce type. Voilà pourquoi il ne s’agit pas vraiment de 8 modèles, mais plutôt de 8 versions de cette partie précise de l’architecture Transformer. Et tout cela vise à rendre le système plus efficace. Une dernière chose que j’ai mentionnée est l’utilisation d’un mélange d’experts sparse. Être sparse signifie simplement que la majorité des valeurs traitées sont réglées à zéro. Dans ce cas, Mixtral a choisi de n’utiliser que 2 experts sur 8 pour chaque token. Les expérimentations ont montré que c’était la meilleure combinaison pour les résultats et l’efficacité. Le routeur envoie donc chaque token à deux experts, répète l’opération pour tous les tokens, puis recombine tout. Encore une fois, simplement pour gagner en efficacité.

Exemple visuel tiré de Les mélanges d’experts expliqués simplement

Couche de mélange d’experts. Image de Mistral AI.

Je veux partager une excellente analogie de Gregory Z sur Medium pour comprendre ce processus. Imaginez un hôpital avec plusieurs départements spécialisés (nos experts). Chaque patient (token d’input) est dirigé vers le bon département par la réception (notre réseau de routage), selon ses symptômes (notre liste de nombres). Tout comme tous les départements ne participent pas au traitement de chaque patient, tous les experts d’un mélange d’experts ne sont pas utilisés pour chaque input.

C’est tout ! Nous empilons simplement ces blocs Transformer et obtenons un modèle super puissant d’un billion de paramètres appelé GPT-4, ou Mixtral 8x7B dans ce cas. Ici, le nombre réel de paramètres n’est pas 8x7 ni 56B. Il est en fait plus petit, autour de 47 milliards, puisque seule une partie du réseau comporte ces multiples experts et que nous n’avons besoin que de 2 experts à la fois pour transformer un token. Lorsque nous l’utilisons, cela représente environ 13 milliards de paramètres actifs ! Donc environ le quart du nombre total.

(Montrer l’animation qui revient de cette couche MoE à l’architecture Transformer de gauche présentée plus tôt)

Maintenant, pourquoi ai-je commencé cet article en disant qu’il ne s’agissait pas vraiment d’experts ? Parce que ces 8 « experts » ne sont en réalité experts de rien. Mistral les a étudiés et a conclu que le routeur envoyait les tokens à ces « experts » de façon plutôt aléatoire, ou du moins sans pattern observable. Nous voyons ici nos 8 experts et 8 types de données, qu’il s’agisse de code, de mathématiques, de différentes langues, etc., et elles sont malheureusement distribuées de façon clairement aléatoire. Aucun expert n’est axé sur les mathématiques ou le code. Ils contribuent tous un peu à tout. L’ajout de ces « experts » aide donc le modèle, mais pas comme on pourrait s’y attendre. Il l’aide parce qu’il y a davantage de paramètres et que nous pouvons les utiliser plus efficacement.

Exemple visuel tiré de Les mélanges d’experts expliqués simplement

Un élément intéressant qu’ils ont découvert est que le même expert semblait être utilisé au début de la génération d’une nouvelle ligne. C’est assez intéressant, mais pas très utile comme conclusion d’analyse !

En passant, l’approche du mélange d’experts n’est pas nouvelle, comme la plupart des techniques que nous utilisons en IA. Celle-ci existe depuis un bon moment. Par exemple, voici un article de 2013, auquel a participé un auteur d’OpenAI que vous devriez reconnaître, qui développait l’idée existante de mélanges d’experts fonctionnant avec un tel mécanisme de gating. Nous avons simplement appliqué cette idée aux Transformers et augmenté l’échelle, comme nous le faisons toujours !

Et voilà ! Bien sûr, l’architecture Transformer complète contient beaucoup d’autres composantes importantes et est un peu plus complexe que ce que j’ai montré ici. J’espère toutefois que ce concept de mélange d’experts est maintenant plus clair, qu’il a déconstruit certaines croyances selon lesquelles ces composantes seraient de véritables « experts » et, surtout, que je ne verrai plus un autre calcul rapide qui multiplie 8 par 7 pour trouver le nombre total de paramètres d’un modèle !

Merci d’avoir lu l’article au complet, et on se retrouve dans le prochain pour d’autres explications sur l’IA !

Discussion

Commentaires

Chargement

Aucun compte requis. Votre nom et votre commentaire seront publics, alors n'incluez pas de renseignements privés. Consultez la page de confidentialité pour les détails.

Continuez à apprendre

Vous voulez le côté pratique de l'IA, sans le brouillard marketing ?

Je partage ce qui est utile sur YouTube, Substack et dans mes guides d'ingénierie IA.

FAQ

Qu’est-ce qu’un modèle de langage à mélange d’experts ?

Il contient plusieurs réseaux experts feed-forward et achemine chaque token vers un sous-ensemble sélectionné de ces réseaux.

Pourquoi utiliser des experts au lieu d’activer le modèle complet ?

Le routage sparse augmente la capacité totale sans payer le coût de calcul du modèle complet pour chaque token.

Que fait le routeur ?

Il attribue un score aux experts pour chaque token et envoie la représentation à ceux qui devraient la traiter le mieux.

Chaque expert correspond-il à un sujet humain clairement défini ?

Pas nécessairement. La spécialisation émerge pendant l’entraînement et peut ne pas correspondre à des étiquettes simples comme la programmation ou les sciences.

Quel est un compromis concret des MoE ?

Les modèles gagnent efficacement en capacité, mais l’équilibrage du routage, la communication, la mémoire et le déploiement deviennent plus complexes.

Pourquoi ne peut-on pas calculer la taille d’un modèle MoE en multipliant son nombre d’experts ?

Le modèle comprend aussi des couches partagées, et le routeur n’active que certains blocs experts pour chaque token. Le nombre total de paramètres diffère donc du nombre de paramètres actifs.