FlashAttention
FlashAttention est un algorithme économe en mémoire qui calcule exactement la même attention que les transformateurs standards, mais sans jamais écrire la matrice d'attention géante pour ralentir la mémoire du GPU.
Aperçu
It made long-context training and inference dramatically faster and cheaper.
Plongée profonde
L'attention standard calcule un score pour chaque paire de jetons, produisant une matrice N par N. Pour une séquence de 4 000 jetons, cela représente 16 millions de scores, et la matrice doit être écrite et relue à partir de la mémoire à large bande passante (HBM) du GPU. Ce trafic de mémoire, et non les calculs, est le véritable goulot d'étranglement. FlashAttention, introduit par Tri Dao et ses collègues en 2022, restructure le calcul de sorte que la matrice ne soit jamais entièrement matérialisée. Il traite la séquence en tuiles qui s'insèrent dans la minuscule SRAM ultra-rapide du GPU, calculant le softmax progressivement au fur et à mesure. Le résultat est mathématiquement identique à l'attention standard mais utilise beaucoup moins de mémoire et s'exécute plusieurs fois plus rapidement, permettant des fenêtres contextuelles beaucoup plus longues.
Aperçu technique
L'astuce est le « softmax en ligne » combiné au carrelage. FlashAttention charge de petits blocs de requêtes, de clés et de valeurs dans SRAM, calcule les résultats d'attention partielle et redimensionne les sommes cumulées à mesure que de nouveaux blocs arrivent afin que la normalisation softmax reste correcte sans voir tous les scores en même temps. Parce qu'il ne stocke jamais la matrice N par N complète dans HBM, la mémoire évolue de manière linéaire plutôt que quadratique, et le noyau est fusionné en une seule opération GPU pour minimiser les lectures et écritures lentes de la mémoire.
Impact stratégique
Vitesse et échelle
Les flux de travail linguistiques peuvent évoluer plus rapidement sans sacrifier la cohérence.
Accès et portée
Il étend l’accès à toutes les langues et styles de communication.
Décisions plus claires
Les équipes peuvent consacrer plus de temps au jugement tandis que l’automatisation gère les répétitions.
L'avenir de FlashAttention
FlashAttention est devenu un élément de base par défaut. FlashAttention-2 a amélioré le partitionnement du travail du GPU et FlashAttention-3 exploite les nouvelles fonctionnalités matérielles de Hopper telles que l'asynchronie et le FP8 de faible précision. Attendez-vous à une co-conception continue avec des puces, à une intégration plus approfondie dans les serveurs d'inférence pour les documents longs et à des variantes adaptées pour une attention clairsemée ou à fenêtre glissante. Alors que les fenêtres contextuelles s'orientent vers des millions de jetons, les noyaux compatibles IO comme celui-ci restent essentiels pour maintenir les coûts de formation et de service gérables.
Mise en œuvre dans le monde réel
Entraîner des modèles de langage volumineux tels que les systèmes de type Llama et GPT plus rapidement et à moindre coût GPU
Servir des assistants de discussion à long contexte qui ingèrent des livres ou des bases de code entiers sans manquer de mémoire
Accélérer les pipelines de synthèse de documents qui traitent des dizaines de milliers de jetons à la fois
Alimenter les transformateurs de vision et multimodaux où de longues séquences de patchs d'images rendent l'attention coûteuse
Risques et garde-fous
Les faits hallucinés peuvent discrètement entrer dans des rapports, des flux de support ou des résultats de recherche.
La sensibilité des invites peut créer des résultats incohérents pour des demandes similaires.
Les données textuelles sensibles peuvent être exposées si les contrôles d’accès sont faibles.
Feuille de route de mise en œuvre
Définissez le format de sortie, le ton et les normes de qualité avant le déploiement.
Établissez des réponses auprès de sources fiables chaque fois que la précision est importante.
Gardez un point de contrôle d’examen humain pour les résultats à enjeux élevés.
Suivez les modèles de défaillance et recyclez régulièrement les invites ou les flux de travail.
Continuez à explorer
Free newsletter
Get the daily AI briefing
Three verified AI stories every weekday morning, written in plain English. Free forever, no ads.
One email each weekday. Unsubscribe in one click. We never sell or share your address.
Test yourself
Take the FlashAttention quiz
Instant feedback on every answer, and a shareable certificate with a verifiable ID once you pass a course.
Support free AI education. AI Understanding is a 501(c)(3) nonprofit — no ads, no paywall, ever. Make a donation
Guide suivant
Incrustations de positions rotatives
Questions fréquemment posées
What is FlashAttention?
FlashAttention est un algorithme économe en mémoire qui calcule exactement la même attention que les transformateurs standards, mais sans jamais écrire la matrice d'attention géante pour ralentir la mémoire du GPU. Cela a rendu la formation et l’inférence sur un contexte long considérablement plus rapides et moins chères.
Quel est le principal goulot d’étranglement ciblé par FlashAttention dans l’attention standard ?
L'attention standard est liée à la mémoire : le déplacement de l'énorme matrice N par N vers et depuis une mémoire à large bande passante domine le temps, et non l'arithmétique elle-même.
Comment le résultat de FlashAttention se compare-t-il à l'attention standard ?
FlashAttention calcule exactement les mêmes valeurs d'attention ; il réorganise simplement le calcul pour éviter de matérialiser la matrice complète.
Quelle mémoire GPU FlashAttention exploite-t-il en traitant les données en tuiles ?
FlashAttention charge de petites tuiles dans la SRAM rapide sur puce du GPU, gardant le travail lourd à proximité des unités de calcul.
Quelle technique permet à FlashAttention de calculer softmax sans voir tous les scores en même temps ?
Un softmax en ligne maintient les maximums et les sommes en cours, redimensionnant les résultats partiels à mesure que de nouvelles tuiles arrivent afin que la normalisation finale soit correcte.
De quoi FlashAttention-3 a-t-il spécifiquement profité ?
FlashAttention-3 a été co-conçu avec des GPU Hopper modernes, utilisant une exécution asynchrone et un FP8 de basse précision pour des accélérations supplémentaires.