# Por qué es tan difícil entrenar MoEs Recientemente, me he encontrado deseando un pequeño repositorio de entrenamiento enfocado en la investigación que pueda usar para hacer pequeños experimentos de manera rápida y sencilla. Estos experimentos van desde probar nuevas arquitecturas de atención (MLA, SWA, NSA, KDA - todas enchufables) hasta entrenamiento de múltiples precisiones y, más recientemente, configuraciones de múltiples optimizadores con optimizadores 'nuevos'. Probé los 3 principales competidores (Nemo, Megatron y Torchtitan) pero, por muchas y diversas razones, no se ajustaron en absoluto a mis propósitos y fueron bastante dolorosos de configurar, usar y hacer funcionar de manera estable. Una vez más, extrañé mis herramientas de Google y reescribir mi pila de entrenamiento de producción para este propósito (que está hecha a medida para el monitoreo y la estabilidad de grandes infraestructuras) también me pareció un mal uso del tiempo y haría que tanto el repositorio antiguo como el nuevo estuvieran en peores condiciones. Sin embargo, esto me hizo pensar, ¿por qué era tan difícil entrenar MoEs de calidad fronteriza 'pequeñas' (digamos menos de 20B de parámetros en total)? ¿Por qué no existía ya el repositorio/lib que quería? Después de pensarlo un rato, la mayoría de los retos que se me ocurrieron se reducían a 3 cosas diferentes: - flops / eficiencia de flops - balanceo de carga / estabilidad del enrutador - calidad y cantidad de datos Flops Entrenar modelos densos es bastante sencillo en estos días. La dinámica de entrenamiento está mayormente acoplada, y si tienes suficientes parámetros en la arquitectura, el modelo aprenderá prácticamente a pesar de tus muchos errores (esto me ha mordido en más de una ocasión). [DeepSeek-style ultra-sparse]( MoEs son diferentes porque tus dinámicas de entrenamiento están algo desacopladas. Solo una parte de tus MLPs están activas para un token dado, y a medida que avanza el entrenamiento, los expertos activos cambian y evolucionan con el tiempo. Esto es lo que hace que el entrenamiento de múltiples épocas y la reformulación de datos sean tan efectivos para los MoEs (especialmente los más grandes). Obtienes grandes ganancias en eficiencia de inferencia y pequeñas ganancias en eficiencia de entrenamiento, pero a costa de dinámicas de entrenamiento desacopladas (lo que hace que sea difícil entrenar de manera predecible y estable) y tienes que invertir muchos más flops para asegurarte de aprender una política de enrutamiento algo óptima y que los expertos involucrados en las diversas políticas estén adecuadamente entrenados. Bueno, aquí es donde surge el...