Il sito usa solo cookie tecnici necessari al funzionamento: nessun tracciamento, nessuna profilazione. Cookie Policy

Salta al contenuto
Tutti i termini

Cos'è la KV cache negli LLM?

La memoria che un LLM usa durante la generazione per non ricalcolare l'attenzione su tutti i token precedenti.

La KV cache è la struttura dati con cui un modello Transformer memorizza le proiezioni Key e Value dei token già elaborati durante la generazione autoregressiva, per non doverle ricalcolare a ogni nuovo token: il modello riusa quanto già calcolato e aggiunge solo il Key e il Value del token appena generato. Esiste per ogni singola richiesta, non è condivisa tra utenti diversi, e vive quanto dura la generazione di quella risposta: è un meccanismo interno del motore di inferenza, non una funzionalità che si attiva o disattiva a piacere. Va tenuta distinta dal prompt caching: quest'ultimo riusa il prefisso fisso di un prompt tra richieste diverse per risparmiare sul costo di elaborazione, mentre la KV cache esiste anche dentro una singola conversazione e non è una leva di pricing del provider, ma una struttura del motore che genera la risposta. Sono meccanismi imparentati, a volte combinati in produzione, ma governano problemi diversi.

Perché è il vero vincolo di memoria

La dimensione della KV cache cresce linearmente con la lunghezza del contesto e con il numero di richieste gestite in parallelo: ogni token aggiunto alla conversazione aggiunge il suo K e il suo V per ogni livello del modello. Quante copie servano per livello dipende dall'architettura di attenzione: i modelli recenti condividono K e V fra più teste (GQA), il che riduce la cache di un fattore che sui modelli diffusi va da quattro a otto volte rispetto a una copia per testa. Su un modello di grandi dimensioni, questo si traduce in gigabyte di memoria GPU occupati non dai pesi del modello, che restano fissi, ma dalle conversazioni attive in quel momento. È per questo che la KV cache, non i pesi, è spesso il fattore che decide quante richieste concorrenti un server può gestire con la stessa GPU: superata la capacità disponibile, il servizio deve mettere in coda le nuove richieste o rifiutarle.

L'esempio che i team enterprise sottovalutano

Raddoppiare la finestra di contesto di un assistente aziendale, per esempio per fargli leggere documenti più lunghi, non raddoppia solo la latenza percepita: raddoppia anche l'occupazione di memoria per ogni conversazione attiva, e quindi dimezza (a parità di hardware) quanti utenti lo stesso cluster GPU può servire in parallelo. Un team che dimensiona la capacità guardando solo ai pesi del modello e ignorando la KV cache scopre il problema in produzione, quando l'assistente inizia a rallentare o a rifiutare richieste nelle ore di picco, non durante i test con un utente solo.

Perché conta per chi decide

Capire la KV cache è il prerequisito per valutare tecniche di serving come il PagedAttention, che gestisce questa memoria a blocchi non contigui per ridurre lo spreco, e il continuous batching, che sfrutta la stessa struttura per far entrare e uscire richieste dal batch senza aspettare che tutte finiscano insieme. Chi valuta un motore di inferenza o dimensiona una flotta GPU per un'applicazione AI non sta scegliendo solo un modello: sta scegliendo quanto efficientemente quella memoria verrà gestita, ed è lì che si gioca buona parte del costo per utente servito.

Fonti: Sebastian Raschka, Understanding and Coding the KV Cache in LLMs from Scratch; documentazione tecnica vLLM su PagedAttention e continuous batching.

Domande frequenti

Non per il dimensionamento hardware, di cui si occupa il provider, ma la KV cache spiega comunque perché la latenza cresce con la lunghezza della conversazione e perché alcuni provider fatturano o limitano diversamente le richieste con contesto molto lungo: è il motivo tecnico dietro un comportamento che altrimenti sembra arbitrario.

Le più diffuse sono la quantizzazione della cache stessa (memorizzare Key e Value a precisione ridotta) e varianti architetturali come multi-query o grouped-query attention, che condividono Key e Value tra più teste di attenzione invece di duplicarli, riducendone l'ingombro a monte.
  • Inferenza · L'uso di un modello AI già addestrato per produrre risposte: ogni domanda a ChatGPT è inferenza, ed è dove oggi si concentrano i costi.
  • Prompt caching · Riutilizzo della parte fissa del prompt tra una richiesta e l'altra: il modello non la rielabora da zero e i costi crollano.
  • AI tokenomics · L'economia dei token AI: cosa costa davvero l'inferenza, come si misura (costo per milione di token) e come si tiene sotto controllo.
  • vLLM, SGLang e llama.cpp · vLLM per il throughput su GPU, SGLang per le richieste che condividono il contesto, llama.cpp per CPU ed edge.
  • TurboQuant · Algoritmo di Google Research che comprime la KV cache a circa 3 bit per coordinata, senza addestramento.

Un termine che ti riguarda da vicino? Parliamone.

CONTATTAMI