Yolo Vision Shenzhen
Shenzhen
Rejoindre maintenant
Glossaire

Flash Attention

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).

Comment fonctionne l'attention flash

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.

Principales différences par rapport à l'attention standard

Il est important de distinguer l'attention flash du concept général d'attention.

  • Attention standard : Se réfère à l'opération mathématique par laquelle un modèle pèse l'importance de différents éléments d'entrée. différents éléments d'entrée. Les implémentations traditionnelles sont souvent liées à la mémoire, ce qui signifie qu'elles passent plus de temps à déplacer les données qu'à calculer. à déplacer des données qu'à calculer.
  • Flash Attention : est une implémentation de la même logique mathématique. Elle produit des résultats numériques identiques à ceux de l'attention standard, mais elle le fait beaucoup plus rapidement. identiques à celles de l'attention standard, mais le fait beaucoup plus rapidement.
  • Méthodes d'approximation : Contrairement à l'attention éparse ou aux approximations de rang faible qui troquent la précision contre la vitesse, l'attention flash est un algorithme exact, qui conserve toute la précision du modèle. la vitesse, l'attention flash est un algorithme exact, qui conserve toute la précision du modèle.

Pertinence des modèles de vision par ordinateur

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.

Applications concrètes

Flash Attention permet aux systèmes d'intelligence artificielle de traiter des tâches qui étaient auparavant prohibitives sur le plan informatique.

  1. Analyse de documents à contexte long : Dans le domaine du NLP, des modèles tels que GPT-4 utilisent l'attention flash pour maintenir une fenêtre de fenêtre de contexte. Cela permet à l'IA de traiter de traiter des livres entiers ou de longs contrats juridiques en un seul passage sans "oublier" les informations antérieures, ce qui améliore considérablement les capacités de résumé des textes. d'améliorer considérablement les capacités de résumé de texte.
  2. Imagerie médicale à haute résolution : Dans le domaine de la santé, l'analyse d'images médicales implique souvent le traitement de diapositives pathologiques de plusieurs gigapixels. Flash Attention permet aux modèles de vision d'analyser ces grandes images à haute résolution sans réduction d'échelle agressive. haute résolution sans réduction d'échelle agressive, préservant ainsi les détails essentiels au diagnostic de maladies telles que les tumeurs cérébrales. les tumeurs cérébrales.

Mise en œuvre dans PyTorch et Ultralytics

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.

Rejoindre la communauté Ultralytics

Rejoignez le futur de l'IA. Connectez-vous, collaborez et évoluez avec des innovateurs mondiaux.

Rejoindre maintenant