İçeriğe geç
edumintsBlog
LLM3 dk okuma

FlashAttention'ı Anlamak Bölüm 1: Kişisel Notlar

Kaynak: Hacker News

Paylaş
LLMEdumints Blog
İçindekiler 4 başlık

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:

  1. Hangi matematiksel fonksiyon hesaplanıyor? Standart ölçeklenmiş nokta çarpımı dikkati.
  2. Fonksiyon ne kadar aritmetik işlem gerektiriyor? Sorgu-anahtar eşleşmesi dizi uzunluğuna göre karesel ($O(N^2)$) kalır.
  3. 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ı

Bu konuyu derinlemesine öğrenmek isterseniz: Ölçeklendirme ve Optimizasyon modülüne göz atın.

Kaynak ve atıf

Bu yazı, Hacker News üzerinde yayımlanan içerikten yararlanılarak Edumints tarafından yapay zekâ desteğiyle Türkçe hazırlandı. Ayrıntılar ve yazarların kendi anlatımı için orijinaline bakabilirsin:

  • chizkidd.github.io//2026/09/13/flashattention