Descubra Flash Attention: un método rápido y eficiente en memoria para la atención de Transformer que acelera el entrenamiento GPU y la inferencia en tiempo real para PNL y CV.
Flash Attention es un algoritmo avanzado diseñado para acelerar el rendimiento de Transformer optimizando la forma en que los mecanismos de atención acceden a la memoria gráficos. Desarrollado para abordar los cuellos de botella computacionales en aprendizaje profundo, este método aumenta significativamente la velocidad de entrenamiento y inferencia en tiempo real sin sacrificar la precisión. Al gestionar el movimiento de datos de forma más eficiente, Flash Attention permite a los modelos de IA procesar secuencias de datos más largas, lo que es fundamental para las aplicaciones modernas de procesamiento del lenguaje natural (PLN) y la visión por ordenador (CV) de alto rendimiento.
La principal innovación de Flash Attention radica en su "conciencia de E/S", lo que significa que tiene en cuenta explícitamente el coste de mover los datos entre los distintos niveles de memoria en el sistema. coste de mover datos entre distintos niveles de memoria en una GPU (unidad de procesamiento gráfico). En En las implementaciones de atención estándar, las grandes matrices intermedias se leen y escriben con frecuencia en la memoria de alto ancho de banda (HB) de la GPU. (HBM) de la GPU, que es espaciosa pero relativamente lenta.
Flash Attention reestructura este proceso mediante una técnica denominada mosaico. Divide la gran matriz de atención en bloques más pequeños que caben en la memoria SRAM (Static Random Access Memory) de la GPU. Al realizar más cálculos dentro de la SRAM y minimizando las operaciones de lectura/escritura en la HBM, se reduce el cuello de botella del ancho de banda de la memoria. de la memoria. Este concepto fue introducido por investigadores de la Universidad de Stanford y se detalla en su artículo sobre FlashAttention.
Es importante distinguir la Flash Attention del concepto general de atención.
Si bien la Atención Flash se originó en el ámbito de la PLN para modelos lingüísticos amplios (LLM), se ha cada vez más vital para las tareas de visión. Las arquitecturas modernas, como el Vision Transformer (ViT), se basan en gran medida en capas de atención.
Algunos modelos impulsados por la comunidad, como YOLO12, han mecanismos de atención integrados que utilizan Flash Attention para mitigar el elevado coste computacional de su arquitectura. de su arquitectura. Sin embargo, estos modelos aún pueden sufrir un elevado consumo de memoria e inestabilidad en el entrenamiento. Para la mayoría de casos de uso práctico, Ultralytics YOLO11 sigue siendo la recomendada, ya que ofrece un equilibrio superior entre velocidad y eficacia. De cara al futuro, el próximo YOLO26 se está diseñando para soportar de forma nativa tareas con arquitecturas optimizadas que puedan aprovechar principios de eficiencia similares.
Flash Attention permite a los sistemas de IA realizar tareas que antes eran prohibitivas desde el punto de vista informático.
Frameworks modernos como PyTorch (versión 2.0 y posteriores) han integrado Flash directamente en sus API funcionales. Cuando se utilizan bibliotecas de alto nivel, el sistema selecciona automáticamente el kernel más eficiente (como Flash Attention) si el hardware lo soporta, como en las GPUs NVIDIA Ampere o Hopper.
El siguiente ejemplo muestra cómo un usuario puede aprovechar este ecosistema. Al cargar un modelo y moverlo a un dispositivo dispositivo CUDA , el marco subyacente aplica estas optimizaciones durante el entrenamiento del modelo.
import torch
from ultralytics import YOLO
# Ensure PyTorch is using a CUDA device for GPU acceleration
device = "cuda" if torch.cuda.is_available() else "cpu"
print(f"Using device: {device}")
# Load the YOLO11 model, which is optimized for efficiency
model = YOLO("yolo11n.pt")
# When training on a compatible GPU with PyTorch 2.0+,
# Flash Attention (SDPA) is utilized automatically for attention layers where applicable.
if device == "cuda":
results = model.train(data="coco8.yaml", epochs=5, imgsz=640)
Esta integración perfecta significa que los desarrolladores que utilizan la Ultralytics Platform pueden beneficiarse de las técnicas de aceleración sin necesidad de escribir manualmente complejos kernels CUDA .