FlashAttention (TR)

From Systems analysis Wiki
Jump to navigation Jump to search

FlashAttention — attention mekanizmasını hesaplamak için geliştirilmiş devrimci bir algoritmadır. Bu algoritma, büyük dil modellerinin (LLM) eğitim ve çıkarım süreçlerini önemli ölçüde hızlandırmak amacıyla tasarlanmış olup hesaplama doğruluğundan ödün vermez. Algoritma, ilk kez 2022 yılında Tri Dao liderliğinde Stanford Üniversitesi'nden bir araştırmacı ekibi tarafından tanıtılmıştır[1].

FlashAttention'ın temel fikri, hesaplamaları GPU bellek hiyerarşisini göz önünde bulundurarak yeniden düzenlemektir. Bu sayede yavaş belleğe yapılan erişim sayısı en aza indirilmekte ve standart attention mekanizmasının başlıca darboğazı ortadan kaldırılmaktadır.

Standart Attention Mekanizmasının Sorunları

Transformer'larda standart öz-dikkat (self-attention) mekanizması şu formülle hesaplanır: Attention(Q,K,V)=softmax(QKTdk)V burada Q, K, V sırasıyla sorgu, anahtar ve değer matrislerini temsil eder.

Bu yaklaşımın temel sorunu, N dizisi uzunluğuna göre ikinci dereceden karmaşıklık (O(N²)) göstermesidir[1]. Naif bir uygulamada, N×N boyutunda tam attention matrisi S hesaplanıp GPU belleğinde saklanmak zorundadır; bu durum iki kritik soruna yol açar:

  1. Yüksek bellek tüketimi: N×N matrisinin saklanması, uzun bağlamlarda mümkün olmaktan çıkar.
  2. Giriş-çıkış (IO) işlemleri: Asıl darboğaz, aritmetik işlem sayısı değil, GPU'nun yavaş belleğine yapılan sürekli erişimdir.

GPU Bellek Hiyerarşisi

Sorunu anlamak için GPU'da iki farklı bellek türünü birbirinden ayırt etmek önemlidir (NVIDIA A100 örneği üzerinden):

  • SRAM (statik bellek): Küçük kapasiteli (~20 MB), hızlı yonga içi bellek; son derece yüksek bant genişliğine sahiptir (19 TB/s'ye kadar).
  • HBM (yüksek bant genişlikli bellek): Büyük kapasiteli (40–80 GB), yavaş bellek; çok daha düşük bant genişliğine sahiptir (yaklaşık 1,5 TB/s)[2].

Bu asimetri, standart attention algoritmasını bellek bant genişliğiyle sınırlı (memory-bound) kılmaktadır; çünkü algoritma, büyük matrisleri sürekli olarak yavaş HBM'den okuyup yazar ve bu da gecikmelerin temel kaynağını oluşturur.

FlashAttention'ın Temel Yenilikleri

FlashAttention, HBM'e yapılan erişimleri en aza indirerek sorunu çözen IO-aware (IO'ya duyarlı) bir algoritmadır. Bu, üç temel teknik sayesinde sağlanır.

Tiling ve Blok Tabanlı İşleme

Tüm matrisi bir bütün olarak işlemek yerine FlashAttention, Q, K, V giriş matrislerini hızlı SRAM'e sığacak küçük bloklara (tilelara) böler. Algoritma bu blokları sıralı biçimde yükler, her biri için tüm attention hesaplamalarını gerçekleştirir ve nihai sonucu günceller; tam attention matrisini yavaş HBM'e kaydetmeden[1].

Çevrimiçi Softmax Hesaplama

Temel teknik atılım, Softmax'ın "çevrimiçi" (online) olarak hesaplanmasıdır. Standart Softmax, normalleştirme için giriş vektörünün tüm elemanlarını bilmeyi gerektirir. FlashAttention, Softmax'ı parça parça hesaplamaya olanak tanıyan değiştirilmiş bir algoritma kullanır. Bu algoritma iki ara değeri (mevcut maksimum ve üslerin toplamını) takip eder ve yeni bloklar işlendikçe bunları günceller; böylece tüm matrise aynı anda erişmeden tam sonuç elde edilir[2].

İşlemlerin Tek Bir CUDA Çekirdeğinde Birleştirilmesi

Tüm attention işlemleri (QKᵀ matris çarpımı, maskeleme, Softmax, V ile çarpım) tek bir birleşik CUDA çekirdeğinde (fused kernel) toplanır. Bu, HBM'e yapılan okuma/yazma işlemlerinin sayısını köklü biçimde azaltır: tüm matris üzerinde defalarca geçiş yapmak yerine algoritma bloğu SRAM'e bir kez yükler, tüm hesaplamaları gerçekleştirir ve yalnızca nihai sonucu yazar.

Teorik ve Pratik Verimlilik

Karmaşıklık ve Optimallik

FlashAttention bellek tüketimini O(N²)'den O(N)'ye düşürerek doğrusal ölçekleme sağlar. Algoritmanın IO-karmaşıklığının, iki seviyeli bellek hiyerarşisinde attention hesaplaması açısından teorik olarak optimal olduğu kanıtlanmıştır; yani donanım değiştirilmeden kesin attention'ı daha hızlı hesaplamak mümkün değildir[3].

Ampirik Sonuçlar

FlashAttention'ın ilk versiyonu önemli iyileştirmeler ortaya koymuştur:

  • Hız artışı:
    • BERT-large (uzunluk 512): Eğitimde %15 hız artışı.
    • GPT-2 (uzunluk 1K): 3 kat hız artışı.
    • Long-Range Arena görevleri (1K-4K): 2,4 kat hız artışı[1].
  • Bellek tasarrufu: Kesin temel uygulamalara kıyasla 20 kata kadar bellek tasarrufu.
  • Model kalitesinde iyileşme: Daha uzun bağlamlarla çalışabilme kapasitesi sayesinde FlashAttention yalnızca kaliteyi korumakla kalmaz, aynı zamanda iyileştirir. Örneğin GPT-2'nin perpleksitesi 0,7 puan azalırken uzun belge sınıflandırma görevlerindeki doğruluk 6,4 puan artmıştır[1].

Evrim ve Sonraki Gelişmeler

FlashAttention'ın başarısı, donanım odaklı algoritmaların bir serisini başlattı.

FlashAttention-2 (2023)

İkinci versiyon, GPU kaynaklarından daha tam anlamıyla yararlanmayı hedefledi. Orijinal FlashAttention'da NVIDIA A100 üzerindeki verimlilik yalnızca maksimumun %25–40'ı düzeyindeydi. FlashAttention-2, hesaplama paralelleştirmesinde iyileştirmeler getirerek şu sonuçları sağladı[4]:

  • Birinci versiyona kıyasla iki kat hız artışı.
  • GPU kullanımının teorik maksimumun %50–73'üne çıkarılması.
  • Boyutu 256'ya ulaşan attention head'leri ile Multi-Query Attention (MQA) mimarilerinde destek genişlemesi.

FlashAttention-3 (2024)

Üçüncü versiyon özellikle NVIDIA Hopper (H100) GPU mimarisi için optimize edildi[5]. Tensor Core asenkronluğu ve FP8 desteği gibi yeni donanım özelliklerinden yararlanarak şu sonuçları elde etti:

  • FlashAttention-2'ye kıyasla 1,5–2 kat daha fazla hız artışı.
  • FP16'da 740 TFLOPS'a, FP8'de ise 1,2 PFLOPS'a yakın performans.

Özel Çözümler

FlashAttention'ın fikirleri başka projelerde de hayat buldu:

  • FlashInfer (2025): LLM çıkarım görevleri için özel olarak optimize edilmiş, özelleştirilebilir bir attention motoru. Akış tabanlı üretim modunda KV önbelleğiyle verimli çalışmaya odaklanır[6].
  • FlashMLA (2024): Bağlam önbelleğini sıkıştırarak (latent attention) çok uzun dizilerde minimum bilgi kaybıyla bellek tasarrufu sağlayan bir attention uygulamasıdır[7].

Sektöre ve Ekosisteme Etkisi

FlashAttention, temel bir atılım olarak hızla LLM'lerin verimli eğitimi ve çıkarımı için sektör standardına dönüştü. PyTorch ve Hugging Face gibi temel kütüphanelere entegre edildi ve büyük dil modellerinin çoğunda (LLaMA, MPT, Falcon, Claude vb.) kullanılmaktadır.

FlashAttention ve sonraki versiyonları, dil modellerinin bağlam pencerelerinin genişletilmesinde belirleyici bir rol oynadı: 2–4 bin token'dan (GPT-3) 128 bin token'a (GPT-4) ve hatta deneysel modellerde milyonlarca token'a ulaşıldı[8]. Algoritma, transformer'ların ölçeklendirilmesindeki en büyük engellerden birini ortadan kaldırarak uzun belge analizinden çok modlu anlayışa uzanan yapay zeka uygulamalarında yeni olanaklar açtı.

Literatür

  • Dao, T. et al. (2022). FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness. arXiv:2205.14135.
  • Dao, T. (2023). FlashAttention-2: Faster Attention with Better Parallelism and Work Partitioning. arXiv:2307.08691.
  • 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.
  • Hong, K. et al. (2023). FlashDecoding++: Faster Large Language Model Inference on GPUs. arXiv:2311.01282.
  • Ye, Z. et al. (2025). FlashInfer: Efficient and Customizable Attention Engine for LLM Inference Serving. arXiv:2501.01005.
  • 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. (2025). FlashMask: Efficient and Rich Mask Extension of FlashAttention. OpenReview wUtXB43Chi.
  • Dao, T. et al. (2022). FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness (OpenReview version). OpenReview H4DqfPSibmx.
  • Gholami, A. et al. (2024). FlashAttention on a Napkin: A Diagrammatic Approach to Deep Learning IO-Awareness. OpenReview pF2ukh7HxA.

Kaynakça

  • FlashAttention'ın resmi GitHub deposu

Notlar

  1. 1.0 1.1 1.2 1.3 1.4 Дао, Три, и др. «FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness». arXiv:2205.14135 [cs.LG], 28 мая 2022 г. [1]
  2. 2.0 2.1 Дао, Три, и др. «FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness». OpenReview. [2]
  3. «We're Training AI Twice as Fast This Year as Last». IEEE Spectrum. [3]
  4. Дао, Три. «FlashAttention-2». tridao.me. [4]
  5. «FlashAttention-3: Fast and Accurate Attention with Asynchrony and Low-precision». PyTorch Blog. [5]
  6. «[2501.01005] FlashInfer: Efficient and Customizable Attention Engine for LLM Inference Serving». arXiv. [6]
  7. «GitHub - deepseek-ai/FlashMLA: FlashMLA: Efficient MLA decoding kernels». GitHub. [7]
  8. «The Evolution of Flash Attention: Revolutionizing Transformer Efficiency». Medium. [8]