
Definizione in una frase
Reutilización de prefijos de entrada ya procesados para reducir latencia o coste cuando el proveedor y la petición lo permiten.
Definizione: riutilizzare i calcoli non significa acquisire ricordi
Nell’intelligenza artificiale, la cache del contesto è un archivio temporaneo di risultati di elaborazione che un modello può riutilizzare per evitare di ricalcolare alcune parti di un input. Nei modelli linguistici, il termine indica spesso due meccanismi correlati, ma distinti: la cache KV, che conserva gli stati interni di attenzione durante la generazione, e la cache dei prefissi o dei prompt, che permette di sfruttare l’elaborazione di un inizio identico o corrispondente tra diverse richieste.
La parola «contesto» può trarre in inganno. In questo caso non significa che il sistema abbia incorporato informazioni nella propria conoscenza permanente, né che necessariamente ricordi una conversazione una volta terminata. Indica i dati che il modello elabora per rispondere e i risultati intermedi che un’implementazione può mantenere disponibili per un certo periodo. La cache riduce il lavoro ripetuto quando si verificano le condizioni adatte; di per sé non aggiunge nuove informazioni alla risposta.
Il meccanismo concreto dipende dal modello, dal runtime e dal servizio. Un’implementazione può mostrare metriche sull’uso della cache, offrire controlli per condividere o isolare determinati dati oppure non rendere visibile il meccanismo all’utente. Perciò «cache del contesto» è un’etichetta utile, ma è bene precisare quale tipo di cache si intende.
Come funziona la cache KV durante la generazione
Un modello autoregressivo genera il testo un token alla volta: a ogni passaggio predice il token successivo sulla base di quelli precedenti. Per calcolare l’attenzione, il modello produce rappresentazioni interne chiamate chiavi (key) e valori (value). La cache KV conserva i relativi tensori per i token già elaborati, così i passaggi successivi possono riutilizzarli invece di ricalcolare tutto dall’inizio.
In termini semplificati, il modello elabora il prompt, calcola gli stati necessari e memorizza le chiavi e i valori corrispondenti. Quando genera un nuovo token, calcola gli stati del nuovo passaggio e consulta anche quelli già conservati per i token precedenti. La cache cresce mentre la generazione prosegue, entro i limiti di memoria e in base alla strategia di gestione adottata dal sistema.
Questa descrizione riguarda il funzionamento generale, non una struttura identica in tutti i modelli. Esistono varianti della cache e diverse strategie per gestirla, mantenerla o collocarla a differenti livelli di memoria. In un servizio possono inoltre esserci meccanismi che riutilizzano blocchi tra richieste: non vanno automaticamente confusi con la cache KV di una singola sequenza.
Ciclo semplificato di una cache KV
- 01Il modello elabora il prompt e calcola gli stati interni di attenzione.
- 02L’implementazione conserva le chiavi e i valori dei token elaborati.
- 03Per generare il token successivo, il modello riutilizza quegli stati e calcola il nuovo passaggio.
- 04Il processo si ripete finché la generazione continua e ci sono risorse disponibili.
Cache dei prefissi: riutilizzo tra richieste
La cache dei prefissi o dei prompt sfrutta le parti iniziali che si ripetono in richieste diverse. Invece di ricalcolare l’elaborazione di un prefisso già disponibile nella cache, il sistema può riutilizzare i blocchi di stati KV associati a quel prefisso e riprendere il calcolo da lì. Per esempio, un server può applicare questa tecnica quando molte richieste condividono le istruzioni iniziali o una parte comune del contesto.
Per riutilizzare i dati deve esserci una corrispondenza sufficiente secondo le regole dell’implementazione. Nei sistemi che organizzano la cache in blocchi, il prefisso viene suddiviso in blocchi e si verifica se quelli precedenti corrispondono: non basta che due richieste riguardino lo stesso argomento. Differenze nel testo, nell’ordine o nella tokenizzazione possono impedire la corrispondenza. A seconda del sistema, possono influire anche altri elementi della configurazione.
La cache dei prefissi non significa che venga salvata una risposta da restituire così com’è. Si riutilizza l’elaborazione della parte condivisa dell’input; la nuova richiesta può comunque contenere elementi diversi e richiedere ulteriori calcoli. La corrispondenza, la disponibilità dei blocchi e le regole di scadenza o espulsione determinano se si ottiene un vantaggio.
Alcuni fornitori descrivono questa funzione con metriche specifiche, per esempio il numero di token di input elaborati dalla cache. Tali metriche e le condizioni di conservazione si riferiscono all’implementazione documentata: non vanno estese automaticamente ad altri fornitori o runtime.
Cosa viene riutilizzato e in quali situazioni
| Meccanismo | Cosa conserva o riutilizza | Uso tipico | Limite principale |
|---|---|---|---|
| Cache KV di una generazione | Chiavi e valori di attenzione dei token già elaborati | Proseguire una generazione un token alla volta | La sequenza e le risorse disponibili ne condizionano dimensioni e utilizzo |
| Cache dei prefissi o dei prompt | Stati KV di un prefisso corrispondente tra richieste diverse | Evitare di ricalcolare una parte ripetuta degli input | È utile solo se sono rispettate le regole di corrispondenza e i blocchi sono ancora disponibili |
| Memoria persistente di un’applicazione | Dati che il sistema decide di conservare per interazioni future | Recuperare preferenze o informazioni in un’altra sessione | È una funzione distinta, con regole di archiviazione proprie |
Tre esempi pratici
Gli esempi che seguono descrivono possibili utilizzi del meccanismo. Non garantiscono che una piattaforma specifica implementi la cache nello stesso modo o che produca sempre un miglioramento misurabile.
blocks
examples
Concetti spesso confusi
Cache e finestra di contesto non sono sinonimi. La finestra di contesto indica la quantità di informazioni che il modello può prendere in considerazione durante un’esecuzione, entro i limiti stabiliti dal modello o dal servizio. La cache è invece un meccanismo che conserva o riutilizza calcoli. Di per sé, una cache non amplia la finestra e non consente di includere più testo di quanto il sistema supporti.
Cache e memoria persistente sono concetti diversi. Una memoria dell’agente o dell’applicazione può conservare informazioni per recuperarle nelle interazioni successive, secondo le regole con cui è stata progettata. Una cache di elaborazione serve a riutilizzare risultati intermedi e può scomparire, scadere o essere espulsa. Anche se entrambe le funzioni possono comportare la memorizzazione temporanea di dati, hanno scopi diversi.
Neppure la cache KV e la cache dei prefissi descrivono esattamente la stessa operazione. La prima si riferisce in genere agli stati mantenuti durante la generazione di una sequenza; la seconda all’opportunità di sfruttare gli stati di un prefisso condiviso tra richieste. Un sistema di cache dei prefissi può basarsi su blocchi KV, ma l’estensione a più richieste introduce condizioni aggiuntive di corrispondenza, gestione e isolamento.
Infine, riutilizzare l’elaborazione non equivale a riutilizzare il testo come risposta già pronta. Se due richieste condividono un prefisso, la parte comune può sfruttare stati interni già calcolati. Ciò non implica che il testo di output sia stato salvato, che la nuova risposta sia identica a una precedente o che il modello abbia acquisito una comprensione aggiuntiva.
Limiti, privacy e gestione operativa
La cache non è illimitata. Gli stati KV occupano memoria e i sistemi di servizio devono gestire i blocchi che mantengono disponibili. Quando le risorse scarseggiano, un’implementazione può espellere dei blocchi o adottare altre strategie di gestione; quando arriva una nuova richiesta, una voce che prima poteva essere riutilizzata potrebbe non essere più disponibile. La durata effettiva e le regole di scadenza non sono universali.
Anche la corrispondenza è importante. Un prefisso simile per significato potrebbe non corrispondere ai fini della cache se la sequenza di token è diversa. Cambiamenti del modello, del modello di prompt o della configurazione possono modificare l’elaborazione o il modo in cui vengono rilevati i prefissi. Perciò non si deve dare per scontato che ripetere un’istruzione garantisca il riutilizzo.
Per valutare la privacy, occorre consultare la documentazione e la configurazione del sistema specifico. È utile verificare per quanto tempo i dati restano nella cache, come vengono isolate le richieste o gli utenti, se esistono controlli di partizionamento o invalidazione e quali metriche sono disponibili. Una cache condivisa tra richieste può sollevare questioni di isolamento; la documentazione di alcuni sistemi, per esempio, segnala rischi di canale laterale e descrive misure specifiche per mitigarli. Questo avvertimento non dimostra che tutti i servizi presentino lo stesso rischio, né che una determinata misura sia disponibile ovunque.
Anche le metriche vanno interpretate nel loro contesto. Un contatore dei token serviti dalla cache può descrivere il riutilizzo dell’input, ma da solo non permette di concludere quanto siano diminuiti il costo o la latenza. Questi risultati dipendono dall’API, dall’hardware, dal carico, dalla configurazione e dai criteri di fatturazione o misurazione. Le affermazioni quantitative devono essere ricondotte al fornitore e alle condizioni in cui sono state misurate.
Checklist per valutare una cache
- 01Stabilisci se si tratta di una cache KV per la generazione, di una cache dei prefissi tra richieste o di entrambe.
- 02Verifica quali elementi devono corrispondere perché gli stati possano essere riutilizzati e quali cambiamenti invalidano la corrispondenza.
- 03Controlla i limiti di memoria, la scadenza, l’espulsione e i controlli di isolamento descritti nella documentazione.
- 04Distingui le metriche dei token nella cache dalle misurazioni di latenza, costo o prestazioni.
- 05Consulta separatamente le politiche di conservazione della cache e quelle relative alla memoria conversazionale o all’archiviazione dell’applicazione.
Concetti correlati e criteri pratici
L’attenzione è il meccanismo del modello che mette in relazione le diverse parti della sequenza; chiavi e valori sono componenti interni utilizzati in questo calcolo. I token sono le unità di input e output con cui lavora il modello. L’inferenza è il processo in cui si usa il modello per produrre un risultato. La cache KV aiuta a evitare di ripetere parte del lavoro di attenzione, mentre la cache dei prefissi cerca di riutilizzare l’elaborazione di un input condiviso. Questi concetti sono collegati, ma non intercambiabili.
Quando leggi la documentazione o configuri un sistema, chiediti innanzitutto che cosa viene conservato: stati KV, un prefisso elaborato, testo della conversazione o un altro tipo di dato. Poi verifica in quale ambito opera la cache — una generazione, una sessione o più richieste —, quanto dura, che cosa rende valida una corrispondenza e come viene gestita la mancanza di memoria. Infine, distingui i dati misurati dalla piattaforma dalle aspettative: riutilizzare i calcoli può ridurre il lavoro ripetuto, ma il risparmio effettivo e la latenza dipendono dalle circostanze.
Come indicazione generale, se ti interessa proseguire una generazione token per token, cerca informazioni sulla cache KV e sulle relative strategie. Se più richieste condividono un lungo incipit, consulta la documentazione sulla cache dei prefissi e sulle sue regole di corrispondenza. Se invece vuoi che il sistema recuperi dati dell’utente tra sessioni diverse, cerca la funzione di memoria persistente o di archiviazione dell’applicazione: non dare per scontato che lo faccia la cache del contesto.
Un criterio rapido per orientarsi
| Esigenza | Concetto da consultare | Domanda pratica |
|---|---|---|
| Evitare di ricalcolare gli stati durante una generazione in corso | Cache KV | Quale strategia usa il runtime e quali limiti di memoria applica? |
| Riutilizzare un prefisso comune tra chiamate | Cache dei prefissi o dei prompt | Che cosa deve corrispondere e per quanto tempo restano disponibili i blocchi? |
| Recuperare preferenze o dati nelle sessioni future | Memoria persistente o archiviazione dell’applicazione | Che cosa viene conservato, chi può accedervi e come si elimina? |