Makaleler · arXiv 2205.14135
FlashAttention: IO Farkındalığı ile Hızlı ve Bellek Açısından Verimli Tam Dikkat
FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness
Üç satırda özet
- 🎯 Standart tam dikkat mekanizması, dikkat matrisini yavaş GPU HBM belleğinde somutlaştırarak süreci belleğe bağımlı hale getirir ve uzun bağlamlara ölçeklenmeyi zorlaştırır.
- 🔧 FlashAttention; girdileri hızlı çip üstü SRAM üzerinde döşeyerek (tiling), softmax'i artımsal güncelleyerek ve geri geçiş sırasında dikkati çip üzerinde yeniden hesaplayarak tek bir kaynaşık CUDA çekirdeğinde tam dikkat hesaplar.
- 📈 FlashAttention, GPT-2 modelinde uçtan uca 3 kata kadar eğitim hızlanması sağlar, MLPerf 1.1 BERT-large rekorundan %15 daha hızlı eğitim sunar ve bağlamı 64K belirtece ölçeklendirir.
Özet
Öz-dikkat (self-attention) mekanizmasının zaman ve bellek karmaşıklığı dizi uzunluğuna bağlı olarak karesel arttığından, Transformer modelleri uzun dizilerde yavaş çalışır ve yüksek bellek tüketir. Yaklaşık dikkat (approximate attention) yöntemleri, hesaplama karmaşıklığını azaltmak için model kalitesinden ödün vererek bu sorunu çözmeye çalışmış, ancak çoğunlukla gerçek zamanlı (wall-clock) bir hızlanma sağlayamamıştır. Bu noktadaki eksik ilkenin, dikkat algoritmalarını IO farkındalıklı (IO-aware) hale getirmek — yani GPU bellek katmanları arasındaki okuma ve yazmaları hesaba katmak — olduğunu savunuyoruz. GPU yüksek bant genişlikli belleği (HBM) ile GPU çip üstü SRAM arasındaki bellek okuma/yazma sayısını azaltmak için döşeme (tiling) yöntemini kullanan, IO farkındalıklı ve tam bir dikkat algoritması olan FlashAttention'ı öneriyoruz. FlashAttention'ın IO karmaşıklığını analiz ederek standart dikkat mekanizmasından daha az HBM erişimi gerektirdiğini ve belirli bir SRAM boyutu aralığı için optimal olduğunu gösteriyoruz. FlashAttention'ı ayrıca blok-seyrek (block-sparse) dikkate genişleterek mevcut tüm yaklaşık dikkat yöntemlerinden daha hızlı olan yaklaşık bir dikkat algoritması elde ediyoruz. FlashAttention, Transformer modellerini mevcut referans yöntemlerden daha hızlı eğitir: MLPerf 1.1 eğitim hızı rekoruna kıyasla BERT-large (dizi uzunluğu 512) modelinde uçtan uca %15 gerçek zamanlı hızlanma, GPT-2 (dizi uzunluğu 1K) üzerinde 3 kat hızlanma ve Long-Range Arena (dizi uzunluğu 1K-4K) üzerinde 2,4 kat hızlanma sağlar. FlashAttention ve blok-seyrek FlashAttention, Transformer modellerinde daha uzun bağlam uzunluklarına olanak tanıyarak daha yüksek kaliteli modeller (GPT-2'de 0,7 daha iyi perplexity ve uzun belge sınıflandırmasında 6,4 puanlık artış) ve tamamen yeni yetenekler sunar: Path-X probleminde (dizi uzunluğu 16K, %61,4 doğruluk) ve Path-256'da (dizi uzunluğu 64K, %63,1 doğruluk) şans faktöründen daha iyi performans gösteren ilk Transformer modellerini mümkün kılar.
Orijinal özet (İngilizce)
Transformers are slow and memory-hungry on long sequences, since the time and memory complexity of self-attention are quadratic in sequence length. Approximate attention methods have attempted to address this problem by trading off model quality to reduce the compute complexity, but often do not achieve wall-clock speedup. We argue that a missing principle is making attention algorithms IO-aware -- accounting for reads and writes between levels of GPU memory. We propose FlashAttention, an IO-aware exact attention algorithm that uses tiling to reduce the number of memory reads/writes between GPU high bandwidth memory (HBM) and GPU on-chip SRAM. We analyze the IO complexity of FlashAttention, showing that it requires fewer HBM accesses than standard attention, and is optimal for a range of SRAM sizes. We also extend FlashAttention to block-sparse attention, yielding an approximate attention algorithm that is faster than any existing approximate attention method. FlashAttention trains Transformers faster than existing baselines: 15% end-to-end wall-clock speedup on BERT-large (seq. length 512) compared to the MLPerf 1.1 training speed record, 3 speedup on GPT-2 (seq. length 1K), and 2.4 speedup on long-range arena (seq. length 1K-4K). FlashAttention and block-sparse FlashAttention enable longer context in Transformers, yielding higher quality models (0.7 better perplexity on GPT-2 and 6.4 points of lift on long-document classification) and entirely new capabilities: the first Transformers to achieve better-than-chance performance on the Path-X challenge (seq. length 16K, 61.4% accuracy) and Path-256 (seq. length 64K, 63.1% accuracy).
Okuma rehberi
Problem ve motivasyon
Transformer modelleri, dizi uzunluğu 'ye bağlı olarak karesel zaman ve bellek karmaşıklığına sahiptir. Yaklaşık dikkat yöntemleri teorik FLOP sayılarını azaltsa da, modern GPU hesaplamaları aritmetik işlemlerden ziyade çoğunlukla bellek transferleri (IO) ile darboğaza girdiğinden, bu yöntemler genellikle gerçek zamanlı hızlanma elde edemez.
Standart dikkatte , ve hesaplamaları; boyutundaki ara matrisleri yavaş Yüksek Bant Genişlikli Belleğe (HBM) yazar ve bunları defalarca geri okur. Bu durum HBM erişimine ve bellek ayak izine neden olarak pratik bağlam pencerelerini sınırlar.
Temel fikirler
- IO Farkındalığı: GPU bellek hiyerarşisini doğrudan hesaba katmak: Hızlı, küçük çip üstü SRAM (örneğin A100 üzerinde ~19 TB/s bant genişliği ile 192 KB/SM) karşısında büyük, yavaş HBM (1,5–2,0 TB/s bant genişliği ile 40–80 GB).
- Döşeme (Blok Softmax Hesaplaması - Tiling): girdilerini tamamen SRAM içine sığacak bloklara ayırmak. Çalışan softmax satır maksimumu ve normalleştirici istatistiklerini takip ederek, tam matrisini HBM üzerinde somutlaştırmadan softmax indirgemesi bloklar arasında artımsal olarak hesaplanır.
- Geri Geçişte Yeniden Hesaplama: Geriye yayılım (backpropagation) için ara dikkat matrisini saklamaktan kaçınmak. Bunun yerine yalnızca çıktı ve softmax istatistikleri saklanır; geri geçiş sırasında ve blok blok SRAM çipinde yeniden hesaplanır.
- Çekirdek Kaynaştırma (Kernel Fusion): Matris çarpımları, maskeleme, softmax ve dropout işlemlerini tek bir CUDA çekirdeğinde kaynaştırarak gereksiz HBM gidiş-dönüşlerini ortadan kaldırmak.
Yöntem (temel denklemlerle birlikte)
verildiğinde, FlashAttention blok boyutlarını ve olarak belirler; burada , SRAM kapasitesidir.
Artımsal Softmax Takibi
ve alt vektörlerine ayrıştırılmış bir vektör için çalışan istatistikler şu şekilde güncellenir:
Anahtarların/değerlerin . bloğu ve sorguların . bloğu için:
- SRAM üzerinde normalleştirilmemiş skorları hesapla: .
- Blok yerel istatistiklerini hesapla: , ve .
- Çalışan küresel normalleştiricileri güncelle:
- Çalışan çıktı bloğunu güncelle:
Karmaşıklık Analizi
- IO Karmaşıklığı: Standart dikkat HBM erişimi gerektirir. FlashAttention ise HBM erişimi gerektirir. Yazarlar, hiçbir tam dikkat algoritmasının tüm için asimptotik olarak erişimden daha azını elde edemeyeceğini kanıtlamaktadır.
- FLOP ve Bellek: FlashAttention FLOP gerçekleştirir (yeniden hesaplama nedeniyle geri geçişte biraz daha fazla FLOP ile) ve girdiler ile çıktıların ötesinde yalnızca yardımcı bellek gerektirir.
Genişletme: Blok-Seyrek (Block-Sparse) FlashAttention
Hesaplamayı önceden tanımlanmış bir seyreklik maskesine göre yalnızca sıfır olmayan bloklarla sınırlandırmak, IO karmaşıklığı sağlar; burada , sıfır olmayan blokların oranıdır.
Sonuçlar (en önemli sayılarla birlikte)
- Eğitim Hızlanması:
- BERT-large (dizi uz. 512): MLPerf 1.1 eğitim hızı rekorunu %15 geride bırakır ( A100 üzerinde 20,0 dakikaya karşılık 17,4 dakika).
- GPT-2 (dizi uz. 1K): HuggingFace'e kıyasla 3,5 kata, Megatron-LM'e kıyasla 1,8 kata kadar hızlanma sağlar.
- Long-Range Arena (LRA): Standart dikkate kıyasla 2,4 kat hızlanma sunar; Blok-seyrek FlashAttention 2,8 kat hızlanma elde eder.
- Daha Uzun Bağlam Yetenekleri:
- 4K bağlamlı GPT-2: Megatron-LM'in 1K bağlamdaki hızından daha hızlı eğitilirken doğrulama perplexity değerini 0,7 puan iyileştirir (18,2'ye kıyasla 17,5).
- Uzun Belge Sınıflandırma: Bağlamı 512'den 16K'ya çıkarmak, MIMIC-III üzerinde 4,3 mikro- kazancı (52,8'den 57,1'e) ve ECtHR üzerinde 8,5 puana kadar kazanç sağlar (8K'da 72,2'den 80,7'ye).
- Path-X ve Path-256: FlashAttention, Path-X'i (dizi uz. 16K) %61,4 doğrulukla çözen ilk Transformer modelidir. Blok-seyrek FlashAttention, Path-256'da (dizi uz. 64K) %63,1 doğruluk elde eder.
Kısıtlamalar ve açık sorular
- CUDA Mühendisliği İş Yükü: IO farkındalıklı çekirdekleri uygulamak, standart PyTorch veya derleyici soyutlamaları yerine özel, alt seviye CUDA programlaması gerektirir; bu da farklı donanım mimarileri arasında taşınabilirliği zorlaştırır.
- Çoklu GPU Dikkati: Tek düğüm için optimal IO çizelgelemesi, ara bağlantılar (NVLink, InfiniBand) üzerinden dağıtık çoklu GPU dikkatine doğrudan genişletilemez.
- Tam Dikkat Alt Sınırı: Genel değerleri için optimal olmakla birlikte, cinsinden ayrıntılı parametrelendirilmiş karmaşıklık alt sınırlarını kanıtlamak henüz açık bir problemdir.
Temel terimler
- IO-awareness
- İşlemleri donanım bellek katmanları arasındaki (örneğin hızlı çip üstü SRAM ile daha yavaş HBM) okuma ve yazmaları hesaba katacak şekilde tasarlama algoritmik ilkesi.
- High Bandwidth Memory (HBM)
- Yüksek toplam kapasite sunan ancak çip üstü önbelleğe göre önemli ölçüde daha düşük bant genişliğine sahip olan büyük birincil GPU belleği.
- SRAM
- Modern GPU'larda her bir Streaming Multiprocessor (SM) içinde bulunan hızlı, çip üstü geçici bellek.
- Tiling
- Girdi matrislerini SRAM'e sığacak daha küçük bloklara bölerek ve sonuçları geçişler boyunca biriktirerek bir hesaplamayı yeniden yapılandırma yöntemi.
- Selective gradient checkpointing
- İleri geçiş sırasında büyük ara dikkat matrisini kaydetmeyip, geri geçiş sırasında önbelleğe alınmış softmax istatistiklerini kullanarak matrisi çip üzerinde yeniden hesaplayan bir teknik.
- Kernel fusion
- HBM'e tekrarlanan okuma/yazma işlemlerini ortadan kaldırmak için birden fazla ayrı işlemi (matris çarpımı, maskeleme, softmax, dropout) tek bir GPU çekirdeği yürütmesinde birleştirme.
- Block-sparse FlashAttention
- FlashAttention'ın, yalnızca bir blok seyreklik maskesi ile tanımlanan sıfır olmayan döşeme bloklarını hesaplayarak IO karmaşıklığını seyreklik oranıyla orantılı şekilde azaltan bir uzantısı.
- Path-X / Path-256
- Long-Range Arena kıyaslamasından, önceki Transformer modellerinin şans faktöründen daha iyi doğruluk elde edemediği uzun dizili görsel akıl yürütme testleri (16K ve 64K dizi uzunlukları).
Sorular
FlashAttention dikkat matrisini yaklaşık olarak mı hesaplar?
Hayır. FlashAttention, sayısal kayan nokta hassasiyetine kadar standart dikkat ile matematiksel olarak birebir aynı çıktıları veren tam öz-dikkati hesaplar.
FlashAttention geri geçişte daha fazla FLOP hesaplamasına rağmen neden daha hızlıdır?
Çünkü standart dikkat bellek bağımlıdır (memory-bound); matrisini HBM ile SRAM arasında taşımak, hızlı SRAM üzerinde ek aritmetik işlemler yapmaktan çok daha fazla gerçek zaman (wall-clock time) tüketir.
FlashAttention geri geçiş için hangi yardımcı bellekleri saklar?
FlashAttention yalnızca ileri geçiş çıktısı 'yu, softmax normalleştirme faktörleri ve 'yi ( ek bellek gerektirir) ve çip üzerinde dropout maskelerini yeniden üretmek için sözde rastgele üreteç durumunu saklar.
FlashAttention'ın IO karmaşıklığı standart dikkat ile nasıl karşılaştırılır?
Standart dikkat HBM erişimi gerektirirken, FlashAttention erişim gerektirir; burada SRAM boyutu, ise dikkat başlığı boyutudur.
Bu sayfadaki açıklama yapay zekâ tarafından makaleden yazılmıştır ve hata içerebilir. Ayrıntılar için makaleyi okuyun.