FlashAttention: GPU'yu Akıllı Kullanan Attention
2022'de Tri Dao'nun yayınladığı, modern transformer eğitiminin temelini değiştiren donanım dostu algoritma.

Bir algoritma ders kitabını yenilemedi — bir donanım sezgisi yendi
2022 başında Stanford'da doktora öğrencisi Tri Dao bir tez yazdı. Konu: attention. Yaptığı şey teorik olarak yenilik değildi — attention'ın çıkışı bit bit aynıydı. Ama çalışma süresi 3–5 kat daha hızlı, bellek kullanımı 10 kat daha az.
Nasıl? Sinir ağına bakmamıştı. Donanıma bakmıştı.
GPU'nun gizli hiyerarşisi
Modern GPU'lar iki tip belleğe sahip:
- HBM (High Bandwidth Memory): Büyük (A100'de 40 GB), ama yavaş — bant genişliği 1.5 TB/s.
- SRAM: Çok küçük (her thread block için 100-200 KB), ama 100x hızlı — 19 TB/s.
CPU'ya benzer: RAM (büyük yavaş) vs. L1 önbellek (küçük hızlı).
Standart attention bu hiyerarşiyi görmez. Q, K, V matrislerini HBM'de tutar, attention matrisini de HBM'de inşa eder. token için matris HBM'e yazılır ve okunur — toplam HBM trafiği. GPU çoğu zamanı HBM'i beklemek için harcar.
Standart attention'ın matematiği
Bu işi naif yapmak:
- hesapla, HBM'e yaz. ()
- üzerinde softmax yap, HBM'e yaz.
- çarp, HBM'e yaz.
için matrisi 256 MB; HBM bant genişliğinin sınırını zorlar.
FlashAttention'ın fikri
Dao'nun çözümü iki parçalı:
1. Tiling (Bloklara bölme)
matrislerini küçük bloklara böl (mesela ). Her bir blok çiftini SRAM'a yükle, ilgili attention parçasını SRAM içinde hesapla, sonucu HBM'e yaz.
Böylece büyük attention matrisini hiç inşa etmiyorsun. Sadece sonuç HBM'e yazılıyor.
2. Online softmax
Asıl matematiksel zorluk: softmax tüm satıra ihtiyaç duyar — payda toplamı bilinmeli. Blok blok hesaplarken bunu nasıl yaparsın?
Online softmax algoritması: her blokta yerel maksimumu ve toplamı tut, yeni blok geldiğinde yerel değerleri ölçeklendirip birleştir. Numerik kararlılığı korur.
Pseudo-kod:
- Her blok için max ve sum güncellemesi.
- Önceki çıkışı yeni max'a göre yeniden ölçeklendir.
- Yeni katkıyı ekle.
Bu trick olmasa tiling işe yaramazdı.
Performans
A100 GPU üzerinde 8K token için:
- Standart attention: ~2 saniye, 40 GB bellek
- FlashAttention: ~0.4 saniye, 4 GB bellek
A100 maksimum 60% kullanımdan 75%'e çıkar. HBM'e yazma 9 kat azalır. Çıktı bit bit aynıdır — sayısal olarak özdeş, yaklaşım değil.
Etki
Bu algoritma 2022 sonunda popüler olunca:
- PyTorch 2.0 içine entegre edildi (
scaled_dot_product_attention). - HuggingFace Transformers her modelde varsayılan oldu.
- GPT-4, Claude, Llama 2/3 dahil tüm büyük modellerin eğitiminde kullanıldı.
Tri Dao 2023'te FlashAttention-2'yi yayımladı: %2x daha hızlı (paralelliği iyileştirme). 2024'te FlashAttention-3 geldi: Hopper GPU (H100) için %1.5x ek hız.
"Akademik makale yerine kernel"
FlashAttention'ın anlamı sadece bir hızlanma değil. ML araştırmacılarına bir ders verdi: Donanım hiyerarşisini bilmek, model mimarisini bilmek kadar önemli.
Bu fark için yeni bir terim çıktı: IO-aware algoritma. Sadece FLOP'ları değil, bellek hareketini de hesaba kat.
Bu sezgiyi takiben pek çok yeni teknik geldi:
- PagedAttention (vLLM): KV-cache'i sayfa sayfa yönet.
- RingAttention: Dağıtık uzun bağlam.
- FlashDecoding: Üretim sırasında ek hız.
Klasik benzetme
FlashAttention'ı şöyle düşün: Bir bibliyografya yazıyorsun. Standart attention diyor ki "tüm kitapları tek bir masaya yığ, sonra tek tek bak." FlashAttention diyor ki "bir kasa kitap masaya çek, oradakileri işle, sonra kaldır, başka kasa çek." Aynı bibliyografya çıkar, ama masan asla taşmaz, sürekli kütüphane raflarına gitmezsin.
Tri Dao'nun ikinci darbesi
Tri Dao FlashAttention'dan sonra Mamba (2023) ile birlikte yine donanım dostu algoritma tasarladı — paralel scan. Bir araştırmacının iki yıl içinde modern AI'ın hem en hızlı transformer'ını hem en hızlı transformer-alternatifini yazması nadir.
Bağlam
Transformer için: [[transformer-attention-is-all-you-need]]. Donanım optimizasyonunun başka örneği: [[mamba-transformer-a-meydan-okuyan-uzun-bagimli-model]]. Modern GPU mimarisi için: [[gpu-paralel-hesaplama-mimarisi]].
Etiketler
Kendinizi Test Edin
Cevaplarınız profilinizde istatistik olarak saklanır.
1. FlashAttention'ın temel sezgisi nedir?
2. Online softmax neden gerekli?
3. IO-aware algoritma ne demek?
4. A100'de FlashAttention HBM trafiğini ne kadar azaltır?
5. FlashAttention nerede kullanılır?
İlgili Yazılar
Gökkuşağı Neden Hep Aynı Açıda Belirir? Bir Yağmur Damlasının Geometrisi
Gökkuşağı gökyüzünde rastgele durmaz; her zaman güneşe göre yaklaşık 42 derecelik bir açıda kavislenir. Bu sihirli sayının ardında, tek bir yağmur damlasının içindeki ışık yolculuğu ve zarif bir geometri var.
MatematikYüzey Gerilimi: Bazı Böcekler Suyun Üstünde Nasıl Yürür?
Su damlası neden hep yuvarlaktır? Bir bardağı taşma noktasının üstüne kadar nasıl doldurabiliriz? Bir böcek suya neden batmaz? Hepsinin cevabı, suyun yüzeyini bir trambolin gibi geren görünmez bir kuvvette.
MatematikPatates Paradoksu: 100 Kilo Patates Biraz Kuruyunca Neden 50 Kiloya Düşer?
100 kilo patatesiniz var ve %99’u sudan oluşuyor. Biraz beklettiniz, su oranı %98’e düştü. Şimdi patatesler kaç kilo? Sezginiz "neredeyse 100" diyor. Doğru cevap ise tam 50 kilo — ve bu, oranların ne kadar aldatıcı olduğunu gösteriyor.