Grouped-Query Attention: Bellek Darboğazının Çözümü

389 kelime3 dk okuma

Grouped-Query Attention, sorgu kafalarını değiştirmeden anahtar ve değer kafalarını gruplar; her grup aynı anahtar-değeri paylaştığı için çıkarımda tutulan önbellek miktarı kafa sayısının çarpımı kadar azalır.

KV cache nedir?

Üretici bir dil modelinde üretim, her adımda bir sonraki token için token üretir. Her adımda tüm önceki tokenların temsili yeniden hesaplanmak yerine bellekte saklanır.

Bu saklanan bileşene anahtar-değer önbelleği denir. Anahtarlar sorgu kafalarından, değerler ise değer kafalarından üretilir; her katmanın kendi önbelleği vardır.

Bellek nasıl patlıyor?

Önbellek boyutu, katman sayısı, kafa sayısı, kafa boyutu ve bağlam uzunluğu ile çarpılarak büyür. Kafa sayısı arttıkça bu çarpım hızla büyür.

Uzun bağlamda model, hem büyük hem çok token içerdiğinde bellek tavanını aşar. Sonuç daha az eşzamanlı istek işlenebilmesi ve daha yüksek gecikmedir.

GQA fikri

GQA, sorgu kafalarını olduğu gibi bırakırken anahtar ve değer kafalarını gruplar. Her gruptaki tüm sorgu kafası aynı anahtar ve değere bakar.

Bu tasarım, sorgu ile anahtar-değer taraflarının öğrenme kapasitesindeki farkı göz önünde bulunduruyor. Çıkarımda sorgu yalnızca o an üretilen token için kullanıldığı için, anahtar-değer tarafındaki çeşitliliğin azaltılması kabul edilebilir oluyor.

Karma stratejiler

Uygulamada ara çözümler de kullanılıyor. Çoklu sorgu dikkatinde her sorgu kafası kendi anahtar-değerini paylaşır; GQA ise bunun daha agresif hâlidir.

Birçok modelde ayarlanabilir bir grup sayısı seçilir. Bu, tasarımcıya bellek ile kalite arasında ince ayar yapma imkânı veriyor.

Neden bu kadar önemli?

GQA, kaliteden belirgin biçimde ödün vermeden bellek kullanımını ölçekli biçimde azalttığı için uzun bağlamlı üretimi pratik hâle getiren bir değişiklik oldu.

Ayrıca sadece bellekle sınırlı değildir. Daha küçük önbellek, veri merkezinde daha fazla isteğin aynı anda işlenmesini sağlıyor; bu da çıktı hızını ve servis başına maliyet verimini iyileştiriyor.

  • KV cache, üretimde önceki tokenların temsillerini saklar
  • Kafa sayısı bellek tüketimini çarpımsal olarak artırır
  • GQA, k değer ve v kafalarını gruplayarak cache küçültür
  • Daha küçük cache, daha fazla eşzamanlı istek demektir

Sık sorulan sorular

KV cache neden bu kadar bellek yer?

Her katmanın ve her kafanın, bağlamdaki her token için bir anahtar ve bir değer saklaması gerekir. Bu miktar katman, kafa ve bağlam uzunluğu ile çarpılarak büyüyen bir toplamdır.

GQA kaliteyi düşürür mü?

Araştırmalar, sorgu tarafındaki çeşitliliği koruyup anahtar-değer tarafını azaltmanın kaliteyi önemli ölçüde düşürmediğini gösteriyor. Bu yüzden GQA modern modellerde yaygın olarak kullanılıyor.

GQA ve çoklu sorgu dikkati arasındaki fark nedir?

Çoklu sorgu dikkatinde her sorgu kafası kendi anahtar-değerine sahiptir. GQA da ise birden çok sorgu kafası aynı anahtar-değeri paylaşır; yani GQA daha agresif bir paylaşım stratejisi.

Sadece bellek mi kazandırır?

Hayır. Daha küçük önbellek, veri merkezinde daha fazla isteğin aynı anda işlenmesini sağlıyor. Bu da token başına çıktı ve servis başına maliyet verimini iyileştiriyor.

Kaynakça

  1. GQA: Training Generalized Multi-Query Transformer ModelsarXiv
  2. Fast Transformer Decoding: One Write-Head is All You NeedarXiv
  3. Transformer mimarisiWikipedia
  4. Dikkat mekanizmasıWikipedia
  5. Anahtar-değer deposuWikipedia

Bu konuyla ilgili haberler