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.

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ão | Estratégia | Modo | Tempo |
|---|---|---|---|
| v4.57.6 | device_map="auto" | Threadpool | 66.24s |
| v4.57.6 | TP | — | OOM |
| v5 | device_map="auto" | Async | 20.71s |
| v5 | TP | Async | 10.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.

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
- Teste o carregamento de um modelo MoE com
transformers>=5.0. - Experimente os três backends no seu hardware.
- Se for treinar, use Unsloth para fine-tuning MoE.
Leituras Recomendadas
Fonte: Blog da Hugging Face - MoE in Transformers

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! 🚀