Sobes.tech
Senior

Cum se reduce dimensiunea cache-ului KV (GQA, MQA, fereastră glisantă)?

sobes.tech AI

Răspuns de la AI

Cache-ul KV (Key-Value) în contextul modelelor cu GQA (Grouped Query Attention), MQA (Multi-Query Attention) și fereastră glisantă este utilizat pentru stocarea cheilor și valorilor de atenție intermediare, pentru a accelera generarea de text. Pentru a reduce dimensiunea cache-ului KV, se pot aplica următoarele abordări:

  • Fereastră glisantă: păstrați în cache doar ultimele N token-uri, în loc de întreaga istorie. Acest lucru limitează dimensiunea cache-ului și reduce consumul de memorie.
  • MQA în loc de GQA: MQA utilizează o singură cheie și o singură valoare pentru toate capetele de atenție, ceea ce reduce semnificativ dimensiunea cache-ului comparativ cu GQA, unde pentru fiecare cap se păstrează o cheie și o valoare separate.
  • Quantizarea cache-ului KV: păstrați cheile și valorile în formă comprimată, de exemplu, cu precizie redusă (float16, int8), pentru a diminua volumul de memorie.
  • Eliminarea elementelor nerelevante: curățați sau comprimați periodic cache-ul, eliminând elementele învechite sau mai puțin importante.

Exemplu de utilizare a ferestrei glisante:

window_size = 512  # numărul de token-uri în cache
kv_cache = kv_cache[-window_size:]

Prin combinarea acestor metode, se poate reduce eficient dimensiunea cache-ului KV fără a afecta semnificativ calitatea generării.