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 avancé conçu pour accélérer les performances des modèles Transformer. Transformer en optimisant la façon dont les d 'attention accèdent à la mémoire sur le matériel graphiques. Développée pour remédier aux goulets d'étranglement en matière de calcul dans l'apprentissage profond, cette méthode augmente de manière significative les performances des modèles Transformer. l 'apprentissage profond, cette méthode permet d'augmenter la vitesse de l'entraînement et de l'inférence l 'inférence en temps réel sans sacrifier la la précision. En gérant plus efficacement les mouvements de données, Flash Attention permet aux modèles d'IA de traiter des séquences de données plus longues, ce qui est essentiel pour les applications modernes de traitement du langage naturel (NLP) et la vision par ordinateur à haute performance (CV).
L'innovation principale de Flash Attention réside dans sa "prise en compte des E/S", ce qui signifie qu'elle prend explicitement en compte le coût du déplacement des données entre les différents niveaux de mémoire sur une carte mémoire. le coût du déplacement des données entre les différents niveaux de mémoire d'un GPU (Graphics Processing Unit). GPU (Graphics Processing Unit). Dans les Dans les implémentations standard de l'attention, les grandes matrices intermédiaires sont fréquemment lues et écrites dans la mémoire à grande largeur de bande GPUHBM) du GPU. de la mémoire à grande largeur de bande (HBM) du GPU, qui est spacieuse mais relativement lente.
Flash Attention restructure ce processus à l'aide d'une technique appelée "tiling". Elle divise la grande matrice d'attention en blocs blocs plus petits qui tiennent entièrement dans la mémoire SRAM (Static Random Access Memory) rapide du GPU. En effectuant plus de calculs dans la SRAM et en minimisant les opérations de lecture/écriture dans la HBM, elle réduit le goulot d'étranglement de la bande goulot d'étranglement de la bande passante. Ce concept a été introduit par des chercheurs de Stanford University et décrit en détail dans leur article sur la FlashAttention.
Il est important de distinguer l'attention flash du concept général d'attention.
L'attention flash a vu le jour dans le domaine du NLP pour les grands modèles de langage (LLM). pour les grands modèles de langage (LLM), elle est devenue de plus en plus vitale pour les tâches de vision. Les architectures modernes, telles que le Vision Transformer (ViT), s'appuient fortement sur les couches d'attention. couches d'attention.
Certains modèles communautaires, tels que YOLO12, ont intégré des mécanismes d'attention qui utilisent l'attention flash pour atténuer le coût de calcul élevé. mécanismes d'attention intégrés qui utilisent Flash Attention pour atténuer le coût de calcul élevé de leur architecture. de leur architecture. Toutefois, ces modèles peuvent encore souffrir d'une consommation de mémoire élevée et d'une instabilité de l'apprentissage. Pour la plupart des cas d'utilisation pratique, Ultralytics YOLO11 reste le choix choix recommandé, car il offre un meilleur équilibre entre vitesse et efficacité. Pour l'avenir, la prochaine version de YOLO26 est en cours de conception pour prendre en charge de manière native les tâches de bout en bout avec des architectures optimisées qui peuvent s'appuyer sur des principes d'efficacité similaires. de bout en bout avec des architectures optimisées qui peuvent exploiter des principes d'efficacité similaires.
Flash Attention permet aux systèmes d'intelligence artificielle de traiter des tâches qui étaient auparavant prohibitives sur le plan informatique.
Les frameworks modernes tels que PyTorch (à partir de la version 2.0) ont intégré Flash Attention directement dans leurs API fonctionnelles. Lors de l'utilisation de bibliothèques de haut niveau, le système sélectionne automatiquement le noyau le plus efficace (comme Flash Attention) si le matériel le prend en charge. le noyau le plus efficace (comme Flash Attention) si le matériel le supporte, comme sur les GPU NVIDIA Ampere ou Hopper.
L'exemple suivant montre comment un utilisateur peut tirer parti de cet écosystème. En chargeant un modèle et en le déplaçant vers un dispositif CUDA , le cadre sous-jacent applique ces optimisations pendant l'apprentissage du modèle. l 'apprentissage du modèle.
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)
Cette intégration transparente signifie que les développeurs qui utilisent la Ultralytics Platform peuvent bénéficier de techniques d'accélération de pointe sans avoir à écrire manuellement des noyaux CUDA complexes.