Sobes.tech
Senior

KV önbelleği boyutunu nasıl küçültebilirim (GQA, MQA, kaydırıcı pencere)?

sobes.tech yapay zeka

AI'dan gelen yanıt

GKV-önbellek (Key-Value cache), GQA (Grouped Query Attention), MQA (Multi-Query Attention) ve kaydırmalı pencere bağlamında, ara anahtarlar ve dikkat değerlerini depolamak için kullanılır ve böylece metin üretimini hızlandırır. GKV önbellek boyutunu azaltmak için aşağıdaki yaklaşımlar uygulanabilir:

  • Kaydırmalı pencere: önbellekte yalnızca son N tokeni tutmak, tüm geçmişi değil. Bu, önbelleğin boyutunu sınırlar ve bellek kullanımını azaltır.
  • GQA yerine MQA: MQA, tüm dikkat başlıkları için tek bir anahtar ve değer kullanır, bu da GQA’ya kıyasla önbellek boyutunu önemli ölçüde azaltır; çünkü GQA’da her başlık için ayrı anahtar ve değer saklanır.
  • GKV önbelleğinin kuantizasyonu: Anahtarlar ve değerler sıkıştırılmış biçimde saklanabilir, örneğin, düşük hassasiyetle (float16, int8), böylece bellek hacmi azaltılır.
  • İlgisiz öğelerin kaldırılması: Önbelleği periyodik olarak temizlemek veya sıkıştırmak, eski veya önemsiz öğeleri kaldırmak.

Kaydırmalı pencere kullanımına örnek:

window_size = 512  # önbellekteki token sayısı
kv_cache = kv_cache[-window_size:]

Bu yöntemlerin kombinasyonu ile, GKV önbellek boyutu etkili biçimde azaltılabilir ve üretim kalitesi önemli ölçüde etkilenmez.