I. Introducción
Con el avance de los grandes modelos de lenguaje y del aprendizaje profundo, los MoE (Mixture of Experts, mezcla de expertos) se han convertido gradualmente en un tema de investigación muy activo gracias a su capacidad de cómputo condicional y su alta escalabilidad. Este artículo organiza las ideas clave de los modelos MoE: sus principios básicos, el diseño general de la arquitectura y las tecnologías centrales. Además, combinando algunos ejemplos open source, se describe de forma breve el enfoque de implementación típico y sus escenarios de aplicación.
II. ¿Qué es un MoE?
Antes de profundizar en MoE, repasemos la arquitectura clásica Transformer. En un Transformer estándar, cada capa Encoder/Decoder incluye una atención multi-cabeza (Multi-Head Attention) y una red feed-forward totalmente conectada (Feed-Forward Network, abreviada como FNN). Esta FNN aplica las mismas transformaciones lineales y no lineales a todos los tokens de entrada, lo que produce un cómputo denso y un alto consumo de recursos.
La técnica de Mixture of Experts (MoE) introduce un mecanismo de “expertos” en la posición de la FNN: divide una red feed-forward de gran escala en múltiples subredes (es decir, expertos) y utiliza una red de compuertas (Router) para enrutar dinámicamente los tokens. En concreto, el Router calcula una puntuación (score) para cada experto en función de las características del token (por ejemplo, embedding o contexto de atención), y solo activa los K expertos con mayor puntuación; el resto permanece inactivo. Así, el modelo puede tener cientos de miles de millones de parámetros, pero en cada paso real de cómputo solo se activa una pequeña fracción de ellos (Activated Parameters), típicamente entre el 5% y el 15%, reduciendo de forma significativa el coste computacional y el uso de memoria GPU.
- Diferencia esencial entre Transformer y MoE
- Cómputo denso: en un Transformer estándar, la FNN procesa todos los parámetros por igual.
- Cómputo condicional: en MoE, solo una parte de los expertos se activa para calcular, logrando activación dispersa.
- ¿Por qué diseñar así? Principalmente por:
- Escalabilidad: si el presupuesto lo permite, se puede aumentar el número de expertos para incrementar la capacidad del modelo.
- Eficiencia: al activarse menos parámetros, se reducen rápidamente los FLOPs y el consumo de memoria.
- Especialización: distintos expertos pueden especializarse en distintos tipos de características o tareas, mejorando el rendimiento global.
Imagina una biblioteca (como el Transformer) con miles de libros (parámetros). Para encontrar algo, tendrías que revisar todas las páginas; un MoE, en cambio, se parece a un bibliotecario (Router) que, según tu pregunta, selecciona solo los libros (expertos) más relevantes para consultarlos: más rápido y eficiente.
III. Componentes centrales de MoE
El funcionamiento de MoE se apoya en dos módulos principales:
- Expertos (Experts)
- Cada experto es una subcapa feed-forward independiente (normalmente dos transformaciones lineales con función de activación). Puede verse como un entrenamiento especializado sobre un subconjunto del espacio de parámetros (ver Outrageously Large Neural Networks: The Sparsely‑Gated Mixture‑of‑Experts Layer).
- Entre expertos se pueden aplicar estrategias distintas de partición, como clustering de parámetros (Balanced K‑Means), partición por grafo de coactivación (Co‑activation Graph) o partición consciente del gradiente, con el objetivo de que cada experto tenga una configuración óptima en su dominio.
- Red de compuertas (Router)
- La entrada x pasa por una proyección lineal para obtener las puntuaciones: H(x)=xW\_g, y se añade ruido entrenable para suavizar: H'(x)=H(x)+SoftPlus(xW\_n)⊙𝒩(0,1) (proceso llamado Noisy Gating).
- Se usa una estrategia Top‑K: se conservan los K expertos con mayor puntuación; tras normalizar se obtiene G(x)=Softmax(KeepTopK(H'(x),K)) y se asigna la entrada a esos K expertos.
- Además, se añade una pérdida auxiliar de balance de carga L\_aux=λ·CV(n\_1,…,n\_E) para minimizar la varianza del número de tokens asignados a cada experto y evitar que “expertos populares” se sobrecarguen.
IV. ¿Por qué MoE es tan eficiente?
1. Reducir FLOPs mediante cómputo condicional
En el Transformer estándar, la FNN debe computar lo mismo para todos los tokens y para toda la capa, con complejidad O(N·d^2). En MoE, solo se activan K expertos, por lo que la complejidad baja a O(K·d^2). Cuando K ≪ N, el cómputo puede reducirse aproximadamente en un factor N/K.
2. Sobreparametrización y capacidad de representación
Los modelos gigantes suelen necesitar muchos parámetros para ajustar patrones complejos, pero el crecimiento denso crea cuellos de botella computacionales. Gracias al enrutamiento disperso, MoE permite tener varios múltiplos de parámetros globales respecto a los parámetros activados (E·d^2), aumentando la capacidad para capturar patrones diversos.
3. Especialización y paralelismo distribuido
Cada experto aprende características en un subespacio, logrando división funcional. El paralelismo de expertos (Expert Parallelism) despliega expertos en distintos dispositivos, reduciendo la sincronización del tronco principal. Combinado con paralelismo pipeline o tensor, se consigue mayor throughput y menor latencia (ver GShard: Scaling Giant Models with Conditional Computation and Automatic Sharding).
4. Evidencia práctica
- GLaM (1.2 billones de parámetros) activa solo el 8% y supera a GPT‑3 (175B) en 29 tareas NLP, mostrando la ventaja del cómputo condicional.
- Switch Transformer, con enrutamiento Top‑1, duplica aproximadamente el throughput sin degradar el rendimiento.
V. Detalles técnicos de MoE
Las redes neuronales grandes tradicionales (como Transformer) son “todoterreno”: cada vez que procesan datos, deben usar todos los parámetros, lo cual es costoso. MoE aplica un enfoque de “uso bajo demanda” (cómputo condicional), donde solo participan algunos expertos, evitando desperdicio de recursos.
1. Activación dispersa y parámetros activados
En teoría, la capa FFN de Transformer computa completamente para todos los tokens; pero en la práctica, solo parte de las neuronas se activan, revelando una dispersidad natural (ver MoEfication: Transformer Feed-forward Layers are Mixtures of Experts). MoE aprovecha esto: divide la FNN en E expertos y hace que el Router elija K expertos por token:
| Indicador | Explicación |
|---|---|
| Parámetros totales | Pueden llegar a miles de millones o incluso cientos de miles de millones |
| Parámetros activados | Aprox. = parámetros totales × (K/E); normalmente entre el 5% y el 15% |
| Ventaja | Los FLOPs y el uso de memoria GPU disminuyen proporcionalmente; mejora notablemente la eficiencia de entrenamiento e inferencia |
2. Router y estrategia de enrutamiento
La selección de expertos la realiza el Router, típicamente así:
- Proyección lineal: H(x)=xW\_g
- Inyección de ruido: H'(x)=H(x)+g·StandardNormal()⊙SoftPlus(H(x)) (Noisy Gating)
- Top‑K: G(x)=Softmax(KeepTopK(H'(x),K))
- Top‑2 vs. Top‑1: GShard usa Top‑2 y mezcla salidas para ganar robustez; Switch Transformer usa Top‑1 para simplificar la complejidad de comunicación (ver GShard... y Switch Transformers...).
- Dispersidad jerárquica: modelos como Qwen3 ajustan dinámicamente K según la profundidad de la red, para un cómputo condicional más fino.
3. Balance de carga y pérdida auxiliar
Algunos expertos pueden activarse con demasiada frecuencia y sobrecargarse. Para evitarlo, MoE introduce la pérdida auxiliar de balance de carga (Auxiliary Load Loss), definida como el coeficiente de variación del número de tokens recibidos por experto:
L\_aux = λ · CV(n₁, n₂, …, n\_E) En esta fórmula, nᵢ es el número de tokens procesados por el i-ésimo experto en el lote, y λ es un peso de balance.
Esta pérdida se optimiza junto con la pérdida principal en el preentrenamiento para que la utilización de expertos sea aproximadamente uniforme (ver implementaciones de aux\_loss en GShard y en librerías de transformers).
VI. Ejemplos clásicos de modelos MoE
A continuación, algunos modelos MoE representativos, en orden cronológico:
1. Sparsely-Gated Mixture-of-Experts Layer (2017)
Propuesto por Shazeer et al. (Google Brain) (Outrageously Large Neural Networks...). Introduce el enrutamiento con compuertas en la capa feed-forward, usando Noisy Top‑K Gating y una pérdida auxiliar para balancear carga. Establece la base del cómputo condicional: activación dispersa y entrenamiento eficiente a gran escala.
2. GShard (2020)
Lepikhin et al. (Google Research), GShard: Scaling Giant Models.... Inserta estructuras MoE Top‑2 en cada FNN del Transformer, introduce capacidad (capacity) y particiona expertos automáticamente entre múltiples máquinas/GPUs. Permite entrenar e inferir modelos de cientos de miles de millones de parámetros, mejorando la escalabilidad.
3. Switch Transformer (2021)
Fedus et al. (Google Research), Switch Transformers.... Propone Top‑1: cada token visita un solo experto, reduciendo complejidad de comunicación. Introduce Capacity Factor y soporta entrenamiento en bfloat16. Logra buen equilibrio entre coste de comunicación y throughput, escalando a 1 billón de parámetros con alta eficiencia.
4. GLaM (2021)
Du et al. (Google Research), GLaM.... Usa 64 expertos, activa 2 por capa, aplica enrutamiento Mixture-of-Modality para dirigir tareas de distintas modalidades a expertos distintos. Activa solo el 8% de parámetros y demuestra que la activación dispersa mantiene (e incluso mejora) el rendimiento.
5. DeepSeek-MoE (2024)
DeepSeek AI, DeepSeekMoE.... Emplea segmentación de expertos más fina, expertos compartidos para conocimiento general, y activa 6 expertos por token. Explora especialización y reducción de redundancia, destacando el potencial de multi-experto + expertos compartidos.
6. LLaMA-MoE (2024)
Desarrollado por Sys4NLP a partir de Meta LLaMA2 (LLaMA-MoE...). Soporta varias estrategias de partición (aleatoria, clustering, coactivación), y ofrece tanto Top‑K con ruido como Switch Top‑1. Muestra una vía práctica para aplicar MoE en modelos ligeros.
7. Qwen3-235B-A22B (2025)
Publicado por Alibaba Tongyi Qwen. Total de 235B parámetros, 128 expertos; activa 8 expertos por token y ajusta dinámicamente el número de expertos mediante dispersidad jerárquica. Soporta 32K de contexto (hasta 128K con YaRN), usa GQA y offloading asíncrono. Reduce el coste de inferencia y mejora escenarios de alto throughput y textos largos.
VII. Escenarios de uso y limitaciones de MoE
En despliegue real, MoE y Transformer denso tienen ventajas distintas según recursos y necesidades:
- MoE es más adecuado para múltiples máquinas y alto throughput
- Paralelismo de expertos: los expertos se distribuyen en múltiples máquinas/dispositivos, evitando duplicar el modelo completo y reduciendo presión de memoria.
- Enrutamiento condicional: el Router transmite solo la información necesaria, reduciendo el coste de comunicación y mejorando el throughput.
- Escalado elástico: al ampliar el clúster, basta con añadir o redistribuir expertos; la capacidad del modelo se desacopla del hardware.
- Transformer denso suele ser mejor para una sola máquina, baja memoria o bajo throughput
- Sobrecoste de enrutamiento y planificación: en un único nodo, el coste del Router, la gestión de expertos y la comunicación puede aumentar la latencia y la complejidad.
- Despliegue más simple: no requiere estrategias extra de balance o enrutamiento; el ecosistema está maduro.
- Eficiencia de recursos: en entornos limitados, se puede optimizar el modelo denso con pruning, cuantización o destilación.
VIII. Conclusión
Siguiendo la trayectoria de MoE, desde el “Noisy Top‑K Gating” hasta el “sharding automático entre máquinas”, y luego innovaciones como “enrutamiento de un solo experto”, “expertos multimodales”, “segmentación fina” y “dispersidad jerárquica”, cada iteración busca equilibrar “mayor capacidad” con “menor coste de cómputo”. El núcleo de MoE es el cómputo condicional, que aporta alta escalabilidad y eficiencia, pero también introduce retos de enrutamiento, balance de carga y comunicación.
MoE ya es una rama clave en el campo de los grandes modelos, y entender su diseño y escenarios de aplicación es esencial para impulsar la próxima generación de sistemas inteligentes eficientes.
Algunos términos
Token:unidad mínima en el procesamiento de texto; puede ser un carácter chino o una palabra en inglés.Parámetros (Parameters):valores entrenables de una red, como bloques de LEGO; cuantos más, más compleja la red.
Cómputo condicional (Conditional Computation):mecanismo que, según la entrada, activa solo algunos expertos; como consultar a especialistas en vez de reunir a todo el mundo.
Experto (Expert):subred dentro de MoE, responsable de procesar ciertos tipos de datos o características.
Router/Gating Network:módulo que decide a qué expertos se asigna cada token, como un planificador de tareas.
Parámetros activados (Activated Parameters):parámetros que realmente participan en un paso de cómputo, mucho menos que el total.
Activación dispersa (Sparse Activation):activar solo algunos expertos/parámetros en cada cómputo para ahorrar recursos.
Modelo denso (Dense Model):modelo tradicional que usa todos los parámetros en cada paso, como si todos asistieran a la reunión.
FLOPs:medida de carga computacional; menos FLOPs implica menos coste.
Memoria GPU (GPU Memory):espacio en la GPU para parámetros y resultados intermedios; menos consumo facilita el despliegue.
Feed-Forward Network (FFN):capa no lineal del Transformer.
Multi-Head Attention:mecanismo de atención que permite enfocarse en distintas partes de la entrada.
Top-K Routing:estrategia donde el Router selecciona los K expertos con mayor puntuación.
Noisy Gating:introducir ruido al seleccionar expertos para mejorar robustez y balance.
Auxiliary Load Loss:pérdida para equilibrar carga y evitar que expertos “calientes” se saturen.
Coefficient of Variation (CV):medida estadística del balance; menor CV significa asignación más uniforme.
Expert Parallelism:distribuir expertos en varias máquinas; cada una ejecuta su subred.
Distributed Parallelism:distribuir modelo/datos en varios dispositivos para computar en paralelo.
Pipeline Parallelism:dividir el modelo en etapas como una línea de producción.
Tensor Parallelism:dividir el cálculo de una capa entre varios dispositivos.
Capacity Factor:parámetro que limita cuántos tokens procesa como máximo cada experto por paso.
Expert Capacity:máximo de tokens que un experto puede manejar en un forward.
Fine-Grained Expert Segmentation:dividir la FFN en expertos más pequeños y numerosos.
Shared Experts:expertos compartidos para conocimiento general.
Hierarchical Sparsity:ajustar dinámicamente cuántos expertos se activan por capa.
GQA (Grouped Query Attention):mecanismo de atención eficiente para inferencia.
Asynchronous Offloading:mover tareas/datos a otros dispositivos de forma asíncrona para optimizar recursos.
Mixture-of-Modality:enrutamiento por modalidad (texto, código, etc.) hacia expertos distintos.
Pruning:eliminar parámetros menos importantes.
Quantization:usar menor precisión para almacenar/calcular.
Distillation:entrenar un modelo pequeño con un modelo grande como maestro.
Routing:proceso completo de asignar tokens a expertos.
Main Loss:objetivo principal de optimización, p. ej., entropía cruzada.
Auxiliary Loss:objetivo auxiliar, p. ej., balance de carga.
Expert Partitioning:dividir una gran red en expertos mediante clustering o partición de grafos.
Co-activation Graph Partitioning:partición basada en correlación de activación neuronal.
Gradient-aware Partitioning:partición basada en información de gradientes.
Expert Routing:asignar entradas a expertos adecuados.
Top-1/Top-2 Routing:cada token se asigna a 1 o 2 expertos principales.
Capacity:máximo de tokens que un experto puede procesar en un forward.
Activation Ratio:proporción de parámetros activados por paso.
Throughput:datos procesados por unidad de tiempo; más es mejor.
Latency:tiempo de respuesta por entrada; menos es mejor.
Automatic Sharding:dividir parámetros automáticamente entre dispositivos.
bfloat16:formato de baja precisión usado en entrenamiento grande.
Tecnología YaRN:técnica para ampliar longitud de contexto.