Sobes.tech
Senior

Ako zmenšiť veľkosť KV cache (GQA, MQA, posuvné okno)?

sobes.tech AI

Odpoveď od AI

KV-cache (Key-Value cache) v kontexte modelov s GQA (Grouped Query Attention), MQA (Multi-Query Attention) a posuvným oknom sa používa na ukladanie medzičasových kľúčov a hodnôt pozornosti, aby sa urýchlila generácia textu. Na zníženie veľkosti KV-cache možno použiť nasledujúce prístupy:

  • Posuvné okno: ukladať do cache iba posledných N tokenov, namiesto celej histórie. To obmedzuje veľkosť cache a znižuje spotrebu pamäte.
  • MQA namiesto GQA: MQA používa jeden kľúč a hodnotu pre všetky hlavy pozornosti, čo výrazne znižuje veľkosť cache v porovnaní s GQA, kde sa pre každú hlavu ukladajú samostatný kľúč a hodnota.
  • Kvantizácia KV-cache: ukladať kľúče a hodnoty v komprimovanej podobe, napríklad s nižšou presnosťou (float16, int8), aby sa znížila veľkosť pamäte.
  • Odstránenie nerelevantných prvkov: pravidelne čistiť alebo komprimovať cache, odstraňujúc zastarané alebo menej dôležité prvky.

Príklad použitia posuvného okna:

window_size = 512  # počet tokenov v cache
kv_cache = kv_cache[-window_size:]

Kombináciou týchto metód možno efektívne znížiť veľkosť KV-cache bez významnej straty v kvalite generovaného textu.