Reformer
O Reformer é uma variante do Transformer que usa atenção LSH e camadas reversíveis para processar sequências muito longas numa única GPU. Abrange usos e visão.
O Reformer é uma variação eficiente da arquitetura Transformer, projetada para processar sequências de dados muito longas que seriam computacionalmente inviáveis para modelos padrão. Criado para resolver os gargalos de memória inerentes aos sistemas tradicionais de deep learning, o Reformer reduz a complexidade do mecanismo de atenção de quadrática para termos log-lineares. Essa inovação permite que pesquisadores de inteligência artificial treinem modelos com janelas de contexto de dezenas de milhares de tokens — como livros inteiros, imagens de alta resolução ou longas composições musicais — em uma única GPU.
Principais inovações do Reformer#
O Reformer alcança sua eficiência por meio de duas mudanças arquiteturais principais que o diferenciam de modelos como BERT ou da série GPT original. Essas técnicas reduzem a extensa memória necessária para armazenar ativações durante o treinamento de modelos.
- Atenção com hashing sensível à localidade (LSH): Em um Transformer padrão, cada elemento de uma sequência presta atenção a todos os outros elementos, o que gera uma enorme carga computacional. O Reformer usa hashing sensível à localidade para agrupar vetores semelhantes. Em vez de calcular pontuações de atenção para todos os pares, o modelo as calcula apenas para um pequeno subconjunto de vizinhos mais próximos, acelerando significativamente o mecanismo de inferência.
- Camadas residuais reversíveis (RevNets): As redes neurais tradicionais precisam armazenar as ativações de cada camada para calcular gradientes durante a retropropagação. O Reformer utiliza redes neurais reversíveis, que permitem recalcular a entrada de uma camada a partir de sua saída durante a passagem para trás. Essa técnica elimina a necessidade de armazenar ativações intermediárias em cache, liberando memória para tamanhos de lote maiores.
Reformer em comparação com o Transformer padrão#
Embora ambas as arquiteturas dependam do mecanismo de atenção própria, elas têm propósitos diferentes no ecossistema de aprendizado de máquina.
- Transformer padrão: Excelente para sequências de comprimento curto a médio. No entanto, seu uso de memória cresce quadraticamente ($O(L^2)$) em relação ao comprimento da sequência ($L$). Ele é a base de muitos grandes modelos de linguagem (LLMs) usados em tarefas como análise de sentimentos ou chatbots.
- Reformer: Otimizado para sequências muito longas ($O(L \log L)$). Em alguns contextos, ele sacrifica um pouco de precisão em troca da capacidade de lidar com entradas impossíveis para Transformers padrão, como processar dados de análise de séries temporais extremamente longas ou gerar imagens pixel a pixel.
Aplicações no mundo real#
A capacidade do Reformer de lidar com vastas janelas de contexto abre novas possibilidades em áreas nas quais os dados não podem ser facilmente fragmentados.
-
Análise genômica: As sequências de DNA consistem em milhões de pares de bases. O Reformer pode analisar essas longas sequências para identificar padrões em bioinformática sem perder o contexto geral, ajudando a prever estruturas de proteínas.
-
Geração de textos longos: Ao contrário dos modelos padrão de geração de texto, que podem perder a coerência depois de alguns parágrafos, um Reformer consegue manter a consistência ao longo de milhares de palavras, sendo adequado para gerar resumos de contratos jurídicos extensos ou capítulos inteiros de romances.
Eficiência em visão computacional#
Embora os Reformers sejam frequentemente associados a textos, o princípio da eficiência é crucial na visão computacional. Assim como o Reformer otimiza Transformers, modelos modernos de visão como o YOLO26 otimizam Redes Neurais Convolucionais (CNNs) para inferência em tempo real. Compreender as limitações de memória é essencial ao implantar modelos em dispositivos de borda pela Plataforma Ultralytics, onde os recursos de hardware são limitados.
O código a seguir demonstra como inspecionar o consumo de memória de um modelo usando PyTorch, um conceito central no desenvolvimento de arquiteturas eficientes em termos de memória, como o Reformer.
import torch
import torch.nn as nn
# Define a simple Transformer layer (Standard, not Reformer optimized)
layer = nn.TransformerEncoderLayer(d_model=512, nhead=8)
model = nn.TransformerEncoder(layer, num_layers=6)
# Create a long sequence input (Sequence Length: 2000, Batch: 1, Features: 512)
# Standard Transformers struggle as this length increases.
input_data = torch.rand(2000, 1, 512)
# Check parameter count to understand model complexity
params = sum(p.numel() for p in model.parameters())
print(f"Model Parameters: {params:,}")
# Perform a forward pass
output = model(input_data)
print(f"Output shape: {output.shape}")Conceitos relacionados#
- Atenção esparsa: Uma categoria mais ampla de técnicas, incluindo LSH, em que o modelo presta atenção apenas a um subconjunto de tokens para economizar recursos computacionais.
- Checkpointing de gradientes: Técnica semelhante às camadas reversíveis, que troca tempo de computação por memória durante o treinamento do modelo.
- Otimização de modelos: Prática geral de melhorar a eficiência de modelos, que inclui quantização, poda e mudanças arquiteturais como as do Reformer.










