FlashAttention-2 (HU)
FlashAttention-2 — egy fejlett algoritmus, amelyet a nagy nyelvi modellek (LLM) attention mechanizmusának kiszámítására terveztek. Az algoritmust Tri Dao és a Stanfordi Egyetem kutatói fejlesztették ki, és 2023 júliusában mutatták be[1]. Kulcscélja, hogy jelentősen felgyorsítsa a transformer modellek tanítását és inferenciáját (következtetését) a GPU hardveres erőforrásainak hatékonyabb kihasználásával, miközben teljes mértékben megőrzi a számítások azonosságát a szabványos attention mechanizmussal – azaz pontosságveszteség nélkül.
A FlashAttention-2 a FlashAttention algoritmus logikus folytatása, amelyet ugyanaz a csapat mutatott be 2022-ben. Az új verzió megoldja a GPU nem teljes kihasználtságának problémáját, amely az elődjénél volt megfigyelhető, és az első verzióhoz képest közel kétszeres sebességnövekedést ér el.
A transformer-modellekben jelentkező attention-probléma előzményei
A szabványos önfigyelem (self-attention) mechanizmus szűk keresztmetszetté válik, amikor transformerekben hosszú szövegszekvenciákkal dolgoznak. Számítási összetettsége és memóriaigénye négyzetesen (O(N²)) nő a szekvencia hosszával (N) arányosan, ami komoly korlátokat szab a maximális kontextushossznak és az LLM-ek skálázhatóságának[1].
Ennek megoldására 2022-ben mutatták be a FlashAttention algoritmust[2]. Legfontosabb ötletei:
- A GPU memóriahierarchiájának figyelembevétele (IO-awareness): Az algoritmus minimalizálja a GPU lassú memóriája (HBM) és a chipen lévő gyors statikus memória (SRAM) közötti költséges olvasási/írási műveleteket.
- Blokk alapú feldolgozás (tiling): A számítások kis blokkokra (tile-okra) vannak felosztva, amelyeket a gyors SRAM-ban dolgoznak fel, ezáltal elkerülve a teljes attention-mátrix materializálását a memóriában.
Ez lehetővé tette a memóriahasználat lineáris növekedését (O(N)) és a szabványos implementációkhoz képest 2–4-szeres gyorsulást[2]. A FlashAttention széles körben elterjedt, és hozzájárult a jelentősen megnövelt kontextusú modellek megjelenéséhez, például a 2–4 ezer tokenről (GPT-3) 128 ezerre (GPT-4) és tovább[3]. Például a Falcon-40B modellben a FlashAttention használata 3-szorosára gyorsította az inferenciát, az általános generálási teljesítményt pedig 5-szörösére a GPT-3-hoz képest[4].
A FlashAttention-2 fejlesztése és céljai
A siker ellenére a FlashAttention első verziója nem használta ki teljesen a GPU számítási erőforrásait. Az NVIDIA A100 videokártyákon a teljesítmény csak az elméleti maximum 25–40%-át érte el (FLOPs/s)[1]. A fő ok a Streaming Multiprocessorok nem optimális kihasználtsága és a közös memóriával végzett felesleges műveletek voltak[5].
A FlashAttention-2 célja a számítások további gyorsítása volt a munka hatékonyabb párhuzamosítása és a kiegészítő műveletek minimalizálása révén. Az algoritmust teljesen újraírták az NVIDIA CUTLASS 3.x könyvtár alacsony szintű primitívjeivel a maximális teljesítmény elérése érdekében[6].
Technikai architektúra és működési elvek
A FlashAttention-2 három kulcsfontosságú fejlesztést vezet be a párhuzamosság és a hatékonyság növelése érdekében[1]:
1. Nem mátrix műveletek minimalizálása
Az algoritmus csökkenti a mátrixszorzástól eltérő lebegőpontos segédműveletek (non-matmul FLOPs) számát. Mivel a GPU tenzormagjai kifejezetten mátrixműveletekre (GEMM) vannak optimalizálva, és azokat akár 16-szor gyorsabban hajtják végre, ez a változtatás lehetővé teszi, hogy az idő nagy részében a GPU legjobb teljesítményű blokkjai legyenek használatban.
2. Fejlesztett párhuzamosság
Az eredeti FlashAttention-ben az egyetlen attention „fej" feletti munka nem volt párhuzamosítva, ami tétlenséget okozott hosszú szekvenciák és kis batch-méretek esetén. A FlashAttention-2 bevezeti a blokkközi párhuzamosítást: most az egyetlen attention fej számításai különböző GPU Streaming Multiprocessorok között oszlanak meg, ami jelentősen növeli azok kihasználtságát.
3. Optimalizált munkamegosztás a blokkon belül
Egyetlen számítási blokk szintjén a munkát újraosztották a szálcsoportok (warp-ok) között, hogy csökkentsék a közös memórián (shared memory) keresztüli adatcserét. Ez csökkenti a Softmax normalizáláshoz szükséges felesleges olvasási/írási műveletek számát.
Teljesítmény és hatékonyság
Az architekturális fejlesztéseknek köszönhetően a FlashAttention-2 jelentős teljesítménynövekedést mutat:
- Kétszeres gyorsulás: Az algoritmus körülbelül 2-szer gyorsabban működik a FlashAttention első verziójához képest[1].
- Magas GPU kihasználtság: Az NVIDIA A100 GPU-n az elméleti maximális átviteli sebesség (TFLOPs) 50–73%-a érhető el, ami közel van az optimalizált mátrixszorzó (GEMM) műveletek hatékonyságához[1].
- Rekord számítási sebesség:
- Az A100 GPU-n GPT típusú modell teljes tanítási ciklusában akár 225 TFLOP/s sebesség érhető el, ami 72%-os számítási blokk kihasználtságnak felel meg. Összehasonlításképpen, a szabványos attention ugyanolyan körülmények között kevesebb mint 100 TFLOP/s-sal terhelte a GPU-t[7].
- A H100 GPU-n a teljesítmény eléri a 335 TFLOP/s-t[7].
Ez a teljesítménynövekedés lehetővé teszi például, hogy 16k tokenes kontextusablakkal rendelkező modellt ugyanannyi idő alatt tanítsunk, amely korábban a 8k tokenes ablakhoz volt szükséges[5]. Fontos, hogy az algoritmus pontos és determinisztikus marad, ezért alkalmazása nem befolyásolja a modell előrejelzéseinek minőségét[8].
Alkalmazás és integráció az ökoszisztémába
A FlashAttention-2 gyorsan az LLM ökoszisztéma szabványos eszközévé vált. Számos népszerű keretrendszerbe és könyvtárba integrálták:
- PyTorch: Natív támogatás.
- Hugging Face Transformers: A támogatás az `attn_implementation=\"flash_attention_2\"` paraméterrel aktiválható a modell betöltésekor[9]. Kompatibilis tucatnyi architektúrával (GPT, Llama, Falcon, BERT stb.)[10].
- TensorRT-LLM, xFormers és Triton: Az algoritmus implementálva van ezekre a platformokra, ami széles körű alkalmazást biztosít[7].
Az integráció lehetővé teszi, hogy a FlashAttention-2 könnyen kombinálható legyen más optimalizálási módszerekkel, mint például a kvantálás (GPTQ, QLoRA) és a hatékony fine-tuning (PEFT)[9].
Összehasonlítás a következő verziókkal
FlashAttention-3
Az attention optimalizálásának kutatása folytatódik. 2024 júliusában Tri Dao bemutatta a FlashAttention-3-at, amelynek célja az NVIDIA Hopper GPU architektúra (H100/H200) lehetőségeinek kihasználása. Főbb újítások[3]:
- FP8 támogatás: 8 bites lebegőpontos számításokat használ a további gyorsítás érdekében.
- Aszinkron műveletek: Hatékonyabban kihasználja a GPU aszinkron képességeit.
A FlashAttention-3 a H100 GPU-n a FlashAttention-2-höz képest 1,5–2-szeres gyorsulást biztosít, akár 740 TFLOP/s teljesítményt érve el (az elméleti maximum 75%-a)[11].
Irodalom
- 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.
- Shah, J. et al. (2024). FlashAttention-3: Fast and Accurate Attention with Asynchrony and Low-precision. arXiv:2407.08608.
- 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. OpenReview: rog0J435OO.
- Abbott, V.; Zardini, G. (2025). FlashAttention on a Napkin: A Diagrammatic Approach to Deep Learning IO-Awareness. arXiv:2412.03317.
Jegyzetek
- ↑ 1.0 1.1 1.2 1.3 1.4 1.5 Дао, Три. «FlashAttention-2: Faster Attention with Better Parallelism and Work Partitioning». arXiv:2307.08691 [cs.LG], 17 июля 2023 г. [1]
- ↑ 2.0 2.1 «Optimizing LLMs for Speed and Memory». Hugging Face Documentation. [2]
- ↑ 3.0 3.1 Дао, Три. «FlashAttention-3: Fast and Accurate Attention with Asynchrony and Low-precision». Tri Dao's Blog. [3]
- ↑ «FlashAttention vs FlashAttention-2 - an Analysis». E2E Networks Blog. [4]
- ↑ 5.0 5.1 «FlashAttention-2: Faster Attention with Better Parallelism and Work Partitioning». OpenReview. [5]
- ↑ «FlashAttention-2». Hazy Research, Stanford University. [6]
- ↑ 7.0 7.1 7.2 Дао, Три. «FlashAttention-2: Faster Attention with Better Parallelism and Work Partitioning» (PDF). arXiv:2307.08691. [7]
- ↑ Рашка, Себастьян. «Llama 2 and FlashAttention 2». Ahead of AI Magazine. [8]
- ↑ 9.0 9.1 Белькада, Юнес. «Faster and more memory efficient models with Flash Attention 2!». LinkedIn. [9]
- ↑ «GPU inference». Hugging Face Documentation. [10]
- ↑ Дао, Три, и др. «FlashAttention-3: Fast and Accurate Attention with Asynchrony and Low-precision». arXiv:2407.08608 [cs.LG], 11 июля 2024 г. [11]