1. Prefácio

Com o desenvolvimento dos grandes modelos de linguagem e da área de aprendizagem profunda, o MoE (Mixture of Experts, modelo de mistura de especialistas), graças às suas características de computação condicional e à alta escalabilidade, tem se tornado gradualmente um tema quente de pesquisa. Este artigo faz uma organização dos princípios básicos do MoE, do desenho geral da arquitetura e das principais tecnologias-chave. Também combina alguns exemplos open source para descrever, de forma sucinta, as ideias principais de implementação de modelos MoE típicos e seus cenários de aplicação.

2. O que é MoE?

Antes de aprofundar no MoE, vamos relembrar a arquitetura clássica do Transformer. No Transformer padrão, cada camada de Encoder/Decoder contém uma atenção multi-cabeças (Multi-Head Attention) e uma rede feed-forward totalmente conectada (Feed-Forward Network, normalmente abreviada como FNN). Essa FNN executa as mesmas transformações lineares e mapeamentos não lineares para todos os tokens de entrada, o que gera computação densa e traz alto consumo de recursos.

Já a técnica de mistura de especialistas (Mixture of Experts, abreviada como MoE) introduz, na posição da FNN, um mecanismo de “especialistas”: ela divide uma rede feed-forward de grande escala em vários sub-redes (isto é, especialistas) e, com a ajuda de uma rede de roteamento (Router), faz o roteamento dinâmico dos tokens. Especificamente, o roteador calcula uma pontuação (score) para cada especialista com base nas características do token (por exemplo, embedding ou contexto de atenção) e ativa apenas os K especialistas com maior pontuação para participar do cálculo; os demais permanecem ociosos. Assim, o total de parâmetros do modelo pode chegar a centenas de bilhões, mas em cada execução real os parâmetros efetivamente ativados (Activated Parameters) são apenas uma pequena parte — tipicamente entre 5% e 15% — reduzindo bastante o custo computacional e o uso de memória de GPU.

  • Diferença essencial entre Transformer e MoE
    • Computação densa: no Transformer padrão, a FNN processa todos os parâmetros de forma igual;
    • Computação condicional: o MoE calcula apenas em parte dos especialistas, obtendo ativação esparsa.
  • Por que esse desenho? As principais razões incluem:
    • Escalabilidade: dentro do orçamento, é possível aumentar o número de especialistas para ampliar a capacidade do modelo;
    • Eficiência: como poucos parâmetros são ativados, reduz-se rapidamente o uso de FLOPs e memória;
    • Especialização: diferentes especialistas podem se “especializar” em tipos de características ou tarefas, melhorando o desempenho geral.
Imagine uma biblioteca (como o Transformer) com milhares de livros (parâmetros): para encontrar uma informação, seria preciso folhear todos. Já o MoE é como um bibliotecário (roteador) que, com base na sua pergunta, pega apenas alguns livros mais relevantes (especialistas). Isso economiza tempo e é muito eficiente.

3. Componentes centrais do MoE

A operação do MoE depende principalmente de dois módulos:

  1. Especialistas (Experts)
    • Cada especialista é, por si só, uma subcamada feed-forward independente (normalmente duas transformações lineares com função de ativação). Isso equivale a treinar de forma especializada um subconjunto do espaço de parâmetros do modelo (ver Outrageously Large Neural Networks: The Sparsely‑Gated Mixture‑of‑Experts Layer).
    • Entre especialistas, podem ser usadas diferentes estratégias de particionamento, como clusterização de parâmetros (Balanced K‑Means), particionamento por grafo de coativação (Co‑activation Graph) ou particionamento sensível ao gradiente, para garantir a melhor configuração de parâmetros no domínio em que cada especialista é mais forte.
  2. Roteador (Router)
    • A entrada x passa por um mapeamento linear para obter as pontuações dos especialistas H(x)=xW_g e, em seguida, adiciona ruído aprendível para suavização: H'(x)=H(x)+SoftPlus(xW_n)⊙𝒩(0,1) (processo chamado Noisy Gating).
    • Usa uma estratégia Top‑K: mantém os K especialistas com maior pontuação, normaliza e produz G(x)=Softmax(KeepTopK(H'(x),K)), distribuindo a entrada para esses K especialistas selecionados.
    • Também é usado um termo auxiliar de balanceamento de carga L_aux=λ·CV(n_1,…,n_E) para minimizar a variância no número de tokens enviados a cada especialista, evitando sobrecarga de “especialistas populares”.

4. Por que o MoE é tão eficiente?

1. Redução de FLOPs via computação condicional

No Transformer padrão, a FNN precisa computar para todas as subcamadas e todos os tokens, com complexidade O(N·d^2). No MoE, apenas K especialistas são ativados, reduzindo a complexidade para O(K·d^2). Quando K ≪ N, o volume de computação pode cair quase linearmente em um fator N/K.

2. Superparametrização e capacidade de representação

Modelos supergrandes frequentemente precisam de muitos parâmetros para ajustar padrões complexos, mas o crescimento denso leva a gargalos computacionais. O MoE, com roteamento esparso, permite durante o treino um total de parâmetros globais várias vezes maior do que os parâmetros ativados (E·d^2), aumentando a capacidade de capturar padrões diversos.

3. Especialização e paralelismo distribuído

Cada especialista aprende apenas características de um subespaço, promovendo divisão de funções. O paralelismo por especialistas (Expert Parallelism) pode implantar especialistas em dispositivos diferentes, reduzindo a sobrecarga de sincronização da rede principal. Com paralelismo em pipeline ou tensor, é possível obter maior throughput e menor latência (ver GShard: Scaling Giant Models with Conditional Computation and Automatic Sharding).

4. Evidência prática

  • O GLaM, com 1,2 trilhão de parâmetros, ativa apenas 8% e supera o GPT‑3 (175B) em 29 tarefas de NLP, mostrando a vantagem da computação condicional.
  • O Switch Transformer, usando roteamento Top‑1, quase dobra o throughput mantendo o desempenho.

5. Detalhes técnicos do MoE

Redes neurais grandes tradicionais (como o Transformer) se comportam como um “generalista”: a cada processamento, todos os parâmetros participam do cálculo, o que é caro.

O MoE usa “chamada sob demanda” (computação condicional), fazendo apenas alguns especialistas participarem do cálculo e evitando desperdício de recursos.

1. Ativação esparsa e parâmetros ativados

Na camada FFN do Transformer, teoricamente todos os tokens exigem cálculo completo, mas testes mostram que apenas parte dos neurônios é ativada — há uma esparsidade natural (ver MoEfication: Transformer Feed-forward Layers are Mixtures of Experts). O MoE explora isso, dividindo uma FNN grande em E especialistas e fazendo o roteador selecionar apenas K especialistas por token:

MétricaDescrição
Total de parâmetrosPode chegar a dezenas de bilhões ou até a centenas de bilhões
Parâmetros ativadosAproximadamente total × (K/E); normalmente entre 5% e 15%
VantagensFLOPs e uso de memória caem proporcionalmente, aumentando bastante a eficiência de treino e inferência

2. Roteador e estratégias de roteamento

A seleção de especialistas é feita pelo roteador (Router). Uma implementação comum é:

  1. Mapeamento linear: H(x)=xW_g
  2. Injeção de ruído: H'(x)=H(x)+g·StandardNormal()⊙SoftPlus(H(x)) (também chamado Noisy Gating)
  3. Seleção Top-K: G(x)=Softmax(KeepTopK(H'(x),K))
  • Top-2 vs. Top-1: o GShard usa Top‑2 e mistura as saídas para maior robustez; o Switch Transformer usa Top‑1 para reduzir a complexidade de comunicação (ver GShard e Switch Transformers).
  • Esparsidade hierárquica: modelos como o Qwen3 ajustam dinamicamente K em diferentes profundidades para uma computação condicional mais granular.

3. Balanceamento de carga e perda auxiliar

Alguns especialistas podem ser ativados continuamente e ficar sobrecarregados. Para evitar desequilíbrio, o MoE introduz a perda auxiliar de carga (Auxiliary Load Loss), geralmente definida pelo coeficiente de variação do número de tokens por especialista:

L_aux = λ · CV(n₁, n₂, …, n_E) onde nᵢ é a quantidade de tokens processados pelo especialista i no batch atual e λ é um peso de balanceamento.

Esse termo é otimizado junto com a perda principal no pré-treino para manter o uso de especialistas aproximadamente uniforme (ver o GShard e a implementação de aux_loss em bibliotecas de transformers).

6. Exemplos clássicos de modelos MoE

A seguir, alguns modelos open source representativos, em ordem cronológica:

1. Sparsely-Gated Mixture-of-Experts Layer (2017)

Proposto por Shazeer et al. (Google Brain) em Outrageously Large Neural Networks: The Sparsely‑Gated Mixture‑of‑Experts Layer. Introduziu roteamento por portão com ruído e Top‑K (Noisy Top‑K Gating) e a perda auxiliar de carga para balancear especialistas. Estabeleceu a base da computação condicional e da ativação esparsa eficiente em larga escala.

2. GShard (2020)

Proposto por Lepikhin et al. (Google Research) em GShard: Scaling Giant Models with Conditional Computation and Automatic Sharding. Colocou MoE com portão Top‑2 em cada camada FNN, introduziu capacidade de especialistas (capacity) e particionou automaticamente especialistas em múltiplas máquinas/GPUs; também usou estratégias de roteamento aleatório e balanceamento. Treina e infere modelos na faixa de 600 bilhões de parâmetros, aumentando a escalabilidade.

3. Switch Transformer (2021)

Proposto por Fedus et al. (Google Research) em Switch Transformers: Scaling to Trillion Parameter Models with Simple and Efficient Sparsity. Usou roteamento Top‑1, simplificando comunicação; introduziu o Capacity Factor para otimizar carga; suportou bfloat16. Conseguiu bom equilíbrio entre overhead e throughput, chegando a 1 trilhão de parâmetros.

4. GLaM (2021)

Proposto por Du et al. (Google Research) em GLaM: Efficient Scaling of Language Models with Mixture-of-Experts. Tem 64 especialistas e ativa 2 por camada; usa roteamento Mixture-of-Modality para direcionar tarefas (texto, código etc.) a especialistas diferentes; ativa apenas 8% dos parâmetros. Mostrou que a ativação esparsa mantém desempenho e melhora multitarefa/multimodal.

5. DeepSeek-MoE (2024)

Proposto pela equipe DeepSeek AI em DeepSeekMoE: Towards Ultimate Expert Specialization in Mixture-of-Experts Language Models. Usa segmentação fina de especialistas, dividindo a FFN em especialistas menores, e introduz especialistas compartilhados (Shared Experts) para conhecimento comum. Cada token ativa 6 especialistas.

6. LLaMA-MoE (2024)

Desenvolvido pela equipe Sys4NLP com base no Meta LLaMA2, ver LLaMA-MoE: Building Mixture-of-Experts from LLaMA with Continual Pre-training. Suporta várias formas de particionar especialistas; oferece portão com ruído Top‑K e roteamento Switch de especialista único; especialistas ficam mais leves. Mostra um caminho para MoE em modelos mais leves.

7. Qwen3-235B-A22B (2025)

Lançado pela equipe Tongyi Qianwen (Alibaba), ver documentação oficial e repositório open source. Total de 235 bilhões de parâmetros, 128 especialistas; usa agendamento esparso hierárquico com ativação dinâmica, ativando 8 especialistas por token; suporta 32K de contexto e pode estender a 128K com YaRN; usa GQA e offloading assíncrono para otimizar paralelismo. Reduz custos de inferência em cenários de alto throughput e texto longo.

7. Cenários de uso e limitações

Na implantação, MoE e Transformer denso têm vantagens distintas; a escolha depende de recursos e necessidades:

  • MoE é mais adequado para cenários multi-máquina e alto throughput
    • Paralelismo por especialistas: sub-redes de especialistas podem ser distribuídas em várias máquinas/dispositivos; cada uma calcula poucos especialistas, reduzindo pressão de memória.
    • Roteamento condicional: o roteador transmite só a informação de roteamento necessária, sem sincronizar todos os parâmetros, reduzindo comunicação e aumentando throughput.
    • Escala elástica: ao expandir o cluster, basta aumentar/reorganizar especialistas; capacidade do modelo fica mais desacoplada do hardware.
  • Transformer denso é mais adequado para máquina única, pouca memória ou baixa demanda de throughput
    • Overhead de roteamento e agendamento: em cenário de máquina única, o custo relativo do portão, gestão de estado e comunicação pode aumentar e elevar a latência.
    • Implantação mais simples: não requer balanceamento/roteamento extra; frameworks são maduros; é mais fácil equilibrar tamanho e desempenho.
    • Eficiência de recursos: com memória e compute limitados, pode-se usar pruning, quantização ou distilação para melhorar custo-benefício.

8. Conclusão e perspectivas

Ao observar a trajetória do MoE, desde o “portão Top‑K com ruído” até o “sharding automático em múltiplas máquinas”, e depois inovações como “roteamento por especialista único”, “especialistas multimodais”, “segmentação fina” e “agendamento esparso hierárquico”, cada iteração busca equilibrar “maior capacidade” com “menor custo computacional”. A ideia central é a computação condicional, que dá alta escalabilidade e eficiência, mas traz desafios em roteamento, balanceamento de carga e comunicação.

O MoE se tornou um ramo importante no campo de modelos grandes de deep learning. Entender seus princípios e cenários de aplicação é crucial para impulsionar a próxima geração de sistemas inteligentes eficientes.


Alguns termos

Token:unidade mínima usada no processamento de texto do modelo; pode ser um caractere ou uma palavra.

Parâmetros (Parameters):valores treináveis em uma rede neural, como peças de LEGO; quanto mais parâmetros, mais complexo o modelo.

Computação condicional (Conditional Computation):mecanismo que ativa apenas parte dos especialistas conforme a entrada, como consultar professores especialistas em vez de reunir todos.

Especialista (Expert):sub-rede dentro do MoE, responsável por tratar certos tipos de dados/características.

Roteador (Router/Gating Network):módulo que decide para quais especialistas cada token deve ser enviado.

Parâmetros ativados (Activated Parameters):quantidade de parâmetros efetivamente usada em uma computação; normalmente muito menor que o total.

Ativação esparsa (Sparse Activation):ativar apenas parte dos especialistas/parâmetros a cada cálculo, economizando recursos.

Modelo denso (Dense Model):modelo tradicional em que todos os parâmetros participam do cálculo, como uma reunião com todos os membros.

FLOPs (Floating Point Operations):métrica do volume de computação; quanto menor, mais eficiente.

Memória de GPU (GPU Memory):espaço na GPU para parâmetros e resultados intermediários; quanto menor o consumo, mais fácil implantar.

Rede feed-forward (Feed-Forward Network, FFN):camada do Transformer que aplica transformações não lineares.

Atenção multi-cabeças (Multi-Head Attention):mecanismo do Transformer que permite focar em diferentes partes da entrada.

Seleção/roteamento Top-K (Top-K Routing):estratégia em que o roteador escolhe os K especialistas com maior pontuação.

Noisy Gating:inserção de ruído na escolha de especialistas para melhorar robustez e balanceamento.

Perda auxiliar de carga (Auxiliary Load Loss):perda para balancear carga entre especialistas e evitar sobrecarga.

Coeficiente de variação (Coefficient of Variation, CV):métrica estatística do balanceamento; menor CV indica distribuição mais uniforme.

Paralelismo por especialistas (Expert Parallelism):distribuir especialistas em diferentes máquinas para cálculo em paralelo.

Paralelismo distribuído (Distributed Parallelism):distribuir modelo/dados em múltiplos dispositivos para computar em paralelo.

Paralelismo em pipeline:dividir o modelo em etapas e atribuir a diferentes dispositivos, como uma linha de produção.

Paralelismo de tensor:dividir o cálculo de uma camada em vários dispositivos.

Fator de capacidade (Capacity Factor):parâmetro que limita quantos tokens cada especialista pode processar.

Capacidade do especialista (Expert Capacity):número máximo de tokens por especialista em um forward.

Segmentação fina de especialistas (Fine-Grained Expert Segmentation):dividir a FFN em mais especialistas menores.

Especialistas compartilhados (Shared Experts):especialistas usados por múltiplas tarefas/entradas para conhecimento comum.

Esparsidade hierárquica (Hierarchical Sparsity):ajustar dinamicamente a quantidade de especialistas ativados em diferentes camadas.

GQA (Grouped Query Attention):mecanismo de atenção eficiente para acelerar inferência.

Offloading assíncrono (Asynchronous Offloading):transferir tarefas/dados de forma assíncrona para otimizar recursos.

Mixture-of-Modality:direcionar especialistas conforme a modalidade de entrada (texto, código etc.) para melhorar multimodal.

Pruning:remover parâmetros menos importantes para reduzir tamanho e computação.

Quantização (Quantization):usar tipos numéricos de menor precisão para reduzir consumo.

Distilação (Distillation):treinar um modelo pequeno a partir de um grande para herdar capacidades.

Roteamento (Routing):processo do roteador em escolher especialistas para cada token.

Perda principal (Main Loss):objetivo principal de otimização no treino (por exemplo, cross-entropy).

Perda auxiliar (Auxiliary Loss):objetivo adicional para melhorar propriedades como balanceamento.

Particionamento de especialistas (Expert Partitioning):processo de dividir uma rede grande em especialistas.

Particionamento por grafo de coativação (Co-activation Graph Partitioning):particionar especialistas com base na correlação de ativações.

Particionamento sensível ao gradiente (Gradient-aware Partitioning):particionar especialistas com base em gradientes.

Roteamento de especialistas (Expert Routing):distribuir a entrada para especialistas apropriados.

Roteamento Top-1/Top-2:enviar cada token para o especialista de maior pontuação (ou para os dois maiores).

Capacidade (Capacity):conceito do máximo de tokens por especialista em um forward.

Proporção de ativação (Activation Ratio):porcentagem de parâmetros ativados em cada computação.

Throughput:quantidade de dados processada por unidade de tempo; quanto maior, melhor.

Latência (Latency):tempo para processar uma entrada; quanto menor, melhor.

Sharding automático (Automatic Sharding):distribuição automática de parâmetros em múltiplos dispositivos.

bfloat16:formato de ponto flutuante de baixa precisão usado em treino para economizar memória.

Tecnologia YaRN:técnica para estender o comprimento de contexto.