PyTorch ganha aceleração com MLPs fundidas: como a fusão de camadas reduz overhead e melhora desempenho
Aprofundamento CEVIU
Aprofundamento
A fusão de MLPs no PyTorch não é só uma otimização de kernel, é uma mudança na forma como o TorchInductor lida com a execução de blocos fundamentais de LLMs e vision transformers. Em vez de executar três operações separadas (linear → GELU → linear), o compilador agora as funde em uma única operação vetorializada, eliminando dois lançamentos de kernel e reduzindo drasticamente o tráfego de memória entre GPU e VRAM. Testes com GPT-2 small mostraram aumento de 38% no throughput de tokens durante inferência em A100, sem alteração no código-fonte nem recompilação manual.
Essa abordagem se diferencia de fusões anteriores (como os otimizadores Adagrad fundidos do PyTorch 2.12) porque atua no nível da estrutura de rede, não apenas no algoritmo de atualização. Ela também complementa, mas não substitui, técnicas como Lighthouse Attention: enquanto o Lighthouse acelera o bloco de attention, a fusão de MLPs acelera o bloco feed-forward, os dois juntos cobrem 70% dos ciclos de computação em um transformer padrão.
O que mudou
Na versão 2.12 (lançada em 2026-05-14), o PyTorch já havia introduzido fusão de otimizadores e melhorias em eigendecomposição, mas não tocava na fusão de camadas de modelo. Agora, com a integração direta no TorchInductor, ativada por padrão desde a versão 2.13-beta (lançada em 2026-06-10), a fusão de MLPs passa de técnica experimental para comportamento nativo. O que era rumor em fóruns de engenharia da Meta e Hugging Face virou realidade entregue: não exige flag, não depende de model parallelism, e funciona em modelos carregados via `torch.compile()` sem modificações.
Por que isso importa
Isso reduz o custo operacional de rodar modelos de linguagem em produção: menos tempo de GPU por token significa mais requisições por dólar. Para empresas que usam PyTorch em escala, como o Pinterest com seu Feature Trimmer ou a Meta com SilverTorch, essa otimização se soma a outras camadas de eficiência, tornando viável manter modelos maiores com latência estável. E, ao contrário de soluções proprietárias como TokenSpeed, ela é totalmente open source e integrada ao fluxo de trabalho padrão do PyTorch.
Linha do tempo
Lançamento do PyTorch 2.12 com otimizadores Adagrad fundidos e eigendecomposição CUDA acelerada
Apresentação do Lighthouse Attention, otimizando o bloco de attention em transformers
Publicação do guia prático de profiling com torch.profiler para identificar gargalos
Integração da fusão de MLPs no TorchInductor como otimização padrão em PyTorch 2.13-beta
Perguntas frequentes
Preciso reescrever meu modelo para usar essa fusão?
Não. Basta chamar `torch.compile(model)` com PyTorch ≥ 2.13-beta. O TorchInductor detecta automaticamente padrões de MLP consecutivos e aplica a fusão sem intervenção do usuário.
Funciona com todos os modelos de transformer?
Sim, desde que usem a estrutura padrão de feed-forward (duas camadas lineares com ativação no meio). Funciona com Llama, Mistral, ViT e Swin Transformer. Modelos com MLPs personalizados (ex: com dropout entre as lineares) não são fundidos por padrão.
A fusão afeta a precisão numérica?
Não. A operação fundida é matematicamente equivalente à sequência original, mantendo o mesmo comportamento de ponto flutuante. Não há quantização nem arredondamento adicional.
E quanto à memória VRAM?
Há redução de pico de memória de até 12% em modelos como GPT-2 medium, pois a fusão evita buffers intermediários entre as camadas lineares, um benefício colateral importante para implantação em GPUs com VRAM limitada.
- Categoria
- CEVIU IA
- Publicado
- 12 de junho de 2026
- Fonte
- CEVIU IA
