Capítulo 1: Mixture of Experts (MoE)
El concepto de MoE
En lugar de una sola FFN grande, utilice múltiples FFN "expertos" con un enrutador:
Input → Router → Select top-k experts → Weighted combination → Output
Arquitectura de Mixtral
mixtral_config = {
"num_experts": 8,
"num_experts_per_token": 2, # Sparse: only 2 active
"total_params": "46.7B",
"active_params": "12.9B", # Per forward pass
}
Mecanismo del enrutador
def router(hidden_states, num_experts, top_k=2):
# Compute expert scores
scores = router_weights @ hidden_states
# Select top-k experts
top_k_scores, top_k_indices = torch.topk(scores, top_k)
# Normalize weights
weights = F.softmax(top_k_scores, dim=-1)
return weights, top_k_indices
Beneficios
| Aspecto | Denso | MoE |
|---|---|---|
| Parámetros | Todos activos | Subconjunto activo |
| Cómputo | O(params) | O(active_params) |
| Capacidad | Fija | Mayor para el mismo cómputo |
Desafíos
- Balanceo de carga entre expertos
- Sobrecarga de comunicación en entornos distribuidos
- Colapso de expertos (todo el enrutamiento hacia pocos expertos)