Chapitre 1 : Mélange d'experts (MoE)
Le concept de MoE
Au lieu d'un grand FFN, utilisez plusieurs FFN "experts" avec un routeur :
Entrée → Routeur → Sélection des top-k experts → Combinaison pondérée → Sortie
Architecture Mixtral
mixtral_config = {
"num_experts": 8,
"num_experts_per_token": 2, # Sparse: seulement 2 actifs
"total_params": "46.7B",
"active_params": "12.9B", # Par passage avant
}
Mécanisme de routage
def router(hidden_states, num_experts, top_k=2):
# Calculer les scores des experts
scores = router_weights @ hidden_states
# Sélectionner les top-k experts
top_k_scores, top_k_indices = torch.topk(scores, top_k)
# Normaliser les poids
weights = F.softmax(top_k_scores, dim=-1)
return weights, top_k_indices
Avantages
| Aspect | Dense | MoE |
|---|---|---|
| Paramètres | Tous actifs | Sous-ensemble actif |
| Calcul | O(params) | O(active_params) |
| Capacité | Fixe | Plus élevée pour le même calcul |
Défis
- Équilibrage de charge entre les experts
- Surcharge de communication dans un environnement distribué
- Effondrement des experts (tout le routage vers quelques experts)