Mixture of Experts (MoE)
- ⬜⚡ KV Cache: Memória Eficiente(IA Além do LLM)
Recomendamos completar os pré-requisitos antes de seguir, mas nada te impede de continuar.
GPT-4 tem estimados 1.7 trilhoes de parametros — mas ativar todos a cada token seria computacionalmente impossivel. A solucao: Mixture of Experts (MoE), uma arquitetura que escala parametros sem escalar compute proporcionalmente. Neste artigo, voce vai entender como o router seleciona experts, o problema de load balancing, e por que MoE dominou os modelos frontier.
A ideia: parametros abundantes, compute seletivo
Em um Transformer denso (como LLaMA), todos os parametros sao usados para processar cada token. Em MoE, a camada FFN (feed-forward network) e substituida por multiplos experts — cada um e um FFN independente — e um router decide quais ativar.
O Router: como escolher experts
O router e uma pequena rede (geralmente uma camada linear + softmax) que recebe a representacao do token e produz uma distribuicao de probabilidade sobre os experts.
# Router simplificado em PyTorch
import torch
import torch.nn.functional as F
class Router(torch.nn.Module):
def __init__(self, d_model, num_experts, top_k=2):
super().__init__()
self.gate = torch.nn.Linear(d_model, num_experts, bias=False)
self.top_k = top_k
def forward(self, x):
# x: (batch, seq_len, d_model)
logits = self.gate(x) # (batch, seq_len, num_experts)
scores = F.softmax(logits, dim=-1)
top_scores, top_indices = scores.topk(self.top_k, dim=-1)
top_scores = top_scores / top_scores.sum(dim=-1, keepdim=True)
return top_scores, top_indicesLoad Balancing: o problema central
Se o router prefere poucos experts, os outros nao recebem gradientes e nao treinam. Isso e expert collapse — o modelo desperica a maioria da sua capacidade.
| Tecnica | Como funciona | Usado em |
|---|---|---|
| Auxiliary load balancing loss | Adiciona um termo a loss que penaliza distribuicao desigual de tokens entre experts | Switch Transformer, Mixtral, GPT-4 (provavel) |
| Expert capacity | Limita o numero maximo de tokens que cada expert pode processar. Excedente e descartado ou roteado para outro. | Switch Transformer, GShard |
| Noise in router | Adiciona ruido gaussiano aos logits do router durante treino para explorar experts menos usados | ST-MoE, Mixtral |
| Auxiliary-loss-free balancing | Bias adaptativo no router sem distorcer a loss principal | DeepSeek v3 (inovacao chave) |
Modelos MoE reais
| Modelo | Params totais | Params ativos | Experts | Top-k | Performance |
|---|---|---|---|---|---|
| Mixtral 8x7B | 47B | ~13B | 8 | 2 | ~ LLaMA 2 70B (dense) com 5x menos compute |
| Mixtral 8x22B | 176B | ~44B | 8 | 2 | Compete com GPT-3.5 Turbo |
| GPT-4 (estimado) | ~1.7T | ~220B | ~16 | ~2 | Frontier (ate mar/2024) |
| DeepSeek v3 | 671B | ~37B | 256 | 8 | Compete com GPT-4o por ~$5.5M de treino |
| Grok-1 (xAI) | 314B | ~79B | 8 | 2 | Open-source, competitivo com Mixtral |
Expert Parallelism: como servir MoE em clusters
Um MoE de 671B params (DeepSeek v3) não cabe em uma única GPU — nem em 8. O serving requer estratégias específicas de paralelismo. Em modelos densos, o padrão é tensor parallelism(dividir matrizes entre GPUs). Em MoE, adiciona-se expert parallelism: cada GPU hospeda um subconjunto de experts.
| Estratégia | O que faz | Trade-off |
|---|---|---|
| Expert Parallelism | Diferentes GPUs hospedam diferentes experts. All-to-all communication move tokens entre GPUs. | Alta largura de banda inter-GPU necessária (NVLink) |
| Tensor Parallelism | Divide cada camada entre GPUs (matrizes particionadas). | Funciona bem para attention; usado em conjunto com EP |
| Expert Offloading | Experts inativos ficam na RAM CPU; carregados na GPU quando chamados. | Latência alta (PCIe ~10x mais lento que HBM) |
| Token Dropping | Se um expert excede capacidade, tokens em excesso são descartados (skip). | Perda de qualidade controlável com buffer capacity |
Fine-tuning MoE: complexidades práticas
Fine-tuning de modelos MoE é mais complexo que modelos densos. A principal questão: o router deve ser atualizado? E se sim, como evitar que o fine-tuning colapse a especialização aprendida no pré-treino?
| Abordagem | O que congela | Quando usar | Risco |
|---|---|---|---|
| Full fine-tuning | Nada — atualiza tudo incluindo router | Quando tem dados suficientes (>100k exemplos) | Router pode colapsar especializações do pré-treino |
| LoRA nos experts | Pesos base dos experts; treina adaptadores LoRA | Fine-tuning eficiente em domínio específico | LoRA pode conflitar se expert não for ativado para o domínio |
| Congelar router | Router congelado; atualiza apenas experts | Preservar routing do pré-treino ao especializar | Router pré-treino pode não ser ótimo para nova tarefa |
| Congelar experts inativos | Só atualiza experts ativados para o domínio | Máxima eficiência; mínima interferência | Identificar quais experts são relevantes é não-trivial |
❓ Vale a pena fazer fine-tuning de Mixtral 8x7B vs LLaMA 3 70B para o mesmo caso de uso?
MoE vs Dense: quando usar cada um
📋 Qual arquitetura para um LLM de uso geral em producao?
Para modelos frontier (>100B params), MoE e essencial. O custo de servir um modelo denso de 1.7T params seria astronomico. MoE permite escalara parametros sem escalar compute linearmente.
Alt: Dense — Modelos menores (<70B params) onde a complexidade do MoE nao compensa. LLaMA 3 70B dense e mais simples de servir que um MoE de 70B params.
| Fator | Dense | MoE |
|---|---|---|
| Compute por token | Proporcional aos params totais | Proporcional aos params ATIVOS (muito menor) |
| VRAM necessaria | Proporcional aos params totais | Proporcional aos params TOTAIS (todos os experts na memoria) |
| Complexidade de servir | Simples — sharding padrao | Complexo — expert parallelism + routing overhead |
| Escalabilidade | Linear: 2x params = 2x compute | Sublinear: 2x params pode ser apenas 1.2x compute |
| Treinamento | Estavel, bem compreendido | Load balancing e instabilidade sao desafios ativos |
| Fine-tuning | Simples — LoRA/QLoRA padrao | Complexo — quais experts atualizar? Router muda? |
DeepSeek v3: anatomia de um MoE de fronteira barato
DeepSeek v3 (dezembro 2024) abalou a indústria ao demonstrar que um modelo competitivo com GPT-4o podia ser treinado por ~$5,5M — enquanto estimativas de GPT-4 falam em $100M+. As inovações técnicas foram específicas e complementares:
Perguntas e respostas
❓ Cada expert se especializa em um dominio (codigo, matematica, etc.)?
❓ Posso rodar um MoE em hardware menor se so carregar 2 experts?
❓ O router e treinado junto com os experts?
Quiz rápido
4 perguntas · Acerte tudo e ganhe o badge 🎯 Gabarito