Mixture of Experts (MoE)
La mezcla de expertos (MoE) dirige cada token a unas pocas subredes expertas, de modo que los parámetros totales de un modelo crecen mucho más rápido que el cómputo por token.
La mezcla de expertos (MoE) es una arquitectura de red neuronal que divide parte de un modelo en muchas subredes paralelas, llamadas expertos, y utiliza un pequeño enrutador entrenado para dirigir cada entrada a solo unas pocas de ellas. Como cada token o parche de imagen pasa por una fracción de los expertos, el número total de parámetros puede crecer mucho más deprisa que el coste computacional por entrada. Mixtral 8x7B tiene 47.000 millones de parámetros, pero utiliza 13.000 millones por token, y DeepSeek-V3 activa 37.000 millones de sus 671.000 millones. La capa MoE dispersa con compuertas controladas por un enrutador, utilizada en los modelos de lenguaje de gran tamaño (LLMs), se basa en la capa MoE con compuertas dispersas que Google presentó en 2017 y que alcanzó los 137.000 millones de parámetros entre capas LSTM apiladas.
Cómo funciona una capa MoE#
En un Transformer, una capa MoE suele sustituir a la red feed-forward (FFN) que sigue a cada bloque de autoatención. La capa contiene N FFN expertas con la misma forma, además de un enrutador: una única capa lineal que calcula la puntuación de cada experto para cada token. El token se envía a los k expertos con la puntuación más alta, sus salidas se ponderan con las puntuaciones normalizadas del enrutador y se suman, y los demás expertos no procesan ese token. Mixtral selecciona 2 de 8 expertos en cada capa, mientras que DeepSeek-V3 selecciona 8 de 256 expertos enrutados más pequeños y también envía cada token a un experto compartido. Como el enrutamiento se realiza de forma independiente en cada capa, un token puede utilizar distintos expertos a distintas profundidades, y dos tokens de la misma frase pueden seguir rutas distintas por la misma capa:
Los expertos de Mixtral no se especializaban por temas. Sus autores no encontraron una asignación clara de expertos a materias como la biología o la filosofía; el enrutamiento seguía la sintaxis. Por eso, los tokens como self en código Python y los tokens de sangría tendían a llegar a los mismos expertos.
Equilibrio de carga y capacidad de los expertos#
Un enrutador recién inicializado tiende a favorecer a unos pocos expertos, que entonces se entrenan más rápido y atraen aún más tokens, mientras que los demás permanecen inactivos. El siguiente ejemplo de seis tokens los enruta por una capa top-2 con ocho expertos y cuenta cuántos tokens recibe cada experto:
import torch
torch.manual_seed(0)
dim, num_experts, top_k = 32, 8, 2
experts = torch.nn.ModuleList(
torch.nn.Sequential(torch.nn.Linear(dim, 4 * dim), torch.nn.GELU(), torch.nn.Linear(4 * dim, dim))
for _ in range(num_experts)
)
router = torch.nn.Linear(dim, num_experts, bias=False)
tokens = torch.randn(6, dim)
# El enrutador conserva las puntuaciones de los dos mejores expertos de cada token y aplica softmax para convertirlas en pesos de combinación
scores, chosen = router(tokens).topk(top_k, dim=-1)
weights = scores.softmax(dim=-1)
out = torch.zeros_like(tokens)
for e, expert in enumerate(experts):
token_idx, slot = (chosen == e).nonzero(as_tuple=True) # tokens que eligieron el experto e
out[token_idx] += weights[token_idx, slot, None] * expert(tokens[token_idx])
print("Experts per token:", chosen.tolist())
print("Tokens per expert:", torch.bincount(chosen.flatten(), minlength=num_experts).tolist())Imprime los pares de expertos [[3, 6], [7, 6], [0, 7], [3, 1], [6, 1], [2, 3]] y los recuentos por experto [1, 2, 1, 3, 0, 0, 3, 2]: los expertos 3 y 6 procesan tres tokens cada uno, mientras que los expertos 4 y 5 no reciben ninguno, y cada token pasa solo por 2 de las 8 redes expertas. El Switch Transformer, que enrutaba cada token a un solo experto y alcanzó los 1,6 billones de parámetros, añadió un término de pérdida auxiliar que alcanza su mínimo cuando los tokens y la probabilidad del enrutador se distribuyen uniformemente entre los expertos; muchos modelos MoE posteriores utilizan un término parecido. DeepSeek-V3 prescinde de la pérdida auxiliar y, en su lugar, ajusta durante el entrenamiento un sesgo por experto en las puntuaciones de enrutamiento. Los sistemas de entrenamiento también limitan el número de tokens que acepta cada experto por lote; ese límite es su capacidad. Los tokens que superan el límite omiten los expertos de esa capa y continúan por la conexión residual.
MoE y conceptos relacionados#
- Ensamblado de modelos: varios modelos completos procesan cada entrada y se promedian o se someten a votación sus predicciones, por lo que el cálculo crece con cada modelo que se añade. Una MoE es una única red entrenada de extremo a extremo, cuyo enrutador elige una ruta distinta para cada token.
- Enrutamiento de modelos: un enrutador elige un modelo completo por solicitud, por ejemplo, un modelo pequeño para preguntas sencillas y uno grande para las difíciles. El enrutamiento MoE se realiza token a token dentro de cada capa MoE de un único modelo.
- Mezcla de profundidades (MoD): un enrutador permite que algunos tokens se salten un bloque completo, por lo que el cálculo varía según el token. A menudo se combina con MoE.
- Mezcla de agentes (MoA): varios LLM independientes responden a un prompt y las capas posteriores de los LLM refinan las respuestas combinadas; es un flujo de prompts sin pesos compartidos.
MoE en modelos de lenguaje y visión#
Muchos de los LLM de pesos abiertos más grandes utilizan capas MoE, entre ellos DeepSeek-V3, Llama 4, las versiones MoE de Qwen3 y gpt-oss de OpenAI. En visión artificial, Vision MoE (V-MoE) sustituyó algunas capas FFN de un Vision Transformer (ViT) por expertos y enrutó parches de imagen individuales; igualó la precisión más avanzada con tan solo la mitad del cálculo de inferencia, y su versión de 15.000 millones de parámetros alcanzó un 90,35 % de precisión top-1 en ImageNet.
Memoria y servicio de modelos#
MoE ahorra cálculo, no memoria: hay que cargar todos los expertos aunque cada token solo utilice unos pocos. Por eso Mixtral necesita la memoria de un modelo de 47.000 millones de parámetros, aunque realiza por token el trabajo de uno de 13.000 millones. Así, los modelos MoE grandes se distribuyen entre GPU mediante paralelismo de expertos, donde cada GPU aloja un subconjunto de expertos y un intercambio de todos con todos envía cada token a los dispositivos que contienen los expertos seleccionados y lo devuelve. Marcos como DeepSpeed-MoE combinan el paralelismo de expertos con el paralelismo de datos y el paralelismo de tensores para el entrenamiento. Los modelos de visión en el borde siguen la ruta densa: YOLO26 ejecuta todas las capas con todas las imágenes, así que la memoria ocupada y el cálculo por imagen son iguales para todas las entradas.










