Cache KV
La cache KV memorizza i vettori chiave e valore che un trasformatore ha già calcolato per i token precedenti, quindi non deve ricalcolarli per ogni nuova parola generata.
Panoramica
It is the single biggest reason text generation is fast — and the main thing eating your GPU memory during long conversations.
Immersione profonda
I trasformatori generano il testo un token alla volta e il livello di attenzione di ogni nuovo token deve essere confrontato con ogni token precedente. Il meccanismo di attenzione trasforma ogni token in un vettore di query, chiave e valore. Senza la memorizzazione nella cache, generare il token numero 1.000 significherebbe ricalcolare chiavi e valori per tutti i 999 token precedenti ad ogni passaggio: un lavoro quadratico e dispendioso. La cache KV salva i vettori di chiave e valore dopo che sono stati calcolati per la prima volta e li riutilizza, quindi ogni nuovo passaggio calcola solo i vettori per il singolo token più recente e si occupa della cache archiviata. Ciò riduce il costo per token dal ridimensionamento con la lunghezza della sequenza a un valore più o meno costante. Il compromesso è la memoria: la cache cresce linearmente con la lunghezza del contesto, il numero di livelli e i livelli di attenzione, diventando spesso il consumatore di memoria dominante nel servizio a contesto lungo.
Approfondimento tecnico
Durante la fase di 'prefill' il modello elabora l'intero prompt e riempie la cache; durante la "decodifica" aggiunge il K/V di un token per passaggio e ripete. La dimensione della cache viene scalata come 2 (K e V) × strati × teste × testa_dim × sequenza_lunghezza × batch, nella precisione scelta. Per mitigare questo problema, i modelli moderni utilizzano query raggruppate o attenzione multi-query per condividere chiavi/valori tra le teste, e sistemi di servizio come vLLM utilizzano PagedAttention per allocare la cache in blocchi non contigui, riducendo la frammentazione e gli sprechi.
Impatto strategico
Velocità e scala
I flussi di lavoro linguistici possono muoversi più velocemente senza sacrificare la coerenza.
Accedere e raggiungere
Espande l'accesso attraverso lingue e stili di comunicazione.
Decisioni più chiare
I team possono dedicare più tempo al giudizio mentre l'automazione gestisce la ripetizione.
Il futuro di KV Cache
Man mano che le finestre di contesto si estendono fino a centinaia di migliaia di token, la cache KV diventa il collo di bottiglia centrale, quindi l'innovazione è feroce: quantizzazione della cache a 8 o 4 bit, politiche di eliminazione che rilasciano token di bassa importanza, condivisione di prefissi a richiesta incrociata e scarico su CPU o disco. Cambiamenti architettonici come l'attenzione latente multi-testa comprimono la cache stessa. Aspettatevi una continua co-progettazione di varianti di attenzione e sistemi di memoria volti a servire contesti molto lunghi in modo economico e con un throughput elevato.
Implementazione nel mondo reale
Velocizzare le risposte del chatbot riutilizzando chiavi/valori memorizzati nella cache dalla cronologia delle conversazioni invece di rielaborarli ogni turno.
Caching del prefisso che condivide la cache per un lungo prompt di sistema tra più utenti, riducendo costi e latenza.
PagedAttention di vLLM gestisce la cache KV in blocchi per servire in modo efficiente molte richieste simultanee su una GPU.
Quantizzazione della cache KV per ridurre la precisione per adattare contesti più lunghi alla memoria limitata della GPU.
Rischi e guardrail
Fatti allucinati possono tranquillamente entrare nei rapporti, nei flussi di supporto o nei risultati della ricerca.
La sensibilità tempestiva può creare risultati incoerenti tra richieste simili.
I dati di testo sensibili potrebbero essere esposti se i controlli di accesso sono deboli.
Tabella di marcia per l'implementazione
Definisci il formato di output, il tono e gli standard di qualità prima dell'implementazione.
Risposte concrete con fonti attendibili ogni volta che la precisione è importante.
Mantenere un checkpoint di revisione umana per i risultati ad alto rischio.
Tieni traccia dei modelli di errore e riqualifica regolarmente le richieste o i flussi di lavoro.
Continua a esplorare
Free newsletter
Get the daily AI briefing
Three verified AI stories every weekday morning, written in plain English. Free forever, no ads.
One email each weekday. Unsubscribe in one click. We never sell or share your address.
Test yourself
Take the KV Cache quiz
Instant feedback on every answer, and a shareable certificate with a verifiable ID once you pass a course.
Support free AI education. AI Understanding is a 501(c)(3) nonprofit — no ads, no paywall, ever. Make a donation
Prossima guida
Ottimizzazione della cache KV
Domande frequenti
What is KV Cache?
La cache KV memorizza i vettori chiave e valore che un trasformatore ha già calcolato per i token precedenti, quindi non deve ricalcolarli per ogni nuova parola generata. È il motivo principale per cui la generazione del testo è veloce e la cosa principale che consuma la memoria della GPU durante le lunghe conversazioni.
Cosa memorizza la cache KV?
La cache KV contiene i vettori chiave e valore dei token precedenti in modo che l'attenzione possa riutilizzarli invece di ricalcolarli.
Quale problema risolve principalmente la cache KV?
Senza la memorizzazione nella cache, ogni nuovo token richiederebbe il ricalcolo K/V per ogni token precedente, il che è uno spreco; la cache rende il costo per token più o meno costante.
Qual è lo svantaggio principale della cache KV?
La cache cresce con la lunghezza della sequenza, i livelli e le teste, diventando spesso il consumatore dominante della memoria GPU nel servizio a lungo contesto.
Quale tecnica riduce la dimensione della cache KV condividendo chiavi e valori tra le teste di attenzione?
L'attenzione alle query raggruppate e alle query multiple consente a più teste di query di condividere meno set di chiavi/valori, riducendo sostanzialmente la cache.
Quali sono le due fasi di inferenza del trasformatore relative alla cache KV?
La precompilazione riempie la cache con il K/V del prompt; decode aggiunge un nuovo K/V del token a ogni passaggio e si occupa nuovamente della cache.