Sobes.tech
Senior

Come ridurre la dimensione della cache KV (GQA, MQA, finestra scorrevole)?

sobes.tech AI

Risposta dell'AI

La cache KV (Key-Value) nel contesto di modelli con GQA (Grouped Query Attention), MQA (Multi-Query Attention) e finestra scorrevole viene utilizzata per memorizzare chiavi e valori di attenzione intermedi, al fine di accelerare la generazione di testo. Per ridurre la dimensione della cache KV, si possono applicare i seguenti approcci:

  • Finestra scorrevole: memorizzare nella cache solo gli ultimi N token, invece di tutta la storia. Questo limita la dimensione della cache e riduce il consumo di memoria.
  • MQA invece di GQA: MQA utilizza una singola chiave e un singolo valore per tutte le teste di attenzione, riducendo significativamente la dimensione della cache rispetto a GQA, dove per ogni testa si memorizza una chiave e un valore separati.
  • Quantizzazione della cache KV: memorizzare chiavi e valori in forma compressa, ad esempio con precisione ridotta (float16, int8), per diminuire il volume di memoria.
  • Rimozione di elementi non rilevanti: pulire o comprimere periodicamente la cache, eliminando elementi obsoleti o meno importanti.

Esempio di utilizzo della finestra scorrevole:

window_size = 512  # numero di token nella cache
kv_cache = kv_cache[-window_size:]

In combinazione, questi metodi permettono di ridurre efficacemente la dimensione della cache KV senza perdita significativa della qualità della generazione.