Analytics Legends La plateforme de connaissance SAP Analytics
Fiche concept

FlashAttention 2 + 3 — Kernels d'Attention Conscients de la Mémoire

FlashAttention 2 + 3 — Kernels d'Attention Conscients de la Mémoire — illustration de section Analytics Legends pour la base de connaissances SAP Analytics (concepts, études, Academy)

À jour au 2026-07-24T14:00:00Z

Qu'est-ce que FlashAttention 2 + 3 — Kernels d'Attention Conscients de la Mémoire ?

FlashAttention ne matérialise jamais la matrice d'attention n×n complète dans la mémoire HBM lente — il tuile Q/K/V pour tenir dans la SRAM rapide, comblant un écart de 3-10× en heures GPU en long contexte face à un kernel naïf, avec une sortie mathématiquement identique.

De quoi il s'agit

FlashAttention n'est pas une nouvelle façon de calculer l'attention sur le plan mathématique — elle produit exactement les mêmes nombres que l'attention standard par produit scalaire mis à l'échelle — c'est une façon différente de déplacer les données pendant ce calcul, et cette distinction est tout l'enjeu. FlashAttention 1 (2022) a posé le schéma ; FlashAttention 2 (2023) a restructuré la parallélisation pour environ un doublement de la vitesse ; FlashAttention 3 (2024) est optimisée spécifiquement pour la génération Hopper de GPU (H100, H200), en utilisant du matériel de copie mémoire asynchrone et l'arithmétique FP8 pour atteindre une fraction élevée du débit théorique de la puce. Pour un consultant SAP, la pertinence est concrète : c'est l'un des leviers les plus importants et les plus invisibles sur le coût par token de tout déploiement d'IA générative auto-hébergé ou adossé à SAP BTP AI Core.

Pourquoi c'est important

  • Les mathématiques sont exactes, pas une approximation — FlashAttention change seulement comment l'attention est calculée sur le GPU, jamais ce qu'elle calcule.
  • FlashAttention 3 exploite le matériel spécifique Hopper (TMA, spécialisation des warps, FP8) pour atteindre jusqu'à 75 % du débit théorique FP16 de la H100.
  • L'écart entre un déploiement avec FlashAttention activé (le défaut dans vLLM, TensorRT-LLM, PyTorch SDPA) et un kernel naïf est de 3-10× en heures GPU en long contexte — une ligne de coût directe dans toute estimation SAP BTP AI Core.

Points clés

  • Réimplémentation mathématiquement exacte de l'attention scaled dot-product — même sortie que softmax(QK^T/√d) naïf, beaucoup moins de trafic mémoire HBM.
  • Mécanisme central : tuiler Q/K/V en blocs résidents en SRAM (64-128 lignes) et utiliser un softmax en ligne (streaming) — ne matérialise jamais la matrice d'attention n×n en HBM.
  • FlashAttention 2 (Dao 2023) : gain ~2× sur v1 via un meilleur partitionnement du travail entre blocs de threads CUDA et un parallélisme de passe arrière amélioré.
  • FlashAttention 3 (Shah et al. 2024) : kernels spécifiques Hopper utilisant des copies de tuiles async TMA + pipelines producteur/consommateur à warps spécialisés + FP8 optionnel ; jusqu'à ~75 % du pic FP16 théorique H100.
  • Par défaut dans PyTorch SDPA, vLLM, TensorRT-LLM, llama.cpp et Hugging Face Transformers — opt-in requis uniquement dans le code d'entraînement custom.
  • Impact sur le coût BTP AI Core : FlashAttention activé vs attention naïve à longueur de contexte 4k+ = 3 à 10 fois moins d'heures GPU pour un débit de requête équivalent ; multiplicateur direct sur le coût par token.
  • Économie mémoire : un modèle 7B servant 4k de contexte avec attention naïve utilise ~2× plus de mémoire d'activation qu'avec FlashAttention — permettant des batch sizes plus grands ou des contextes plus longs sur le même GPU.
  • Pour les consultants SAP analytics : quand le client demande 'pourquoi notre facture BTP AI Core est-elle si élevée ?', le premier diagnostic est de confirmer que FlashAttention est actif et que les longueurs de contexte ne dépassent pas inadvertamment la plage efficace.

Termes employés sur cette page

HBM (High-Bandwidth Memory)
La mémoire GPU hors puce hébergeant les poids du modèle, les activations et le KV cache. ~3 To/s sur H100 — rapide face à la RAM CPU mais goulot d'étranglement face au SRAM sur puce. L'attention standard effectue 5 à 10 lectures/écritures HBM complètes par passe forward ; FlashAttention réduit cela à ~1.
SRAM (on-chip shared memory)
Le cache GPU rapide sur puce (mémoire partagée + L1), ~20 To/s de bande passante effective, mais seulement ~256 Ko par streaming multiprocessor sur H100. Les tailles de bloc de FlashAttention sont ajustées pour tenir dans le SRAM — toute la valeur de l'algorithme dépend de cet ajustement.
Online softmax
Un algorithme streaming numériquement stable qui calcule le softmax de façon incrémentale sur des blocs d'entrée sans jamais matérialiser le dénominateur de normalisation complet. Utilise un maximum courant et un facteur de correction appliqué à chaque frontière de tuile. L'astuce mathématique clé permettant à FlashAttention d'éviter la HBM.
TMA (Tensor Memory Accelerator)
Une unité matérielle spécifique à Hopper qui copie de façon asynchrone de grands blocs de tenseurs entre HBM et SRAM, libérant les streaming multiprocessors pour calculer pendant le transfert. L'innovation majeure spécifique à Hopper de FlashAttention 3 — permet le recouvrement mémoire/calcul qui atteint 75 % d'utilisation du H100.
Warp specialisation
Un pattern de programmation Hopper où différents warps au sein d'un thread block sont assignés de façon permanente soit au chargement de données (producteur) soit au calcul (consommateur), permettant un recouvrement soutenu des transferts TMA et des multiplications de matrices. Utilisé par FlashAttention 3.
IO-aware algorithm
Un algorithme conçu pour minimiser les lectures et écritures vers le niveau de mémoire lent (HBM), traitant l'accès mémoire comme le coût principal à optimiser plutôt que le nombre d'opérations en virgule flottante. FlashAttention est l'implémentation IO-aware canonique de l'attention.
SDPA (Scaled Dot-Product Attention)
La fonction d'attention intégrée à PyTorch (torch.nn.functional.scaled_dot_product_attention), qui dispatche automatiquement vers FlashAttention, l'attention économe en mémoire, ou le calcul naïf selon le matériel et la forme des entrées. Le point d'entrée correct pour tout modèle personnalisé utilisant PyTorch — appeler directement softmax(QK^T) contourne ce dispatch.
KV cache
Le cache des tenseurs Key et Value des tokens précédents, utilisé par les modèles autorégressifs à l'inférence pour éviter de recalculer l'attention sur l'intégralité du contexte. L'efficacité mémoire de FlashAttention permet directement des KV caches plus grands (= contexte de service plus long) pour le même budget de RAM GPU.

Sources

  1. Dao et al. — FlashAttention: Fast and Memory-Efficient Exact Attention (2022)
  2. Shah et al. — FlashAttention-3: Fast and Accurate Attention with Asynchrony and Low-Precision (2024)
  3. Rethinking AI TCO — Why Cost per Token Is the Only Metric That Matters (NVIDIA, 2026-05-12)
  4. SAP News Center — Accelerate the Autonomous Enterprise with SAP Business Data Cloud
  5. SAP News Center — SAP Unveils the Autonomous Enterprise
  6. SAP News Center — The Future of the Enterprise Is Autonomous
  7. SAP News Center — 2026 SAP Sapphire Keynote: Powering the Autonomous Enterprise
  8. SAP Help Portal — Administering SAP Datasphere: Enable Joule for SAP Datasphere
  9. SAP Datasphere — Help Portal
  10. SAP Datasphere — official product page
  11. SAP Analytics Cloud — Help Portal
  12. SAP Analytics Cloud — official product page
  13. SAP BW/4HANA — Help Portal
  14. SAP S/4HANA — Help Portal
  15. SAP News Center
  16. SAP Community
  17. SAP — industries overview
  18. Gartner — research & analyst site
  19. BARC — BI & Analytics research
  20. TDWI — data & analytics research
  21. DSAG — German-speaking SAP user group
  22. ASUG — Americas' SAP User Group
  23. Databricks — official site
  24. arXiv — FlashAttention-2
  25. NVIDIA — Hopper architecture in depth

Fiche complète réservée aux abonnés. Ce que la fiche complète ajoute : le cadre de décision complet · la comparaison SAP · Snowflake · Databricks · Fabric · les pièges courants et leur correctif · l'aide-mémoire · les schémas d'architecture · les blocs de code · les chiffres à citer.

Ouvrir dans l'application →