Découvrez Flash Attention - une méthode rapide et peu gourmande en mémoire pour transformer l'attention, qui accélère l'entraînement GPU et l'inférence en temps réel pour la PNL et la CV.
Flash Attention est un algorithme hautement optimisé conçu pour accélérer l'entraînement et l'inférence des modèles Transformer en gérant plus efficacement l'accès à la mémoire . Dans l'apprentissage profond (DL) moderne, en particulier avec les grands modèles, le principal goulot d'étranglement n'est souvent pas la vitesse de calcul du processeur, mais le temps nécessaire pour transférer les données entre la mémoire de stockage et les unités de calcul. Flash Attention s'attaque à ce « mur de mémoire » en réorganisant la manière dont les mécanismes d'attention traitent les données, ce qui se traduit par des performances plus rapides et une utilisation moindre de la mémoire sans sacrifier la précision.
GPU comprendre Flash Attention, il est utile d'examiner l'architecture d'un GPU unité de traitement graphique). Un GPU dispose d'une mémoire à bande passante élevée (HBM) de grande capacité mais plus lente, et d'une mémoire SRAM sur puce de faible capacité mais incroyablement rapide. Les implémentations standard de l'attention lisent et écrivent de manière répétée de grandes matrices dans la mémoire HBM lente, ce qui crée un retard.
Flash Attention utilise une technique appelée « mosaïque » pour diviser la grande matrice d'attention en blocs plus petits qui tiennent entièrement dans la SRAM rapide. En conservant ces blocs dans la mémoire rapide et en effectuant davantage de calculs avant de réécrire le résultat, l'algorithme réduit considérablement le nombre d'opérations de lecture/écriture vers la HBM. Cette innovation, introduite par des chercheurs de l'université de Stanford, rend le processus « sensible à l'E/S », ce qui signifie qu'il tient explicitement compte du coût du transfert de données. Vous pouvez explorer les détails mathématiques dans l'article de recherche original.
Il est important de distinguer l'attention flash de concepts similaires dans le glossaire de l'intelligence artificielle (IA):
Initialement développé pour le traitement du langage naturel (NLP) afin de traiter de longues séquences de texte, Flash Attention est devenu essentiel dans le domaine de la vision par ordinateur (CV). Les images haute résolution créent d'énormes séquences de données lorsqu'elles sont traitées par des transformateurs de vision (ViT).
Cette technologie influence le développement des détecteurs d'objets. Par exemple, le projet communautaire YOLO12 a introduit des couches d'attention exploitant ces principes. Cependant, les architectures purement basées sur l'attention peuvent souffrir d'une instabilité de l'entraînement et d'une lenteur CPU . Pour la plupart des applications professionnelles, Ultralytics est la norme recommandée. YOLO26 utilise une architecture hautement optimisée qui équilibre vitesse et précision pour la détection d'objets de bout en bout et la segmentation d'images, évitant ainsi la surcharge souvent associée aux couches d'attention lourdes sur les appareils périphériques.
Les gains d'efficacité obtenus grâce à Flash Attention permettent d'utiliser des applications qui étaient auparavant trop coûteuses ou trop lentes à exécuter.
Les cadres modernes tels que PyTorch (version 2.0+) ont intégré Flash Attention
directement dans leur API fonctionnelle sous le nom de « Scaled Dot Product Attention » (SDPA). Lorsque vous entraînez un modèle à l'aide de
l' ultralytics package sur un GPU pris en charge GPU comme l'architecture NVIDIA ou Hopper), ces
optimisations sont appliquées automatiquement.
L'exemple suivant montre comment lancer l'entraînement sur un GPU. Si l'environnement le permet, le framework sous-jacent utilisera des noyaux Flash Attention pour accélérer le processus d'entraînement.
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)
À mesure que le matériel évolue, des outils tels que la Ultralytics tireront parti de ces optimisations de bas niveau pour garantir que les exécutions de formation soient aussi rentables et rapides que possible pour les développeurs.