Atlas’ta ara

Keşfetmeye buradan başla

AI Radar/Araştırma analizi

FlashAttention: aynı sonuç, daha az bellek trafiği

Dikkat hesabı çoğunlukla işlemci hızıyla değil, belleğe okuma ve yazma sayısıyla yavaşlar. FlashAttention aynı sonucu parça parça hesaplayarak bunu azaltır; hilenin kendisi, tek satırlık bir softmax deneyinde.

ÖN BİLGİ

Bu yazıyı rahat izlemek için şunlara önce bakmış olman iyi olur:

01Darboğaz hesap değil, bellek#

Dikkat her token çifti için bir puan hesaplar. N tokenlık bir bağlamda bu, N × N’lik bir puan tablosu demektir. Örneğin N = 4.096 için 4.096² = 16.777.216 puan; yarım duyarlıkla (her sayı 2 bayt) bu yaklaşık 32 MiB eder, üstelik her dikkat kafası ve her katman için. Standart uygulamada bu tablo, GPU’nun yüksek kapasiteli ama görece yavaş belleğine (HBM) yazılır, sonra softmax için okunur, sonra tekrar yazılır, sonra değerlerle çarpmak için yeniden okunur.

Dao ve arkadaşlarının tespiti: dikkat çoğunlukla bellek trafiği ile sınırlıdır. GPU’nun hesap birimleri, bellekten veri gelmesini bekler. FlashAttention, sonucu değiştirmeden HBM’ye yapılan okuma/yazma sayısını azaltan, “giriş–çıkış farkında” (IO-aware) bir dikkat algoritmasıdır; hesabı küçük parçalara (tiling) bölerek hızlı yonga-içi belleğe sığdırır. FlashAttention ↗

02Hile: softmax’i parça parça hesapla#

Zorluk, softmax’in tüm satırı görmesi gerekmesidir: paydada hepsinin toplamı var. FlashAttention’ın çözümü “çevrimiçi softmax”tır: satırı bloklar hâlinde işle; her blokta o ana kadarki en büyük değeri ve toplamı güncelle; yeni bir blok daha büyük bir değer getirirse eski toplamı bir çarpanla yeniden ölçekle. Sonuç, tüm satırı bir arada gören hesapla aynıdır.

Aşağıda 16 puanlık bir satır var. Standart softmax ile bloklu hesabı karşılaştır; blok boyutunu değiştir.

01

Bloklar hâlinde, aynı sonuç

Hesaplanan · temsili girdiler

Satırı kaç parçaya bölersen böl, sonuç aynı mı? Blok boyutunu değiştir, çalışan en büyük değer ve toplamın bloktan bloğa nasıl güncellendiğini izle.

12345678910111213141516
BLOKLU VE STANDART SONUÇ ARASINDAKİ EN BÜYÜK FARK< 10⁻¹²
BLOK SAYISI4
BlokSkorlarÇalışan en büyükÇalışan toplamEski toplam çarpanı
10,4; 1,2; −0,3; 0,81,22,343—
22,1; 0,1; −1,0; 0,92,12,4340,407
30,5; 3,4; 1,1; −0,63,41,8370,273
40,2; 1,7; 0,0; 0,73,42,1611,000

Yeni bir blokta daha büyük bir skor görülürse, o ana kadar biriken toplam e^(eski en büyük − yeni en büyük) ile küçültülüp yeni toplama eklenir. Böylece tüm satırı bellekte tutmadan, tam olarak aynı olasılıklar elde edilir.

16 attention skoru öğretim için seçilmiştir. Standart softmax tüm satırı bir arada görür; bloklu hesap satırı parça parça işler ve her parçada çalışan bir en büyük değer ile toplamı günceller. İkisi tarayıcıda gerçekten hesaplanır ve karşılaştırılır. Bu, FlashAttention’ın temel hilesinin (çevrimiçi softmax) tek satırlık hâlidir; GPU belleği veya hız ölçümü içermez.

Her blok boyutunda iki sonuç arasındaki fark en çok 10⁻¹⁶ mertebesinde: yani kayan nokta yuvarlama düzeyinde. Bloklu hesap bir yaklaşım değil, aynı sayıdır; FlashAttention’ı “yaklaşık dikkat” yöntemlerinden ayıran da budur. Demo yalnızca bu tek satırlık hileyi gösterir: GPU belleği ya da hız ölçümü içermez.

03Makale ne iddia ediyor, hangi koşulda?#

Bildirilen sonuçDikkat edilecek nokta
BERT-large’da (uzunluk 512) MLPerf 1.1 eğitim rekoruna göre %15 uçtan uca hızlanmaYazarların kendi donanımı ve yazılım yığınıyla; hız kazancı bu kurulumdur
GPT-2’de (uzunluk 1K) 3 kat, Long-Range Arena’da (1K–4K) 2,4 kat hızlanmaHızlanma, uzunluk ve model yapılandırmasına göre değişir
GPT-2’de 0,7 daha iyi perplexity; uzun belge sınıflandırmada 6,4 puan artışBu kazanç, daha uzun bağlamın kullanılabilmesinden gelir; algoritmanın sonucu değiştirmesinden değil
Path-X (uzunluk 16K) ve Path-256 (64K) görevlerinde ilk kez şanstan iyi başarıBu görevler bağlam uzunluğuna aşırı duyarlı özel testlerdir

Önemli bir ayrıntı: FlashAttention hesap miktarını (işlem sayısını) azaltmaz; dikkat hâlâ N²’dir. Azalan şey, belleğe erişim ve onun yer kaplaması: N × N’lik tablo artık bütünüyle saklanmaz.

Bir sonraki fikir, aynı dikkat maliyetine değil, üretimin ardışıklığına karşı: spekülatif çözümleme.

KENDİNİ SINA

Bu yazıyı bitirdiğinde:

  • FlashAttention’ın hesabı değil bellek trafiğini azalttığını anlatabilirsin.
  • Bloklu softmax’in neden aynı sonucu verdiğini açıklayabilirsin.

Cümlelerden birini kendi sözlerinle anlatamıyorsan, ilgili bölüme dön ve demoyu yeniden dene.

İlerleme yalnızca bu tarayıcıda saklanır.
BAĞLANTILI KAVRAMLAR

Bir fikri diğerine bağla.

Rotanı gör: sıradaki adım ne? Bütün dersler