FlashAttention-3 (SV)
FlashAttention-3 — är en algoritm för optimering av attention-mekanismen i transformerbaserade neurala nätverk, utvecklad för att maximalt utnyttja hårdvarukapaciteten hos GPU-arkitekturen NVIDIA Hopper (H100)[1]. Algoritmen presenterades 2024 av en grupp forskare från företagen Colfax Research, Meta, NVIDIA, Georgia Tech, Princeton University och Together AI. Arbetet antogs till konferensen NeurIPS 2024 och uppmärksammades som spotlight[2].
FlashAttention-3 är den tredje iterationen i algoritmfamiljen, efter FlashAttention (2022) och FlashAttention-2 (2023). Dess huvudsakliga mål är att avsevärt påskynda träning och inferens av stora språkmodeller (LLM), samtidigt som beräkningarnas noggrannhet bevaras.
Introduktion och bakgrund
Problemet med attention-mekanismen
En nyckelkomponent i transformers är self-attention-mekanismen, men dess beräkningskomplexitet och minnesåtgång växer kvadratiskt (O(n²)) med ökande längd på insekvensen (n)[1]. Detta skapar en allvarlig flaskhals, eftersom moderna GPU:er är optimerade för snabba matrismultiplikationer, men beräkning av exponentialfunktioner (till exempel i Softmax) sker storleksordningar långsammare. Dessutom måste en stor mellanliggande attention-tensor lagras i GPU-minnet vid en naiv implementering, vilket begränsar modellernas skalbarhet.
FlashAttention och FlashAttention-2
För att lösa detta problem föreslogs FlashAttention år 2022, vilket minskade antalet åtkomster till det långsamma globala minnet (HBM) med hjälp av två tekniker:
- Blockbearbetning (tiling): Beräkningarna delas upp i block (tiles) som bearbetas i det snabba on-chip-minnet (SRAM).
- Sammanslagning av operationer: Alla operationer (matrismultiplikation, Softmax) utförs i en enda GPU-kärna utan att mellanresultat skrivs till det globala minnet.
Detta möjliggjorde en minskning av minneskomplexiteten från kvadratisk till linjär och snabbade upp beräkningarna 2–4 gånger.
År 2023 presenterades en förbättrad version — FlashAttention-2 — som optimerade parallelliseringen av beräkningarna. På GPU-arkitekturen NVIDIA Ampere (A100) uppnådde den ~70 % av den teoretiska topprestandan[3]. På den nyare arkitekturen NVIDIA Hopper (H100) visade sig dess effektivitet dock vara betydligt lägre — ungefär 35 %[1]. Detta berodde på att algoritmen inte utnyttjade Hoppers nya hårdvarufunktioner, vilket gav upphov till skapandet av FlashAttention-3.
Nya hårdvarufunktioner hos GPU Hopper (H100)
NVIDIA Hopper-arkitekturen introducerade ett antal nya funktioner som FlashAttention-3 utnyttjar för att uppnå maximal prestanda[4]:
- WGMMA (Warpgroup Matrix Multiply-Accumulate): En ny typ av instruktioner för tensor-kärnor som utför matrismultiplikationer med nästan dubbelt så hög prestanda jämfört med Ampere-arkitekturen.
- TMA (Tensor Memory Accelerator): En hårdvarumodul som snabbar upp dataöverföringen mellan det globala (HBM) och det delade (shared memory) minnet. TMA utför adressberäkningar automatiskt och avlastar beräkningskärnorna.
- FP8-format: Hårdvarustöd för 8-bitars flytandepunktsformat som fördubblar den teoretiska prestandan jämfört med FP16, men medför risk för noggrannhetsförlust på grund av det begränsade dynamiska omfånget.
Tekniska innovationer i FlashAttention-3
Algoritmen implementerar tre viktiga optimeringsmetoder som är speciellt utvecklade för Hopper-arkitekturen[4]:
1. Asynkron exekvering och warp-specialisering
FlashAttention-3 använder principen warp-specialization, där olika grupper av trådar (warps) på GPU:n specialiseras på olika uppgifter:
- Producer warps: Laddar data från det globala minnet med hjälp av TMA.
- Consumer warps: Utför matrismultiplikationer på tensor-kärnorna.
Tack vare Hoppers hårdvarubaserade asynkronitet överlappar dessa operationer i tid. Medan en grupp warps utför beräkningar laddar en annan grupp parallellt data för nästa block. Detta pipeline-upplägg, organiserat enligt ping-pong scheduling-principen, döljer fördröjningarna från långsamma operationer (till exempel Softmax) och laddar GPU:ns alla funktionsmoduler maximalt.
2. Minimering av minnesoperationer
Algoritmen behåller tiling-filosofin från tidigare versioner men utnyttjar aktivt TMA för asynkron inläsning av nästa datablock parallellt med de aktuella beräkningarna. Dataöverföringen från det långsamma HBM till det snabba SRAM sker i praktiken i skuggan av de primära beräkningarna, vilket innebär att GPU:n i lägre grad väntar på data.
3. Låg precision (FP8) med reducerat kvantiseringsfel
Övergången till FP8 fördubblar hastigheten men kan leda till väsentlig noggrannhetsförlust på grund av kvantisering. För att motverka detta införde utvecklarna metoden incoherent processing[4]. Dess princip är följande:
- Innan attention beräknas multipliceras feature-vektorerna (frågor Q och nycklar K) med en slumpmässig ortogonal matris (till exempel en Hadamard-matris).
- Denna transformation sprider ut värden med onormalt stor absolutbelopp (outliers) över alla koordinater och jämnar ut deras fördelning.
- Därefter utförs kvantisering till FP8, vilket nu sker med lägre fel.
- Eftersom transformationen är ortogonal förvrider den inte det slutliga attention-resultatet (QKᵀ), eftersom matrisens effekt upphävs vid multiplikationen.
Denna teknik möjliggjorde en minskning av attention-beräkningsfelet i FP8 med ungefär 2,6 gånger jämfört med standardanvändning av FP8 utan transformation[4].
Prestanda och betydelse
Att tillämpa de nämnda teknikerna gjorde det möjligt för FlashAttention-3 att uppnå en avsevärd fördel jämfört med tidigare versioner på GPU H100:
- 1,5–2 gångers acceleration jämfört med FlashAttention-2.
- Hög GPU-utnyttjning: Uppnår ~75–85 % av H100:s teoretiska prestandamaximum.
- Genomströmning:
- Upp till 740–840 TFLOPS för halvprecision (FP16/BF16).
- Upp till 1,2–1,3 PFLOPS (petaflops) vid användning av 8-bitars precision (FP8)[2].
FlashAttention-3:s höga effektivitet påverkar direkt utvecklingen och tillämpningen av LLM:
- Kortare träningstid: En acceleration av attention med 75–100 % minskar avsevärt modellträningstiden, som kan ta veckor eller månader.
- Ökat kontextfönster: Modeller kan effektivt bearbeta längre sekvenser (hundratusentals token), vilket är viktigt för analys av stora dokument eller kod[1].
- Rationell resursanvändning: Möjliggör samma prestanda på färre GPU:er eller högre hastighet på samma hårdvara, vilket sänker kostnaden för driftsättning av modeller.
Tillgänglighet och integration
Författarna publicerade källkoden till FlashAttention-3 under en öppen licens på GitHub[4]. Integration i ledande ramverk för djupinlärning, såsom PyTorch och Hugging Face Transformers-biblioteket, förväntas, vilket kommer att göra tekniken tillgänglig för en bred krets av utvecklare och forskare. Tidigare versioner har redan blivit de facto-standard i branschen, och FlashAttention-3 kommer sannolikt att fortsätta denna trend.
Externa länkar
- Officiellt FlashAttention-repositorium på GitHub
- Together AI:s blogg med tillkännagivandet av FlashAttention-3
Litteratur
- Shah, J. et al. (2024). FlashAttention-3: Fast and Accurate Attention with Asynchrony and Low-precision. arXiv:2407.08608.
- Dao, T. (2023). FlashAttention-2: Faster Attention with Better Parallelism and Work Partitioning. arXiv:2307.08691.
- Dao, T. et al. (2022). FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness. arXiv:2205.14135.
- Kwon, W. et al. (2023). Efficient Memory Management for Large Language Model Serving with PagedAttention. arXiv:2309.06180.
- Ye, Z. et al. (2025). FlashInfer: Efficient and Customizable Attention Engine for LLM Inference Serving. arXiv:2501.01005.
- Chen, Y. et al. (2023). FlashDecoding++: Faster Large Language Model Inference on GPUs. arXiv:2311.01282.
- Liu, Y. et al. (2024). FastAttention: Extending FlashAttention-2 to NPUs and Low-Resource GPUs. OpenReview: 76NYyOrnfk.
- Dege, P. et al. (2025). FlashMLA-ETAP: Efficient Transpose Attention Pipeline for Accelerating MLA Inference on NVIDIA H20 GPUs. arXiv:2506.01969.
- Wang, G. et al. (2024). FlashMask: Efficient and Rich Mask Extension of FlashAttention. arXiv:2410.01359.
- Abbott, V.; Zardini, G. (2025). FlashAttention on a Napkin: A Diagrammatic Approach to Deep Learning IO-Awareness. arXiv:2412.03317.
Noter
- ↑ 1.0 1.1 1.2 1.3 «FlashAttention-3 unleashes the power of H100 GPUs for LLMs». VentureBeat. [1]
- ↑ 2.0 2.1 Шах, Джей, и др. «FlashAttention-3: Fast and Accurate Attention with Asynchrony and Low-precision». OpenReview. [2]
- ↑ Шах, Джей, и др. «FlashAttention-3: Fast and Accurate Attention with Asynchrony and Low-precision». arXiv:2407.08608v2 [cs.LG], 15 июля 2024 г. [3]
- ↑ 4.0 4.1 4.2 4.3 4.4 Шах, Джей, и др. «FlashAttention-3: Fast and Accurate Attention with Asynchrony and Low-precision». Together AI Blog. [4]