I. Préface

Avec le développement des grands modèles de langage et du deep learning, le MoE (Mixture of Experts, mélange d’experts) est progressivement devenu un sujet de recherche très en vue, grâce à ses propriétés de calcul conditionnel et à sa grande extensibilité. Cet article vise à faire un tour d’horizon des principes de base des modèles MoE, de leur architecture globale et des technologies clés. Il s’appuie également sur quelques exemples open source pour décrire brièvement les principales approches d’implémentation de MoE typiques et leurs scénarios d’application.

II. Qu’est-ce que le MoE ?

Avant d’approfondir le MoE, revenons sur l’architecture classique Transformer. Dans un Transformer standard, chaque couche Encoder/Decoder comprend une attention multi-têtes (Multi-Head Attention) et un réseau feed-forward entièrement connecté (Feed-Forward Network, souvent abrégé en FNN). Ce FNN applique la même transformation linéaire et le même mapping non linéaire à tous les tokens d’entrée, ce qui conduit à un calcul dense et à une forte consommation de ressources.

La technique des modèles à mélange d’experts (Mixture of Experts, abrégé en MoE) introduit, à l’emplacement du FNN, un mécanisme « d’experts » : un grand réseau feed-forward est découpé en plusieurs sous-réseaux (les experts), et un réseau de contrôle (Router) réalise un routage dynamique des tokens. Plus précisément, le réseau de contrôle calcule, à partir des caractéristiques du token (par exemple l’embedding ou le contexte d’attention), un score pour chaque expert, puis n’active que les K experts les mieux notés. Les autres experts restent inactifs. De cette manière, le nombre total de paramètres peut atteindre des centaines de milliards, mais, à chaque passe, les paramètres effectivement activés (Activated Parameters) ne représentent qu’une petite fraction, typiquement de l’ordre de 5 % à 15 %. Cela réduit fortement le coût de calcul et l’occupation de la mémoire vidéo.

  • Différences essentielles entre Transformer et MoE
    • Calcul dense : dans un Transformer standard, le FNN traite tous les paramètres de la même façon ;
    • Calcul conditionnel : un modèle MoE ne calcule que sur une partie des experts, réalisant une activation clairsemée.
  • Pourquoi une telle conception ? Les principales raisons sont :
    • Extensibilité : si le budget le permet, on peut augmenter le nombre d’experts pour accroître la capacité du modèle ;
    • Efficacité : comme peu de paramètres sont activés, on réduit immédiatement les FLOPs et l’utilisation de la mémoire vidéo ;
    • Spécialisation : différents experts peuvent se « spécialiser » sur différents types de caractéristiques ou de tâches, améliorant les performances globales.
Imaginez une bibliothèque (comme un Transformer) contenant des milliers de livres (les paramètres). Pour trouver une information, il faudrait feuilleter toutes les pages. Un modèle MoE, lui, ressemble à un bibliothécaire (le réseau de contrôle) qui, selon votre question, ne sélectionne que quelques livres pertinents (les experts) à consulter : c’est à la fois plus rapide et plus efficace.

III. Les composants clés du MoE

Le fonctionnement d’un MoE repose principalement sur deux grands modules :

  1. Experts (Experts)
    • Chaque expert est un sous-niveau feed-forward indépendant (généralement deux couches linéaires avec une fonction d’activation), ce qui revient à entraîner de manière spécialisée un sous-ensemble de l’espace des paramètres (voir « Outrageously Large Neural Networks: The Sparsely‑Gated Mixture‑of‑Experts Layer »).
    • Les experts peuvent être découpés selon différentes stratégies, telles que le clustering des paramètres (Balanced K‑Means), la partition d’un graphe de co‑activation (Co‑activation Graph) ou des méthodes sensibles au gradient, afin de garantir à chaque expert une configuration optimale dans son domaine.
  2. Réseau de contrôle / routage (Router)
    • L’entrée x passe par une projection linéaire pour produire des scores d’experts H(x)=xW_g, puis on ajoute un bruit apprenable pour lisser : H'(x)=H(x)+SoftPlus(xW_n)⊙𝒩(0,1) (Noisy Gating).
    • On applique une stratégie Top‑K : on conserve les K experts les mieux scorés ; après normalisation, on obtient G(x)=Softmax(KeepTopK(H'(x),K)), puis on envoie l’entrée vers ces K experts.
    • On ajoute aussi une perte auxiliaire de charge L_aux=λ·CV(n_1,…,n_E) pour minimiser la variance du nombre de tokens assignés à chaque expert, et éviter la surcharge de certains « experts populaires ».

IV. Pourquoi le MoE est-il si efficace ?

1. Réduction des FLOPs grâce au calcul conditionnel

Dans un Transformer standard, le FNN doit effectuer les mêmes calculs pour tous les N sous-modules et tous les tokens d’entrée, avec une complexité O(N·d^2). Un MoE n’active que K experts, réduisant la complexité à O(K·d^2). Quand K est très inférieur à N, le volume de calcul peut diminuer quasi linéairement d’un facteur proche de N/K.

2. Surparamétrisation et capacité de représentation

Les modèles de très grande taille nécessitent souvent beaucoup de paramètres pour capturer des motifs complexes, mais une augmentation dense des paramètres conduit rapidement à un goulot d’étranglement. Le MoE, grâce au routage clairsemé, autorise pendant l’entraînement un nombre global de paramètres (E·d^2) plusieurs fois supérieur aux paramètres activés, ce qui améliore la capacité à capturer des patterns variés.

3. Répartition du travail et parallélisme distribué

Chaque expert apprend surtout des caractéristiques d’un sous-espace, ce qui permet une répartition fonctionnelle ; le parallélisme d’experts (Expert Parallelism) déploie différents experts sur différents équipements, réduisant les coûts de synchronisation du réseau principal. Combiné au parallélisme en pipeline ou au parallélisme tensoriel, on peut obtenir un meilleur débit et une latence plus faible (voir « GShard: Scaling Giant Models with Conditional Computation and Automatic Sharding »).

4. Validation empirique

  • Le modèle GLaM, avec 1,2 billion de paramètres, n’en active qu’environ 8 %, et dépasse GPT‑3 (175B) sur 29 tâches NLP, illustrant l’intérêt du calcul conditionnel.
  • Switch Transformer, via un routage Top‑1, augmente le débit d’environ 2× tout en conservant les performances.

V. Détails techniques du MoE

Les grands réseaux neuronaux traditionnels (par exemple les Transformers) ressemblent à des « généralistes » : à chaque traitement, ils mobilisent l’ensemble des paramètres, ce qui est coûteux.

Le MoE adopte une approche « à la demande » (calcul conditionnel), où seuls certains experts participent au calcul, évitant les gaspillages de ressources.

1. Activation clairsemée et paramètres activés

Dans le Transformer, la couche FFN doit théoriquement effectuer un calcul complet pour tous les tokens, mais on observe en pratique qu’une partie seulement des neurones s’active — une clairsemée « naturelle » (voir « MoEfication: Transformer Feed-forward Layers are Mixtures of Experts »). Le MoE s’appuie sur ce point : il découpe un grand FNN en E experts, et le routeur sélectionne K experts par token :

IndicateurExplication
Nombre total de paramètresPeut atteindre des milliards, voire des centaines de milliards
Nombre de paramètres activés≈ (nombre total de paramètres) × (K/E), généralement 5 % à 15 %
AvantageLes FLOPs et l’usage de la mémoire vidéo diminuent proportionnellement, améliorant fortement l’efficacité en entraînement et en inférence

2. Réseau de contrôle et stratégies de routage

La sélection des experts est réalisée par le router. Une implémentation courante :

  1. Projection linéaire : H(x)=xW_g
  2. Injection de bruit : H'(x)=H(x)+g·StandardNormal()⊙SoftPlus(H(x)) (Noisy Gating)
  3. Sélection Top‑K : G(x)=Softmax(KeepTopK(H'(x),K))
  • Top‑2 vs. Top‑1 : GShard choisit Top‑2 et mélange les sorties pour améliorer la robustesse ; Switch Transformer choisit Top‑1 afin de simplifier la communication (voir « GShard… » et « Switch Transformers… »).
  • Sparsité hiérarchique : des modèles comme Qwen3 ajustent dynamiquement K selon la profondeur du réseau pour un calcul conditionnel plus fin.

3. Équilibrage de charge et perte auxiliaire

Certains experts peuvent être activés en continu si leurs scores sont élevés, entraînant une surcharge. Pour éviter une répartition inégale, le MoE introduit une perte auxiliaire de charge (Auxiliary Load Loss), souvent définie via le coefficient de variation du nombre de tokens reçus :

L_aux = λ · CV(n₁, n₂, …, n_E) où nᵢ est le nombre de tokens traités par l’expert i dans le batch courant, et λ est un poids d’équilibrage.

Cette perte est optimisée avec la perte principale pendant le pré‑entraînement, afin de garder une utilisation relativement homogène des experts (voir l’implémentation de aux_loss dans GShard et dans la bibliothèque transformers).

VI. Quelques exemples classiques de modèles MoE

Voici, dans l’ordre chronologique, plusieurs modèles MoE open source représentatifs :

1. Sparsely-Gated Mixture-of-Experts Layer (2017)

Proposé par Shazeer et al. (Google Brain) (« Outrageously Large Neural Networks: The Sparsely‑Gated Mixture‑of‑Experts Layer »). Il introduit le routage via une porte clairsemée (Noisy Top‑K Gating) et une perte auxiliaire pour équilibrer la charge. Il pose les bases du calcul conditionnel et de l’entraînement efficace avec activation clairsemée à grande échelle.

2. GShard (2020)

Proposé par Lepikhin et al. (Google Research) (« GShard: Scaling Giant Models with Conditional Computation and Automatic Sharding »). Il place un MoE Top‑2 dans chaque FNN de Transformer, introduit la notion de capacité d’expert (capacity) et répartit automatiquement les experts sur plusieurs machines et GPU, avec des stratégies de routage aléatoire et d’équilibrage de charge. Il rend possible l’entraînement et l’inférence de modèles au niveau des centaines de milliards de paramètres, en améliorant fortement l’extensibilité.

3. Switch Transformer (2021)

Proposé par Fedus et al. (Google Research) (« Switch Transformers: Scaling to Trillion Parameter Models with Simple and Efficient Sparsity »). Il utilise un routage Top‑1 : chaque token ne consulte qu’un seul expert, ce qui simplifie la communication ; il introduit aussi le facteur de capacité (Capacity Factor) pour améliorer la charge, et supporte l’entraînement en bfloat16. Il offre un bon compromis entre communication et débit, et étend l’échelle jusqu’au trillion de paramètres avec une bonne efficacité.

4. GLaM (2021)

Proposé par Du et al. (Google Research) (« GLaM: Efficient Scaling of Language Models with Mixture-of-Experts »). Il utilise 64 experts et en active 2 par couche, avec un routage orienté modalité (Mixture-of-Modality). Les paramètres activés ne représentent qu’environ 8 %. Il montre que l’activation clairsemée peut préserver, voire améliorer les performances, et stimule l’application du MoE dans les grands modèles pré‑entraînés.

5. DeepSeek-MoE (2024)

Proposé par l’équipe DeepSeek AI (« DeepSeekMoE: Towards Ultimate Expert Specialization in Mixture-of-Experts Language Models »). Il adopte un découpage fin des experts (Fine-Grained Expert Segmentation) et introduit des experts partagés (Shared Experts) pour gérer les connaissances communes. Chaque token active 6 experts. Cela apporte des idées sur la spécialisation et la réduction de redondance, et montre le potentiel de la fusion multi‑experts et du partage.

6. LLaMA-MoE (2024)

Développé par l’équipe Sys4NLP à partir de Meta LLaMA2 (« LLaMA-MoE: Building Mixture-of-Experts from LLaMA with Continual Pre-training »). Il prend en charge diverses stratégies de partition d’experts (aléatoire, clustering, graphe de co‑activation, etc.), ainsi que deux stratégies de porte (Top‑K bruitée et Switch à expert unique). Les experts tendent aussi à être plus légers. Cela illustre une voie d’application du MoE à des modèles plus compacts et fournit une stratégie d’extension pour des échelles moyennes ou petites.

7. Qwen3-235B-A22B (2025)

Publié par l’équipe Alibaba Tongyi Qianwen (voir la documentation officielle et le dépôt open source). Il totalise 235 milliards de paramètres, dispose de 128 experts, et utilise une planification clairsemée hiérarchique pour ajuster dynamiquement le nombre d’experts activés ; chaque token active 8 experts. Il supporte nativement un contexte 32K, extensible à 128K via YaRN, et utilise GQA ainsi que l’offloading asynchrone pour optimiser l’efficacité du parallélisme. Il combine planification hiérarchique et activation dynamique, réduisant le coût d’inférence et apportant une solution pour les textes très longs et les scénarios à haut débit.

VII. Scénarios d’usage et limites du MoE

En pratique, MoE et Transformers denses ont chacun leurs avantages ; le choix dépend des ressources et des besoins.

  • Les scénarios multi‑machines / haut débit sont plus adaptés au MoE
    • Parallélisme d’experts : les sous‑réseaux experts peuvent être répartis sur plusieurs machines ou équipements ; chaque machine ne calcule que pour quelques experts, réduisant la pression mémoire liée à la réplication complète du modèle.
    • Routage conditionnel : le routeur ne transmet que les informations de routage nécessaires, sans synchroniser tous les paramètres, réduisant fortement les coûts de communication et améliorant le débit.
    • Scalabilité élastique : en cas d’extension du cluster, il suffit d’ajouter ou de redistribuer des experts, décorrélant la capacité du modèle et les ressources matérielles.
  • Les scénarios mono‑machine / faible VRAM ou faible débit sont plus adaptés aux Transformers denses
    • Surcoût de routage et d’ordonnancement : sur une seule machine, le coût du calcul de porte, de la gestion d’état des experts et de la communication inter‑équipements peut augmenter la latence et la complexité.
    • Déploiement plus simple : un Transformer dense ne requiert pas d’équilibrage ni de routage ; les frameworks sont matures, et les arbitrages taille/efficacité sont plus directs.
    • Efficacité d’utilisation des ressources : lorsque la mémoire et la puissance sont limitées, on peut optimiser les modèles denses par pruning, quantification ou distillation, pour un meilleur rapport coût‑performance.

VIII. Conclusion et perspectives

En retraçant l’évolution du MoE, on observe une progression de la « porte bruitée Top‑K » à la « partition automatique multi‑machines », puis à des innovations comme le routage mono‑expert, les experts multi‑modalités, le découpage fin ou la planification clairsemée hiérarchique. À chaque itération, l’objectif est de trouver un point d’équilibre entre « plus grande capacité » et « moindre consommation de calcul ».

L’idée centrale du MoE est le calcul conditionnel (Conditional Computation), qui confère au modèle une grande extensibilité et une bonne efficacité, mais introduit aussi des défis en matière de routage, d’équilibrage de charge et de communication.

Le MoE est devenu une branche majeure des grands modèles en deep learning ; comprendre ses principes de conception et ses scénarios d’application est essentiel pour faire progresser la prochaine génération de systèmes intelligents efficaces.


Quelques termes

Token : unité minimale utilisée par le modèle pour traiter le texte ; par exemple un caractère chinois ou un mot anglais.

Paramètres (Parameters) : valeurs entraînables d’un réseau neuronal, comparables au nombre de briques d’un jeu de construction ; plus il y en a, plus le modèle est complexe.

Calcul conditionnel (Conditional Computation) : mécanisme qui n’active qu’une partie des experts selon l’entrée, comme consulter des professeurs spécialisés plutôt que réunir tout le monde.

Expert (Expert) : sous‑réseau dans un MoE ; chaque expert traite un type de données ou de caractéristiques, comme des enseignants experts de disciplines différentes.

Réseau de contrôle (Router/Gating Network) : module qui décide à quels experts envoyer chaque token, comme un planificateur qui distribue les tâches.

Paramètres activés (Activated Parameters) : nombre de paramètres effectivement utilisés lors d’un calcul, généralement bien inférieur au total.

Activation clairsemée (Sparse Activation) : fait de n’activer qu’une partie des experts ou des paramètres à chaque calcul, afin d’économiser des ressources.

Modèle dense (Dense Model) : modèle traditionnel qui mobilise tous les paramètres à chaque calcul, comme une réunion où tous les membres participent.

FLOPs (nombre d’opérations en virgule flottante) : indicateur de charge de calcul ; plus il est bas, plus le calcul est économe.

Mémoire vidéo (GPU Memory) : mémoire de la carte graphique, utilisée pour stocker paramètres et résultats intermédiaires ; moins on en consomme, plus le déploiement est facile.

Feed-Forward Network (FFN) : type de couche du Transformer qui applique des transformations non linéaires.

Attention multi‑têtes (Multi-Head Attention) : mécanisme du Transformer permettant de se focaliser sur différentes parties de l’entrée.

Sélection/routage Top‑K (Top‑K Routing) : stratégie où le routeur choisit les K experts aux meilleurs scores.

Noisy Gating : ajout de bruit lors de la sélection des experts, pour améliorer la robustesse et l’équilibrage.

Perte auxiliaire de charge (Auxiliary Load Loss) : perte utilisée pour équilibrer la charge des experts et éviter la sur‑activation d’experts populaires.

Coefficient de variation (Coefficient of Variation, CV) : mesure statistique de l’équilibrage ; plus il est faible, plus la répartition est uniforme.

Parallélisme d’experts (Expert Parallelism) : déploiement d’experts sur plusieurs machines, chacune ne calculant que sa partie.

Parallélisme distribué (Distributed Parallelism) : répartition du modèle ou des données sur plusieurs équipements pour calculer en parallèle.

Parallélisme en pipeline (Pipeline parallelism) : répartition des étapes du modèle sur différents équipements, comme une chaîne de production.

Parallélisme tensoriel (Tensor parallelism) : répartition du calcul d’une même couche sur plusieurs équipements.

Facteur de capacité (Capacity Factor) : paramètre contrôlant le nombre maximal de tokens qu’un expert peut traiter, afin d’éviter la surcharge.

Capacité d’expert (Expert Capacity) : nombre maximal de tokens qu’un expert peut traiter lors d’un passage avant.

Découpage fin des experts (Fine-Grained Expert Segmentation) : subdivision du FFN en davantage d’experts plus petits, pour une spécialisation accrue.

Experts partagés (Shared Experts) : experts communs à plusieurs tâches/entrées, traitant des connaissances générales.

Sparsité hiérarchique (Hierarchical Sparsity) : ajustement dynamique du nombre d’experts activés selon la profondeur, pour un calcul conditionnel plus fin.

GQA (Grouped Query Attention) : mécanisme d’attention efficace qui accélère l’inférence.

Offloading asynchrone (Asynchronous Offloading) : transfert asynchrone d’une partie du calcul/des données vers d’autres équipements pour optimiser l’utilisation des ressources.

Mixture-of-Modality : routage fondé sur la modalité d’entrée (texte, code, etc.), pour améliorer le multi‑modal.

Pruning : suppression des paramètres peu importants pour réduire taille et calcul.

Quantification (Quantization) : stockage/calcul en précision plus faible pour réduire la consommation de ressources.

Distillation (Distillation) : entraînement d’un petit modèle à partir d’un grand modèle pour hériter de ses capacités.

Routage (Routing) : processus complet de sélection des experts pour chaque token.

Perte principale (Main Loss) : objectif principal d’optimisation (par ex. entropie croisée).

Perte auxiliaire (Auxiliary Loss) : objectif complémentaire (par ex. équilibrage).

Partition d’experts (Expert Partitioning) : découpage d’un grand réseau en experts, via clustering ou partition de graphe.

Partition de graphe de co‑activation (Co-activation Graph Partitioning) : méthode basée sur la corrélation d’activation des neurones.

Partition sensible au gradient (Gradient-aware Partitioning) : méthode fondée sur les informations de gradient.

Routage des experts (Expert Routing) : action d’envoyer l’entrée vers les experts adéquats.

Routage Top‑1/Top‑2 : routage vers 1 ou 2 experts les mieux scorés.

Capacité (Capacity) : limite de tokens traitables par un expert lors d’un passage avant.

Taux d’activation (Activation Ratio) : proportion de paramètres activés dans un calcul.

Débit (Throughput) : quantité de données traitées par unité de temps.

Latence (Latency) : temps nécessaire pour traiter une entrée ; plus c’est faible, mieux c’est.

Partition automatique (Automatic Sharding) : répartition automatique des paramètres du modèle sur plusieurs équipements.

bfloat16 : format flottant basse précision souvent utilisé pour économiser la mémoire vidéo.

Technologie YaRN : technique d’extension de la longueur de contexte, utile pour les textes longs.