İçeriğe geç
parazade
Yapay Zeka

FlashAttention Nedir?

Yayın: · Son güncelleme:

FlashAttention Nedir? Kısaca

FlashAttention, Transformer modellerindeki dikkat hesabını GPU bellek hiyerarşisini verimli kullanarak hızlandıran bir algoritmadır. Sonucu yaklaşık değil, birebir aynı hesaplar; ancak büyük ara matrisleri belleğe yazmadığı için uzun dizilerde çok daha az bellek kullanır.

FlashAttention nedir?
İçindekiler
  1. FlashAttention nedir?
  2. Hangi sorunu çözer?
  3. Nasıl çalışır?
  4. Neden önemli?
  5. Sınırları

FlashAttention nedir?

FlashAttention, Tri Dao ve arkadaşlarının 2022'de yayımladığı, öz dikkat hesabını hızlandıran bir algoritmadır. Dikkat mekanizmasının matematiğini değiştirmez; aynı sonucu donanıma daha uygun bir sırayla hesaplar. Bu yüzden "tam" (exact) bir dikkat algoritmasıdır, yaklaşık bir yöntem değildir.

Hangi sorunu çözer?

Standart dikkat hesabında, dizideki her token çifti için bir puan hesaplanır ve bu puanlar büyük bir matriste tutulur. Dizi uzunluğu iki katına çıkarsa bu matris dört katına çıkar. Asıl yavaşlık da çoğu zaman hesaplamadan değil, bu büyük matrisin GPU'nun ana belleğine (HBM) yazılıp tekrar okunmasından kaynaklanır. GPU'nun çip üzerindeki hızlı belleği (SRAM) çok daha hızlıdır ama küçüktür.

Nasıl çalışır?

  • Parçalara bölme (tiling): Sorgu, anahtar ve değer matrisleri küçük bloklara ayrılır; her blok hızlı belleğe sığacak boyuttadır.
  • Birleştirilmiş işlem: Puanlama, softmax ve değerlerle çarpma tek bir çekirdek içinde, blok blok yapılır.
  • Çevrim içi softmax: Softmax, tüm puanlar görülmeden parça parça ve doğru biçimde hesaplanır.
  • Yeniden hesaplama: Geri yayılımda büyük matrisi saklamak yerine gerektiğinde yeniden hesaplanır.

Böylece ana belleğe yapılan okuma-yazma sayısı ciddi biçimde azalır ve bellek kullanımı dizi uzunluğuyla doğrusal artar.

Neden önemli?

FlashAttention ve sonraki sürümleri, daha uzun bağlam pencereleriyle model eğitmeyi ve çalıştırmayı pratik hâle getirdi. Bugün birçok derin öğrenme kütüphanesinde ve çıkarım altyapısında doğrudan ya da benzer tekniklerle kullanılıyor.

Sınırları

Dikkatin hesaplama miktarı yine dizi uzunluğunun karesiyle artar; FlashAttention bu temel ölçeklemeyi değil, bellek trafiğini iyileştirir. Ayrıca belirli GPU mimarilerine göre optimize edildiği için her donanımda aynı kazancı sağlamayabilir.

Sıkça Sorulan Sorular

FlashAttention modelin çıktısını değiştirir mi?

Hayır. Matematiksel olarak standart dikkatle aynı sonucu hesaplar; yalnızca kayan nokta işlemlerinin sırasından kaynaklanan çok küçük sayısal farklar olabilir.

FlashAttention hangi durumda en çok fayda sağlar?

Uzun dizilerle eğitim ve çıkarım yapılırken en belirgin kazancı sağlar. Kısa dizilerde bellek trafiği zaten az olduğu için hız farkı daha sınırlı kalabilir.

İlgili terimler

Öz Dikkat(Self-Attention)Öz dikkat (self-attention), bir dizideki her öğenin aynı dizideki diğer tüm öğelere ne kadar dikkat etmesi gerektiğini hesaplayan mekanizmadır. Her kelimenin anlamını bağlamdaki diğer kelimelere göre yeniden şekillendirir ve Transformer mimarisinin temelini oluşturur.GPU(Graphics Processing Unit)GPU (Graphics Processing Unit, grafik işlem birimi), çok sayıda basit hesabı aynı anda yapabilen işlemcidir. Başlangıçta oyun ve grafik için geliştirilmiş, paralel hesaplama gücü sayesinde yapay zekâ eğitimi ve çıkarımının temel donanımı olmuştur.Bağlam Penceresi(Context Window)Bağlam penceresi (context window), bir dil modelinin tek seferde dikkate alabildiği en fazla metin miktarıdır ve token cinsinden ölçülür. Konuşma geçmişi, yüklenen belgeler ve modelin cevabı bu sınırın içine sığmak zorundadır.Bellek Bant Genişliği(Memory Bandwidth)Bellek bant genişliği, bir bellek biriminin işlemciye veya grafik işlemcisine birim zamanda aktarabildiği veri miktarıdır; genellikle GB/s veya TB/s ile ölçülür ve büyük yapay zekâ modellerinin ne kadar hızlı çalışacağını belirleyen temel etkenlerden biridir.SoftmaxSoftmax, bir sayı vektörünün her elemanının üstelini alıp bunları toplamlarına bölerek, tüm değerleri 0 ile 1 arasında ve toplamı 1 olan bir olasılık dağılımına dönüştüren, çok sınıflı sınıflandırmada yaygın kullanılan bir fonksiyondur.Derin Öğrenme(Deep Learning)Derin öğrenme, çok sayıda katmandan oluşan yapay sinir ağlarıyla veriden karmaşık kalıpları otomatik olarak öğrenen bir makine öğrenmesi yaklaşımıdır.