FlashAttention

FlashAttention, GPU bellek hareketini akıllıca yöneterek kesin (exact) transformer dikkatini çarpıcı biçimde daha hızlı hesaplayan bir algoritmadır. Standart dikkat, N×N puan matrisinin tamamını GPU'nun yavaş yüksek bant genişlikli belleğinde oluşturur ve uzun dizilerde darboğaz aritmetik değil, bu matrisi ileri geri taşımaktır. FlashAttention (Tri Dao vd., 2022) hesaplamayı döşeler (tiling): sorgu ve anahtar blokları hızlı çip-üstü SRAM'de kalır, softmax ve matris çarpımları tek geçişte birleştirilir ve geri yayılım sırasında küçük parçalar saklanmak yerine yeniden hesaplanır. Sonuç, aynı matematiksel çıktıyla birkaç kat hızlanma ve dizi uzunluğuyla karesel değil doğrusal ölçeklenen bellek kullanımıdır — bugünün 100 bin+ token'lık bağlam pencerelerinin kilit etkenlerinden biri. Ardıllar (FlashAttention-2 ve 3) daha yeni donanımı daha da zorlar. Geliştiriciler için bu bir API düğmesi değil altyapıdır: zaten kullandığınız sunum yığınları ve eğitim çerçeveleri onu varsayılan olarak içerir. Bu tanımda en çok yükü taşıyan kelime kesin (exact) sözcüğüdür. FlashAttention, hızı doğruluktan satın alan bir yaklaşıklama değildir — aynı hesaplamanın giriş/çıkışa duyarlı biçimde yeniden düzenlenmesidir ve naif bir uygulamayla matematiksel olarak birebir aynı dikkat çıktısını üretir. Değişen şey ara değerlerin nerede durduğudur: sorgu, anahtar ve değerleri çip üstü SRAM'e sığan bloklara döşeyerek ve geri geçişte birkaç ucuz büyüklüğü saklamak yerine yeniden hesaplayarak, büyük ara puan matrisini yüksek bant genişlikli belleğe defalarca yazıp okumaktan kurtulur; uzun dizilerde gerçek darboğaz aritmetik değil, tam olarak bu bellek trafiğidir. Hem eğitimde hem çıkarımda bellek trafiğini kestiği için tasarruf, model yaşam döngüsünün her iki ucunda da daha az GPU-saat olarak görünür — satın aldığınız bir özellik olarak değil, yığından aşağı süzülüp token başına API fiyatına yansıyan bir maliyet düşüşü olarak. Ayrıca şunu netleştirmek gerekir: FlashAttention bir model mimarisi değildir. Herhangi bir standart transformer'a uygulanabilen, uygulama düzeyinde bir çekirdek (kernel) optimizasyonudur; bu yüzden yeniden eğitim gerektirmeden mevcut modellere takılır ve tek bir sağlayıcının sahiplendiği bir farklılaştırıcı olmak yerine üretim çıkarım motorlarının ve yaygın eğitim çerçevelerinin varsayılan bileşeni hâline gelmiştir. Geliştiriciler için sonuçları dolaylı ama gerçektir: uzun bağlam özelliklerinin karşılanabilir olmasının bir nedeni budur ve kendi sunucunuzda barındırıyorsanız, sunum yığınınızın gerçekten bir FlashAttention çekirdeği kullanıp kullanmadığını — desteklenmeyen bir GPU kuşağında veya veri tipinde sessizce naif yola düşüp düşmediğini — doğrulamak elinizdeki en ucuz performans kontrolüdür, çünkü yedek yol işlevsel olarak doğrudur ve tam da bu yüzden gözden kaçar. Bir hatırlatma daha: dikkatin karesel hesaplama maliyeti ortadan kalkmaz, yalnızca bellek trafiği ucuzlar. Uzun bağlam hâlâ pahalıdır; FlashAttention onu imkânsız olmaktan çıkarıp yönetilebilir kılar, bedelsiz yapmaz. Bu ayrım, 100 bin token'lık istemlerin fiyat ve gecikme bütçesini planlarken önemlidir.

İlgili terimler

Daha fazla Temel Yapay Zeka terimi