FlashAttention'ı Anlamak Bölüm 1: Kişisel Notlar
İçindekiler
0. Giriş: Girdi/Çıktı (IO) Duyarlı Dikkat Mekanizması Yaklaşıklama Yapmadan Transformer'ları Nasıl Hızlandırır?
FlashAttention mekanizmasının özü üç temel kavramla özetlenir: Döşeme (Tiling) + Çevrimiçi Softmax (Online Softmax) + Yeniden Hesaplama (Recomputation). Bu teknik el kitabı; GPU bellek trafiğini, çevrimiçi softmax yaklaşımını, ileri ve geri geçişleri, IO karmaşıklığını ve FlashAttention-1'den FlashAttention-4'e uzanan mimari evrimi detaylandırır.
Yazılım geliştiriciler için pratik çıkarım: Yüksek başarımlı derin öğrenme sistemlerinde asıl darboğaz çoğu zaman FLOP (aritmetik işlem) sayısı değil, bellek bant genişliğidir (Memory-Bound kısıtlar).
0.1 Bu Rehber Nasıl Okunmalı?
Standart dikkat uygulaması $Q, K, V \in \mathbb{R}^{N \times d}$ tensörlerini HBM'e yükler ve şu adımları izler:
- HBM'den $Q$ ve $K$'yı oku, $S$ matrisini hesapla ve $S$'yi HBM'e yaz.
- HBM'den $S$'yi oku, $P$ matrisini hesapla ve $P$'yi HBM'e yaz.
- HBM'den $P$ ve $V$'yi bloklar halinde oku, $O$ çıktısını hesapla ve $O$'yu HBM'e yaz.
- $O$ sonucunu döndür.
Buradaki temel verimsizlik, HBM'e yapılan gidiş-dönüş (round-trip) trafiğidir. Her ara değerin ($S, P, O$) sürekli belleğe yazılıp tekrar okunması gerekir; FlashAttention tam olarak bu problemi çözer. Konuyu kavramak için üç soruyu birbirinden ayırmak gerekir:
- Hangi matematiksel fonksiyon hesaplanıyor? Standart ölçeklenmiş nokta çarpımı dikkati.
- Fonksiyon ne kadar aritmetik işlem gerektiriyor? Sorgu-anahtar eşleşmesi dizi uzunluğuna göre karesel ($O(N^2)$) kalır.
- Uygulama, veriyi GPU bellek hiyerarşisinde nasıl taşır? FlashAttention'ın yürütmeyi dramatik biçimde değiştirdiği yer burasıdır.
Temel Çıkarım: Çalışma hızı (wall-clock speed) yalnızca FLOP sayısıyla ölçülmez. FlashAttention, ara değerleri yeniden hesaplasa bile HBM veri hareketini azalttığı için çok daha hızlıdır. Ayrıca yaklaşık (düşük ranklı veya seyrek) değil, tam (exact) bir dikkat algoritmasıdır; kayan nokta işlem sırası değişebilse de matematiksel hedef korunur.
0.2 Notasyon
Tek bir dikkat başlığı için tensör boyutları: $Q \in \mathbb{R}^{N_q \times d}, \quad K \in \mathbb{R}^{N_k \times d}, \quad V \in \mathbb{R}^{N_k \times d_v}$ ($N_q = N_k = N$).
Ölçeklenmiş skor ve çıktı denklemleri: $S = \frac{QK^T}{\sqrt{d}} + B, \quad P = \mathrm{softmax}_{\mathrm{row}}(S), \quad O = PV$ ($B$ isteğe bağlı maske/bias).
Donanım katmanındaki kritik fark:
- HBM: Yavaş, yüksek kapasiteli ve yonga dışı (off-chip).
- SRAM: Hızlı, küçük kapasiteli ve yonga içi (on-chip paylaşımlı bellek / yazmaçlar).
Sistem seviyesindeki asıl problem şudur: GPU hesaplama yaparken bu devasa ara tensörler ($S, P, O$) nerede barınacak? FlashAttention aritmetiği değil, doğrudan bu bellek yerleşimi sorununu hedefler.
İçindekiler
- Bölüm 1: Temel Problem
- 1.1 FlashAttention gerçekte neyi optimize eder?
- 1.2 Dikkat denklemi uygulamanın kendisi değildir
- 1.3 GPU mimarisi ve bellek kısıtları
Orijinal kaynağa buradan ulaşabilirsiniz.
Bu konuyu derinlemesine öğrenmek isterseniz: Ölçeklendirme ve Optimizasyon modülüne göz atın.
Bu konuyu daha derinlemesine öğrenmek ister misin?
Edumints'teki ücretsiz kursları incele ve bugün başla.
Kurslara Göz At →