Robocikowo>ROBOCIKOWO
Wnioskowanie

FlashAttention

2022AktywnyOpublikowano: 29 maja 2026Aktualizacja: 29 maja 2026Opublikowany
Exact, IO-aware algorytm self-attention zmieniający kolejność obliczeń, by zminimalizować transfer danych między HBM a SRAM GPU. Przyspiesza attention 2-4× i obniża pamięć z O(n²) do O(n) bez utraty dokładności.
Kluczowa innowacja
IO-aware algorytm obliczania exact self-attention, który minimalizuje transfery między HBM a SRAM GPU przez tiling i online softmax — przyspiesza attention 2-4× i redukuje pamięć z O(n²) do O(n) bez aproksymacji.
Kategoria
Wnioskowanie
Poziom abstrakcji
Wzorzec
Poziom operacji
Element architekturyInferencja
Zastosowania
Trening Transformerów z długim kontekstem (32k+, 128k+)Inferencja LLM (prefill speedup, lower memory)ViT i modele wizyjne (BERT, ViT, Stable Diffusion)Domyślna implementacja attention w PyTorch (scaled_dot_product_attention)Trening modeli, gdzie wcześniej brakowało pamięci na pełną attention

Jak działa

Algorytm dzieli macierze Q, K, V na bloki rozmiaru B_r × d i B_c × d mieszczące się w SRAM (typowo 100-200 kB per SM). Dla każdego bloku Q ładuje go raz, następnie iteruje po blokach K i V, obliczając cząstkowe wyniki attention i akumulując je z numerycznie stabilnym online softmax: utrzymuje bieżący max m i sumę l, przy każdej nowej parze (K_j, V_j) aktualizuje O ← rescale(O_prev, m_old, m_new) + exp(S_new - m_new) · V_j. Macierz attention n×n nigdy nie jest materializowana w HBM. Backward pass używa rekomputacji zamiast zapisywanej macierzy uwagi (gradient checkpointing).

Rozwiązany problem

Standardowa implementacja attention materializuje macierz n×n w HBM i jest memory-bound — dominującym kosztem nie są FLOPs softmaxu, lecz transfer danych. Ogranicza to maksymalną długość kontekstu i throughput.

Komponenty

Tiling Q, K, V

Podział macierzy Q, K, V na bloki rozmiaru mieszczącego się w SRAM GPU (zwykle B_r × d ~ 64-128 × 64-128).

Online softmax

Numerycznie stabilna rekurencja utrzymująca bieżący max i sumę wykładniczą — pozwala obliczać softmax blokami bez materializacji pełnej macierzy.

Rekomputacja w backward

Backward nie zapisuje macierzy attention, rekomputuje ją z zapisanych O, L (logsumexp) — kompromis FLOPs vs pamięć.

Implementacja

Pułapki implementacyjne
Wersjonowanie vs hardwareŚrednia

FlashAttention-3 wymaga Hopper (H100/H200) — nie działa na Ampere (A100). v2 jest standardem na A100. Wybór złej wersji = utrata 2-4× speedup.

Rozwiązanie:Detekcja architektury GPU w runtime; użyj v2 dla A100, v3 dla H100. PyTorch sdpa wybiera automatycznie.
Ograniczone wsparcie dla custom attentionNiska

FlashAttention zakłada standardową scaled-dot-product attention z opcjonalnym causal mask. Niestandardowe maski (np. ALiBi, block-sparse) wymagają specjalnych wariantów lub uniemożliwiają jego użycie.

Rozwiązanie:Sprawdź wsparcie dla używanego biasu/maski. FlexAttention (PyTorch) oferuje większą elastyczność.

Ewolucja

Oryginalny paper · 2022 · NeurIPS 2022 · Tri Dao
FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness
Tri Dao, Daniel Y. Fu, Stefano Ermon, Atri Rudra, Christopher Ré
2022
FlashAttention v1 (Dao et al.)
Punkt przełomowy

Pierwsza publikacja — tiling + online softmax, 2-4× speedup, O(n) pamięć dla exact attention.

2023
FlashAttention-2 (Dao)
Punkt przełomowy

Lepsze work partitioning po warpach GPU, parallelism po wymiarze sekwencji — 2× szybsze niż v1, ~50-70% peak FLOPs na A100.

2023
Integracja w PyTorch 2.0 (scaled_dot_product_attention)

PyTorch dodaje FlashAttention jako domyślny backend dla F.scaled_dot_product_attention — masowa adopcja w ekosystemie.

2024
FlashAttention-3 (Shah et al.)
Punkt przełomowy

Wsparcie dla Hopper (H100): asynchroniczne TMA, warp-specialization, FP8 — do 75% peak FLOPs na H100, 2× szybsze niż v2.

Złożoność obliczeniowa

Wąskie gardło obliczeniowe

HBM-to-SRAM bandwidth

FlashAttention przesuwa attention z memory-bound do bliżej compute-bound przez maksymalizację reużycia danych w SRAM. Pozostaje limit przepustowości HBM dla ładowania bloków Q/K/V.

Zależy od
Rozmiar SRAM per SMPrzepustowość HBM

Paradygmat wykonania

Tryb główny
Gęsty

Exact attention — wszystkie pary token-token są obliczane (modulo causal mask). Optymalizacja czysto algorytmiczna, bez zmiany matematyki modelu.

Wzorzec aktywacji
Wszystkie ścieżki aktywne

Równoległość

Poziom równoległości
W pełni równoległy
Zakres
TreningInferencjaPomiędzy warstwami

Wymagania sprzętowe

Podstawowe
Ograniczony