# Pourquoi l'entraînement des MoEs est-il si difficile Récemment, je me suis retrouvé à vouloir un petit dépôt de formation axé sur la recherche sur lequel je peux faire de petites expériences rapidement et facilement. Ces expériences vont de l'essai de nouvelles architectures d'attention (MLA, SWA, NSA, KDA - toutes pluggables) à l'entraînement multi-précision, jusqu'à des configurations multi-optimiseur avec des optimisateurs 'nouveaux'. J'ai essayé les 3 principaux candidats (Nemo, Megatron et Torchtitan) mais pour de nombreuses raisons, ils ne correspondaient pas du tout à mes besoins et étaient tous assez pénibles à configurer, utiliser et faire fonctionner de manière stable. J'ai encore une fois regretté mes outils de Google et réécrire ma pile d'entraînement de production à cette fin (qui est sur mesure pour la surveillance et la stabilité des grandes infrastructures) semblait également être une mauvaise utilisation du temps et rendrait à la fois l'ancien et le nouveau dépôt moins efficaces. Cela m'a cependant fait réfléchir, pourquoi l'entraînement de MoEs de qualité 'frontière' de taille 'petite' (disons moins de 20B de paramètres au total) était-il si difficile ? Pourquoi le dépôt / la bibliothèque que je voulais n'existait-il pas déjà ? Après y avoir réfléchi un moment, la plupart des défis que j'ai pu identifier se résumaient à 3 choses différentes : - flops / efficacité des flops - équilibrage de charge / stabilité du routeur - qualité et quantité des données Flops L'entraînement de modèles denses est assez simple de nos jours. La dynamique d'entraînement est principalement couplée, et si vous avez suffisamment de paramètres dans l'architecture, le modèle apprendra à peu près malgré vos nombreuses erreurs (cela m'est arrivé plus d'une fois). [DeepSeek-style ultra-sparse]( Les MoEs sont différents car vos dynamiques d'entraînement sont quelque peu découplées. Seule une partie de vos MLPs est active pour un token donné, et au fur et à mesure que l'entraînement progresse, les experts actifs changent et évoluent au fil du temps. C'est ce qui rend l'entraînement multi-epoch et la reformulation des données si efficaces pour les MoEs (surtout les plus grands). Vous obtenez de grands gains d'efficacité d'inférence et de petits gains d'efficacité d'entraînement mais au prix de dynamiques d'entraînement découplées (ce qui rend l'entraînement prévisible et stable difficile) et vous devez injecter beaucoup plus de flops pour vous assurer d'apprendre une politique de routage quelque peu optimale et que les experts...