Sobes.tech
Senior

KV keşi ölçüsünü necə kiçiltmək olar (GQA, MQA, sürüşən pəncərə)?

sobes.tech Süni İntellekt

AI-dan cavab

GKV-önbellek (Açar-Dəyər önbelleyi) GQA (Qruplu Sorğu Diqqəti), MQA (Çox-Sorğu Diqqəti) və sürüşən pəncərə kontekstində, müvəqqəti açarları və diqqət dəyərlərini saxlamaq üçün istifadə olunur və mətnin yaradılmasını sürətləndirir. GKV-önbelleyin ölçüsünü azaltmaq üçün aşağıdakı yanaşmalar tətbiq oluna bilər:

  • Sürüşən pəncərə: önbellekte yalnız son N tokeni saxlamaq, bütün tarixi yox. Bu, önbelleyin ölçüsünü məhdudlaşdırır və yaddaş istifadəsini azaldır.
  • GQA yerinə MQA: MQA bütün diqqət başlıqları üçün bir açar və dəyər istifadə edir, bu da GQA ilə müqayisədə önbelleyin ölçüsünü əhəmiyyətli dərəcədə azaldır, çünki GQA-da hər baş üçün ayrıca açar və dəyər saxlanılır.
  • KV-önbelleyin kvantlaşdırılması: açarları və dəyərləri sıxılmış formada saxlamaq, məsələn, aşağı dəqiqliklə (float16, int8), yaddaş həcmini azaltmaq üçün.
  • Əhəmiyyətsiz elementlərin silinməsi: önbelleyi mütəmadi olaraq təmizləmək və ya sıxışdırmaq, köhnə və ya daha az vacib elementləri çıxarmaq.

Sürüşən pəncərədən istifadə nümunəsi:

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

Bu metodların birləşməsi ilə, GKV-önbelleyin ölçüsü effektiv şəkildə azaldıla bilər və yaradılma keyfiyyətinə əhəmiyyətli təsir göstərməz.