Router Network (Réseau de routage MoE)
Le router network (aussi appelé gating network ou réseau de routage) est le composant d’un modèle Mixture-of-Experts (MoE) qui décide, pour chaque token en entrée, quel(s) expert(s) le traiteront. C’est une couche neuronale apprise en même temps que le reste du réseau, typiquement une projection linéaire suivie d’une fonction softmax.
- Catégorie
- Composant architectural MoE
- Autres noms
- Gating network, gate, réseau de routage, routeur
- Forme standard
- Projection linéaire W·x + b → softmax → top-k
- Entraîné par
- Backpropagation conjointe avec les experts
- Paramètres
- Matrice W ∈ ℝ^(N×d) + biais optionnel (N experts, d dimension cachée)
- Problème principal
- Routing collapse (effondrement vers quelques experts)
- Modèles utilisant un routeur
- Switch Transformer, Mixtral, DeepSeek-V3, GPT-oss, Qwen-MoE, Grok, Llama 4
Le rôle du routeur dans l’architecture MoE
Dans un Transformer classique, chaque token passe par la même couche feed-forward (FFN). Dans un Transformer MoE, cette couche FFN est remplacée par N réseaux feed-forward parallèles (les « experts ») et un routeur qui décide quels experts activent pour chaque token.
Le routeur prend en entrée la représentation cachée du token (le vecteur de sortie de la couche d’attention précédente) et produit une distribution de probabilités sur les N experts. À partir de cette distribution, il sélectionne les k experts ayant les probabilités les plus élevées (routage top-k). La sortie de la couche MoE est alors la somme pondérée des sorties de ces k experts, où les poids sont les probabilités assignées par le routeur.
Le routeur est petit en termes de paramètres (une matrice de poids de dimension N×d, soit quelques milliers à quelques centaines de milliers de paramètres), mais son impact est disproportionné : c’est lui qui détermine l’utilisation effective de l’ensemble de la capacité du modèle. Un routeur défaillant transforme un MoE à 671 milliards de paramètres en un modèle qui n’utilise effectivement qu’une fraction de ses experts.
Fonctionnement mathématique
Le routeur linéaire standard
La forme la plus courante du routeur est une simple projection linéaire suivie d’une activation :
G(x) = Softmax(W · x + b)Où :
•
x ∈ ℝ^d = représentation cachée du token (vecteur d’entrée)•
W ∈ ℝ^(N×d) = matrice de poids apprise du routeur•
b ∈ ℝ^N = biais optionnel•
G(x) ∈ ℝ^N = distribution de probabilités sur les N experts
Chaque ligne de la matrice W peut être interprétée comme un « vecteur prototype » pour un expert donné. Le produit scalaire entre le token x et chaque prototype mesure l’affinité du token avec chaque expert. Le softmax normalise ces scores en une distribution de probabilités.
Après le softmax, la sélection top-k ne conserve que les k experts ayant les probabilités les plus élevées et met les autres à zéro :
TopK(G(x), k) → seuls les k plus grands scores sont conservés, les autres sont mis à 0
La sortie finale de la couche MoE est la somme pondérée des sorties des experts sélectionnés :
y = Σ(i ∈ TopK) G(x)_i · Expert_i(x)
La question de la précision numérique
Un point subtil mais critique : le routeur doit fonctionner en précision complète (float32), même quand le reste du modèle utilise une précision réduite (bfloat16 ou FP8). Le softmax contient une fonction exponentielle qui est très sensible aux erreurs d’arrondi. Les premiers essais d’entraînement du Switch Transformer en bfloat16 complet ont échoué à cause de l’instabilité du routeur. La solution est d’utiliser la « selective precision » : seul le calcul du routeur est effectué en float32, puis le résultat est reconverti en bfloat16 avant d’être envoyé aux experts.
Les stratégies de routage
Le choix de la stratégie de routage est l’une des décisions architecturales les plus importantes d’un modèle MoE. Voici les principales approches, de la plus simple à la plus sophistiquée.
Token Choice : routage Top-K
C’est le paradigme dominant. Chaque token choisit ses k meilleurs experts selon les probabilités du routeur.
Top-1 (Switch Transformer). Chaque token est envoyé à un seul expert. C’est la forme la plus simple et la plus efficace en termes de compute et de communication. Le Switch Transformer a démontré que cette simplification (par rapport au top-2 historique) fonctionne bien car, dans un Transformer à couches multiples, chaque token passe par plusieurs couches MoE successives, ce qui offre de multiples opportunités d’être traité par différents experts. Un seul expert par couche, mais potentiellement un expert différent à chaque couche.
Top-2 (GShard, Mixtral, ST-MoE). Chaque token est envoyé aux deux experts les plus probables. Les sorties des deux experts sont pondérées par leurs probabilités respectives et additionnées. GShard ajoute une subtilité : le premier expert est toujours sélectionné, mais le second est choisi avec une probabilité proportionnelle à son poids. Ce routage stochastique pour le second expert améliore l’exploration pendant l’entraînement.
Top-8 et au-delà (DeepSeek-V3, GPT-oss). Avec des architectures « fine-grained » (experts plus petits, plus nombreux), le nombre d’experts actifs augmente. DeepSeek-V3 active 8 experts routés parmi 256 à chaque couche (plus 1 expert partagé toujours actif). GPT-oss d’OpenAI utilise également un routage top-8 sur 128 experts.
Expert Choice : le routage inversé
Proposé par Google en 2022, l’Expert Choice inverse le paradigme. Au lieu que les tokens choisissent leurs experts, ce sont les experts qui choisissent leurs tokens. Chaque expert, avec un buffer de capacité prédéfini, sélectionne les top-k tokens les plus pertinents pour lui à partir de la matrice d’affinité.
Les avantages sont significatifs : l’équilibrage de charge est garanti par construction (chaque expert traite exactement le même nombre de tokens), et le nombre d’experts par token varie naturellement selon la « difficulté » du token. Un token important peut être traité par 3 ou 4 experts, tandis qu’un token simple peut n’être traité que par un seul. Les expériences montrent que l’Expert Choice accélère la convergence de l’entraînement de plus de 2x par rapport au top-1 et au top-2 classiques.
La limitation principale est que l’Expert Choice n’est pas directement applicable en auto-régression causale : il nécessite de connaître l’ensemble du batch pour faire la sélection globale, ce qui complique son usage en inférence séquentielle.
Hash Routing : le routage déterministe
Le hash routing (Roller et al., 2021) est l’approche la plus simple : il assigne les tokens aux experts via une fonction de hachage déterministe (expert_id = token_id % N). Aucun paramètre appris, aucun gradient. L’équilibrage est parfait par construction.
Le problème : les performances sont nettement inférieures. Des analyses sur Cerebras montrent qu’à 128 experts, le routage appris (learned routing) et le routage Sinkhorn délivrent des gains de qualité 3x supérieurs au hash routing. L’écart se creuse avec le nombre d’experts. Le hash routing ne capture aucune relation entre le contenu du token et la spécialisation de l’expert : c’est un routage aveugle.
Routage groupé (DeepSeek-V3)
DeepSeek-V3 utilise un routeur sophistiqué adapté à son architecture fine-grained (256 experts routés). Les experts sont organisés en groupes, et le routage se fait en deux étapes : d’abord sélectionner les groupes les plus pertinents (top-k groupes), puis sélectionner les experts au sein de ces groupes. Cette hiérarchie réduit le coût de communication en limitant le nombre de nœuds de calcul auxquels chaque token est envoyé (node-limited routing).
DeepSeek utilise aussi une fonction sigmoid au lieu du softmax classique pour calculer les scores d’affinité. Avec le softmax, les probabilités des experts sont liées (elles doivent sommer à 1), ce qui crée une compétition entre experts. Avec la sigmoid, chaque score d’expert est indépendant, ce qui permet au routeur d’exprimer des affinités non-compétitives. Les scores sont ensuite normalisés uniquement parmi les experts sélectionnés.
ReLU Routing (ReMoE, ICLR 2025)
Une approche récente publiée à ICLR 2025 propose de remplacer le mécanisme TopK+Softmax par une simple fonction ReLU comme gate. Au lieu de calculer une distribution de probabilités puis de tronquer aux top-k, le routeur applique un ReLU aux scores : tout expert avec un score positif est activé, ceux avec un score négatif (ou nul) sont ignorés.
L’avantage principal est la continuité. Avec le top-k classique, un léger changement de poids du routeur peut provoquer un basculement brutal (un expert passe de sélectionné à non-sélectionné d’un coup). Avec ReLU, la transition est progressive : un expert s’active quand son score passe de négatif à positif, sans discontinuité. Cela stabilise l’entraînement. Le nombre d’experts actifs par token varie dynamiquement selon la complexité de l’entrée, ce qui est similaire à l’Expert Choice mais sans nécessiter une vue globale du batch.
Pour contrôler le niveau de parcimonie (éviter que trop d’experts ne s’activent), ReMoE ajoute une régularisation L1 sur les sorties du routeur. Les résultats montrent que ReMoE surpasse systématiquement le routage TopK sur différentes tailles de modèles et nombres d’experts.
Comparatif des stratégies de routage
| Stratégie | Mécanisme | Équilibrage | Experts/token | Différentiable | Utilisé dans |
|---|---|---|---|---|---|
| Top-1 softmax | Token → 1 expert | Auxiliary loss + CF | Fixe (1) | Partiel (argmax non-diff.) | Switch Transformer |
| Top-2 softmax | Token → 2 experts | Auxiliary loss + CF | Fixe (2) | Partiel | GShard, Mixtral, ST-MoE |
| Top-k sigmoid | Token → k experts (sigmoid) | Biais dynamiques | Fixe (k) | Partiel | DeepSeek-V3 |
| Expert Choice | Expert → top-k tokens | Garanti par construction | Variable (0 à N) | Oui | EC (Google, 2022) |
| Hash routing | token_id % N | Parfait | Fixe (1) | Non (pas de paramètres) | Hash Layers |
| ReLU routing | ReLU(W·x) > 0 → actif | Régularisation L1 | Variable | Oui | ReMoE (ICLR 2025) |
| Soft MoE | Mélange continu de slots | Par construction | Tous (dense continu) | Oui | Soft MoE (vision) |
Le routing collapse : quand le routeur échoue
Le routing collapse est le problème central du design de routeurs MoE. Il se produit quand le routeur converge vers un état où il sélectionne toujours les mêmes quelques experts, quel que soit le token en entrée. Les experts restants ne reçoivent presque aucun token, ne sont pas entraînés, et deviennent progressivement inutiles.
Le mécanisme est auto-renforçant. Si par hasard, au début de l’entraînement, un expert est légèrement plus souvent sélectionné, il reçoit plus de gradients, s’améliore plus vite, et devient encore plus attractif pour le routeur. Les experts moins favorisés reçoivent moins de données, stagnent, et sont de moins en moins choisis. C’est un cercle vicieux de type « winner-takes-all ».
Plusieurs mécanismes existent pour combattre ce phénomène :
Auxiliary loss : ajoute un terme de pénalité à la fonction de perte pour encourager une utilisation équilibrée des experts. C’est la méthode standard utilisée par la majorité des architectures.
Capacity factor : impose une limite dure sur le nombre de tokens par expert, redirigeant ou droppant les excédents. Complémentaire à l’auxiliary loss.
Noisy gating : le papier original de Shazeer et al. (2017) ajoutait du bruit gaussien aux logits du routeur avant le softmax pour encourager l’exploration. Le Switch Transformer a ensuite supprimé ce bruit car il causait de l’instabilité dans les Transformers (contrairement aux LSTM où il fonctionnait bien).
Biais dynamiques (DeepSeek) : ajustent un terme de biais par expert en dehors de la backpropagation pour pousser les tokens vers les experts sous-utilisés, sans interférer avec les gradients de la tâche.
Router z-loss (ST-MoE) : pénalise les logits de grande magnitude pour éviter les instabilités numériques du softmax, ce qui contribue indirectement à la stabilité du routage.
Que « voient » les experts ? La spécialisation émergente
Une question fascinante : les experts se spécialisent-ils sur des domaines sémantiques (mathématiques, code, langues) ou sur des patterns plus bas niveau ?
Les analyses empiriques convergent vers une réponse nuancée. Les travaux sur le ST-MoE montrent que les experts de l’encodeur se spécialisent sur des tâches très superficielles, au niveau des tokens individuels (ponctuation, articles, noms propres) plutôt que sur des domaines conceptuels. Des analyses sur Mixtral et DeepSeek confirment que la spécialisation se fait principalement au niveau syntaxique et contextuel, pas au niveau sémantique.
Plus précisément, les routeurs montrent une sensibilité forte au part-of-speech (catégorie grammaticale) des tokens. Un expert peut devenir « spécialiste » des verbes dans un certain contexte, un autre des noms techniques, etc. Ce n’est pas la spécialisation thématique intuitive (« expert en biologie ») que l’on pourrait imaginer, mais c’est une forme de division du travail efficace pour le traitement du langage.
Les études sur OLMoE-1B-7B (2024) confirment une spécialisation élevée des experts, quantifiée par des métriques de diversité de routage. Chaque expert traite des distributions de tokens distinctes, validant que le routeur apprend effectivement à partitionner l’espace des représentations.
Implémentation pratique
Un routeur simple en PyTorch
import torch
import torch.nn as nn
import torch.nn.functional as F
class TopKRouter(nn.Module):
def __init__(self, d_model, num_experts, top_k=2):
super().__init__()
self.top_k = top_k
self.num_experts = num_experts
# Projection linéaire : d_model → num_experts
self.gate = nn.Linear(d_model, num_experts, bias=False)
def forward(self, x):
# x : [batch, seq_len, d_model]
# Calcul des logits en float32 (stabilité numérique)
logits = self.gate(x.float()) # [batch, seq_len, num_experts]
# Softmax pour obtenir les probabilités
probs = F.softmax(logits, dim=-1)
# Sélection des top-k experts
top_k_probs, top_k_indices = torch.topk(probs, self.top_k, dim=-1)
# Renormalisation des probabilités top-k
top_k_probs = top_k_probs / top_k_probs.sum(dim=-1, keepdim=True)
return top_k_probs, top_k_indices, logits
Un routeur groupé (style DeepSeek-V3)
# Configuration dans AWS Neuron (NxD Inference)
from neuronx_distributed.modules import routing
# Routeur top-k standard (GPT-oss, Llama 4)
router = routing.RouterTopK(
num_experts=128,
top_k=8,
hidden_size=7168,
act_fn="softmax", # ou "sigmoid"
)
# Routeur groupé (DeepSeek-V3 style)
router = routing.GroupLimitedRouter(
num_experts=256,
top_k=8,
hidden_size=7168,
n_group=8, # Nombre de groupes d'experts
topk_group=2, # Nombre de groupes sélectionnés
)
Guide de choix du routeur
Tendances et recherche active
Le design du routeur est l’un des domaines de recherche les plus actifs dans l’architecture des LLM :
Routeurs plus expressifs. Des travaux récents (juin 2025) comparent systématiquement des routeurs linéaires, MLP, à attention, et hybrides. Les routeurs MLP et à attention capturent des relations plus complexes entre tokens et experts, mais au prix d’une latence accrue. Le compromis vitesse/expressivité reste ouvert.
LLM comme routeur. LLMoE (Liu & Lo, 2025) propose d’utiliser un LLM pré-entraîné comme routeur, capable de lire le contexte complet avant de choisir les experts. Cela injecte des connaissances du monde dans les décisions de routage, les rendant plus interprétables.
Routeurs récurrents. Des architectures de routeurs récurrents maintiennent l’affinité token-expert entre les couches, améliorant la cohérence du routage à travers la profondeur du réseau.
Vers des millions d’experts. La tendance est aux architectures avec de plus en plus d’experts de plus en plus petits (fine-grained experts). DeepSeek-V3 utilise 256 experts, GPT-oss en utilise 128. Des travaux théoriques explorent le passage à des millions d’experts, ce qui poserait des défis de routage entièrement nouveaux.
Verdict
Le routeur est le composant le plus critique et le plus sous-estimé des architectures MoE. C’est lui qui fait la différence entre un modèle qui exploite pleinement ses centaines de milliards de paramètres et un modèle qui s’effondre silencieusement vers un comportement dense.
La forme standard (projection linéaire + softmax + top-k) reste dominante en production car elle est simple, rapide, et bien comprise. Mais les innovations récentes (sigmoid de DeepSeek, ReLU de ReMoE, Expert Choice de Google) montrent que le routage standard est loin d’être optimal. Le défi fondamental, concilier spécialisation des experts et équilibrage de charge, n’est pas résolu de façon définitive.
Pour quiconque travaille avec des MoE : ne traitez pas le routeur comme un détail d’implémentation. Monitorez activement la distribution des tokens par expert, la diversité de routage entre couches, et le taux de token dropping. Un routeur qui fonctionne mal ne génère pas d’erreur visible : il dégrade silencieusement la qualité du modèle.
Questions fréquentes sur le Router Network
Le routeur est-il entraîné séparément des experts ?
Non. Le routeur est entraîné conjointement avec les experts par backpropagation standard. Ses poids sont mis à jour par les mêmes gradients que le reste du modèle. La seule subtilité est que la sélection top-k contient une opération non-différentiable (l’argmax), donc les gradients ne passent que par les probabilités (le softmax), pas par la décision de sélection elle-même. Des signaux d’entraînement supplémentaires sont fournis par l’auxiliary loss, qui pousse le routeur vers un équilibrage de charge.
Combien de paramètres un routeur ajoute-t-il au modèle ?
Très peu. Un routeur linéaire pour N experts avec une dimension cachée d contient N × d paramètres (plus N paramètres de biais optionnels). Pour DeepSeek-V3 avec 256 experts et d = 7 168, le routeur ajoute environ 1,8 million de paramètres par couche MoE. Sur un modèle de 671 milliards de paramètres, c’est négligeable. Le routeur est minuscule en taille, mais disproportionné en importance.
Pourquoi DeepSeek-V3 utilise-t-il sigmoid au lieu de softmax ?
Avec le softmax, les probabilités des experts sont mutuellement exclusives (elles somment à 1). Augmenter la probabilité d’un expert diminue automatiquement celle des autres. Avec la sigmoid, chaque score d’expert est calculé indépendamment. Cela permet au routeur d’exprimer des affinités non-compétitives : un token peut avoir une forte affinité avec plusieurs experts sans que cela réduise les scores des autres. DeepSeek normalise ensuite les scores uniquement parmi les experts effectivement sélectionnés (top-k), ce qui sépare la phase de « sélection » (quels experts) de la phase de « pondération » (combien compter chaque expert).
Le routeur fonctionne-t-il différemment en inférence et en entraînement ?
Le calcul du routeur est identique en entraînement et en inférence : projection linéaire, softmax/sigmoid, top-k. Les différences sont indirectes. En entraînement, l’auxiliary loss influence les gradients du routeur pour l’équilibrage. En inférence, aucune perte auxiliaire n’est calculée. Le capacity factor peut aussi être ajusté en inférence (typiquement augmenté pour réduire le token dropping). Le routage lui-même reste le même calcul forward pass.
Pourquoi le routeur doit-il fonctionner en float32 ?
Le softmax contient une fonction exponentielle (e^x) qui amplifie considérablement les erreurs d’arrondi. En bfloat16, un logit de 10,0 peut devenir 10,0625 après arrondi, ce qui fait passer e^10,0 ≈ 22 026 à e^10,0625 ≈ 22 164, une erreur de 0,6 %. Mais quand le softmax normalise ces exponentielles entre elles, ces petites erreurs se propagent et peuvent modifier les décisions de routage. Le Switch Transformer a montré que l’entraînement en bfloat16 complet causait de l’instabilité, tandis que l’utilisation de float32 uniquement pour le routeur éliminait le problème sans coût significatif (le routeur est une opération légère).