OpenAI'de bir Araştırma Bilimcisi mülakatındasın. Röportaj yapan kişi şöyle soruyor: "Bir LLM'nin bağlam süresini 2K'dan 128K jetona nasıl genişletirsiniz?" Sen: "Modeli 128K bağlamla daha uzun belgelerde ince ayar yapacağım." Mülakat bitti. İşte kaçırdığınız şeyler:
Bağlam penceresini genişletmek yalnızca daha büyük matrislerle ilgili değildir. Geleneksel bir transformatörde, belirteçleri 8 kat genişletmek, dikkatin ikinci dereceden karmaşıklığı nedeniyle bellek ihtiyaçlarını 64 kat artırır. Aşağıdaki resme bakın! Peki, bunu nasıl yöneteceğiz? devam etmek... 👇
1) Seyrek Dikkat Dikkat hesaplamasını belirteçlerin bir alt kümesiyle şu şekilde sınırlar: - Yerel ilgiyi kullanmak (jetonlar yalnızca komşularıyla ilgilenir). - Modelin hangi belirteçlere odaklanacağını öğrenmesine izin vermek. Ancak bunun hesaplama karmaşıklığı ile performans arasında bir dengesi vardır.
Benzer bir fikir ModernBERT'te de kullanıldı. → Her üçüncü katmanda tam küresel dikkat → Yerel dikkat (128 jeton) aksi takdirde Sonuç: - 16 kat daha büyük dizi uzunluğu - Çok daha iyi performans - En çok bellek verimli kodlayıcı Basit ama güçlü.
İşte makaleden alınan sezgisel bir açıklama: Kendinizi bir kitap okurken hayal edin. Okuduğunuz her cümlenin çoğunu anlamak için olay örgüsünün tamamının farkında olmanız mı gerekiyor (tam küresel dikkat)? Yoksa ara sıra ana olay örgüsü (küresel dikkat) için önemini düşündüğünüz sürece, mevcut bölümün farkındalığı yeterli mi (yerel dikkat)? Vakaların büyük çoğunluğunda, ikincisidir.
2) Flaş Dikkat Bu, geleneksel dikkat mekanizmalarının kesinliğini koruyan, yani küresel dikkati verimli bir şekilde kullanan, hızlı ve bellek açısından verimli bir yöntemdir. Tüm fikir, GPU belleğindeki veri hareketini optimize etmek etrafında dönüyor. Hadi anlayalım!
Bazı arka plan ayrıntıları: - İş parçacığı en küçük yürütme birimidir. - Birkaç iş parçacığı bir blok oluşturur. De: - Bir bloktaki iş parçacıkları, SRAM adı verilen hızlı (ancak kıt) bir belleği paylaşır. - Tüm bloklar HBM (bol ama yavaş) adı verilen küresel bir belleği paylaşır. Bunu 👇 kontrol et
Dikkat, SRAM ve HBM arasında büyük matrisleri hareket ettirir: QK'yi hesaplamak için: - matrisleri iş parçacıklarına dağıtın - hesaplama ve - ürünü HBM'ye gönderin Softmax'ı hesaplamak için: - ürünü ipliklere dağıtın - hesaplama ve - çıktıyı HBM'ye gönder Tüm katmanlar için tekrarlayın. Bunu 👇 kontrol et
Flash dikkat, ara sonuçları önbelleğe almak için SRAM'ı kullandığı donanım düzeyinde optimizasyonları içerir. Bu şekilde, gereksiz hareketleri azaltır ve standart dikkat yöntemlerine göre 7,6 kata kadar hız sunar. Bunu 👇 kontrol et
3) DeepSeek Seyrek Dikkat (DSA) DeepSeek'in yeni V3.2 modeli, karmaşıklığı O(L²)'den O(Lk)'ya indiren DeepSeek Sparse Attention (DSA) özelliğini tanıtıyor; burada k sabittir. Nasıl çalışıyor: Hafif bir Lightning Indexer, her sorgu için hangi tokenların gerçekten önemli olduğunu puanlar. Az sayıda kafa, FP8'de çalışıyor, hesaplama açısından ucuz. Sonra bir seçim mekanizması yalnızca en üst-k anahtar değer girişlerini alır. Önemli bilgi, bağlam uzunluğu ne olursa olsun sorgu başına sadece 2048 token seçiliyor. Yani pahalı dikkat hesaplaması bu küçük alt küme üzerinde gerçekleşir, tam 128K dizisi değil.
128K bağlamda, ön doldurma maliyetleri milyon token başına ~$0.65'ten ~$0.35'e düşer. Ve Dekod fiyatı ~$2.4'ten ~$0.8'e düşüyor. Ve performans aynı kalıyor. Bazı uzun bağlamlı benchmarklarda V3.2 aslında daha yüksek puan alıyor. Az dikkat yeni bir şey değil. Ama kaliteyi kaybetmeden çalıştırmak zor. LLM'lerin bağlam uzunluğunu artırmak için başka hangi teknikler var?
229,12K