Descubra o Flash Attention - um método rápido e eficiente em termos de memória para a atenção do Transformer que acelera o treino em GPU e a inferência em tempo real para PNL e CV.
O Flash Attention é um algoritmo altamente otimizado, projetado para acelerar o treinamento e a inferência de modelos Transformer, gerenciando o acesso à memória de forma mais eficiente. No deep learning (DL) moderno, especialmente com modelos grandes, o principal gargalo muitas vezes não é a velocidade de computação do processador, mas o tempo que leva para mover os dados entre o armazenamento da memória e as unidades de computação. O Flash Attention resolve essa "barreira de memória" reorganizando a forma como os mecanismos de atenção processam os dados, resultando em um desempenho mais rápido e menor uso de memória, sem sacrificar a precisão.
GPU entender a Flash Attention, é útil examinar a arquitetura de uma GPU unidade de processamento gráfico). Uma GPU tem memória de alta largura de banda (HBM) de alta capacidade, mas mais lenta, e SRAM no chip de baixa capacidade, mas incrivelmente rápida. As implementações padrão de atenção leem e gravam repetidamente grandes matrizes na HBM lenta, o que cria um acúmulo de trabalho.
O Flash Attention usa uma técnica chamada "tiling" para dividir a grande matriz de atenção em blocos menores que cabem inteiramente na SRAM rápida. Ao manter esses blocos na memória rápida e realizar mais cálculos antes de gravar o resultado, o algoritmo reduz significativamente o número de operações de leitura/gravação na HBM. Essa inovação, introduzida por pesquisadores da Universidade de Stanford, torna o processo "sensível à E/S", o que significa que ele leva em consideração explicitamente o custo da movimentação de dados. Você pode explorar os detalhes matemáticos no artigo de pesquisa original.
É importante distinguir a Atenção Instantânea de conceitos semelhantes no glossário de inteligência artificial (IA):
Embora tenha sido originalmente desenvolvido para Processamento de Linguagem Natural (NLP) para lidar com longas sequências de texto, o Flash Attention tornou-se fundamental na visão computacional (CV). Imagens de alta resolução criam sequências massivas de dados quando processadas por Vision Transformers (ViT).
Essa tecnologia influencia o desenvolvimento de detetores de objetos. Por exemplo, o YOLO12, desenvolvido pela comunidade, introduziu camadas de atenção aproveitando esses princípios. No entanto, arquiteturas puramente baseadas em atenção podem sofrer com instabilidade de treinamento e CPU lentas CPU . Para a maioria das aplicações profissionais, Ultralytics é o padrão recomendado. O YOLO26 utiliza uma arquitetura altamente otimizada que equilibra velocidade e precisão para detecção de objetos de ponta a ponta e segmentação de imagens, evitando a sobrecarga frequentemente associada a camadas de atenção pesadas em dispositivos de ponta.
Os ganhos de eficiência proporcionados pelo Flash Attention permitem a execução de aplicações que antes eram demasiado caras ou lentas.
Estruturas modernas como PyTorch (versão 2.0+) integraram o Flash Attention
diretamente na sua API funcional como «Scaled Dot Product Attention» (SDPA). Quando treina um modelo usando
o ultralytics pacote numa GPU suportada GPU como a arquitetura NVIDIA ou Hopper), estas
otimizações são aplicadas automaticamente.
O exemplo a seguir mostra como iniciar o treinamento em uma GPU. Se o ambiente suportar, a estrutura subjacente utilizará kernels Flash Attention para acelerar o processo de treinamento.
import torch
from ultralytics import YOLO
# Verify CUDA device availability for Flash Attention support
device = "cuda" if torch.cuda.is_available() else "cpu"
print(f"Training on: {device}")
# Load the latest YOLO26 model (recommended for stability and speed)
model = YOLO("yolo26n.pt")
# Train the model; PyTorch 2.0+ automatically uses optimized attention kernels
if device == "cuda":
model.train(data="coco8.yaml", epochs=5, imgsz=640, device=0)
À medida que o hardware continua a evoluir, ferramentas como a Ultralytics irão aproveitar essas otimizações de baixo nível para garantir que os treinos sejam o mais rentáveis e rápidos possível para os desenvolvedores.