Por que Modelos MoE Estão Dominando o Mundo dos LLMs?

Você já reparou como os LLMs mais recentes — Qwen 3.5, MiniMax M2, GLM-5, Kimi K2.5 — estão cada vez maiores, mas ainda assim rodam em hardware acessível? O segredo é a arquitetura Mixture of Experts (MoE).

Em vez de usar todos os parâmetros para cada token, um modelo MoE ativa apenas um subconjunto de "especialistas". O resultado: um modelo com 21B parâmetros totais pode se comportar como um de 3.6B parâmetros ativos, gerando ~110 tokens/segundo num Mac M3 Ultra.

Mas tem um porém: as ferramentas tradicionais não foram feitas para isso. Carregar pesos, fazer quantização, distribuir entre GPUs — tudo isso precisava ser reinventado. E foi exatamente o que a Hugging Face fez no transformers v5.

Diagram showing Mixture of Experts architecture with router and multiple expert sub-networks in a Transformer Development Concept Image

O Pipeline de Carregamento: De 66s para 10s

O Problema Clássico

Num checkpoint MoE, cada especialista é salvo como um tensor separado:

# DeepSeek-V3: 256 tensores separados por camada!
'model.layers.3.mlp.experts.0.gate_proj.weight'
'model.layers.3.mlp.experts.1.gate_proj.weight'
# ... até o expert 255

Mas a GPU quer tudo num único tensor contíguo para fazer grouped GEMM. O jeito antigo era um loop feio e lento. O novo jeito é um pipeline de conversão.

WeightConverter: A Mágica por Trás da Velocidade

from transformers.models.llama.convert_weights import WeightConverter, MergeModulelist, Concatenate

# Empacota 256 especialistas em um tensor só
converter = WeightConverter(
    ["block_sparse_moe.experts.*.w1.weight", "block_sparse_moe.experts.*.w3.weight"],
    "mlp.experts.gate_up_proj",
    operations=[
        MergeModulelist(dim=0),
        Concatenate(dim=1),
    ]
)

Resultados de Benchmark

VersãoEstratégiaModoTempo
v4.57.6device_map="auto"Threadpool66.24s
v4.57.6TPOOM
v5device_map="auto"Async20.71s
v5TPAsync10.1s

6x mais rápido! Não é só mais threads — é um escalonamento inteligente que evita picos de memória e já empacota os especialistas durante o carregamento.

Developer running large MoE model weight loading on a server with GPU acceleration Programming Illustration

Expert Backend: Escolha Seu Motor de Execução

Com os especialistas empacotados, como rotear tokens eficientemente? O novo sistema de Expert Backend permite trocar a implementação sem mexer no modelo:

from transformers.models.llama.modeling_llama import use_experts_implementation

@use_experts_implementation
class LlamaSparseMoeBlock(nn.Module):
    pass  # O decorator cuida do dispatch

Três backends disponíveis:

  • eager: loop simples, ideal para debug.
  • batched_mm: duplica pesos por token, usa torch.bmm. Rápido para batches pequenos.
  • grouped_mm: agrupa tokens por expert, usa torch._grouped_mm. Melhor para batches grandes.

Paralelismo de Especialistas (Expert Parallelism)

Quer rodar um modelo de 120B parâmetros em 4 GPUs? É só ativar:

from transformers.distributed.configuration_utils import DistributedConfig

distributed_config = DistributedConfig(enable_expert_parallel=True)
model = AutoModelForCausalLM.from_pretrained(
    "openai/gpt-oss-120b",
    distributed_config=distributed_config,
)

E rodar com:

torchrun --nproc-per-node 4 script.py

Cada GPU carrega apenas seus especialistas locais e usa all-reduce para combinar saídas.

Treinamento MoE: 12x Mais Rápido com Unsloth

Treinar MoE sempre foi um pesadelo — comunicação distribuída, instabilidade no roteamento... A parceria com Unsloth mudou isso:

  • 12× mais rápido que v4
  • >35% menos VRAM
  • 6× mais contexto

Tudo usando kernels customizados Triton + LoRA em cima do Expert Backend. Guia oficial do Unsloth.

Limitações e Cuidados

  • Router Collapse: Sem regularização, o roteador pode enviar tudo para o mesmo expert. Use loss de balanceamento!
  • Memória Total: Mesmo com poucos parâmetros ativos, os parâmetros totais precisam caber na memória agregada.
  • Quantização por Expert: Agora possível com o pipeline v5, mas ainda é workflow avançado.

Próximos Passos

  1. Teste o carregamento de um modelo MoE com transformers>=5.0.
  2. Experimente os três backends no seu hardware.
  3. Se for treinar, use Unsloth para fine-tuning MoE.

Leituras Recomendadas

Fonte: Blog da Hugging Face - MoE in Transformers

Distributed training setup with multiple GPUs communicating for expert parallelism Developer Related Image

Conclusão

O transformers v5 não é só uma atualização — é uma reescrita que coloca os modelos MoE como cidadãos de primeira classe. Se você evitava MoE por causa da complexidade de carregamento ou overhead de treinamento, agora é a hora de mergulhar. A comunidade brasileira de código aberto já está adotando — e os resultados são impressionantes. Vamos nessa! 🚀

Este conteúdo foi elaborado com o auxílio de ferramentas de IA, com base em fontes confiáveis, e revisado pela nossa equipe editorial antes da publicação. Não substitui o aconselhamento de um profissional especializado.