La memoria dell’attenzione può superare quella dei parametri del modello perché i pesi rimangono fissi, mentre le cache, le attivazioni e gli spazi di lavoro dipendenti dai token crescono con il contesto e la concorrenza.
Un modello quantizzato può rientrare comodamente nella RAM o nella VRAM di un server domestico, ma prompt lunghi, diversi utenti della famiglia, input multimodali o batch di grandi dimensioni possono comunque causare pressione sulla memoria. Il file del modello descrive i pesi persistenti, non l’intero insieme di memoria di lavoro necessario per l’inferenza. L’attenzione crea uno stato specifico per ogni richiesta e per ogni token conservato e può richiedere buffer temporanei il cui picco dipende dal runtime. Le sezioni seguenti distinguono la memoria fissa dei parametri dalla memoria dipendente dalla sequenza e individuano quando quest’ultima diventa il vero limite di capacità.
I parametri del modello formano una base fissa dopo il caricamento
I pesi del modello occupano una quantità di memoria prevedibile una volta noti il loro numero e il formato numerico. Un modello a quattro bit utilizza meno spazio per i parametri rispetto a una versione a otto bit o in virgola mobile, anche se i metadati del runtime e i fattori di scala aggiungono un certo overhead.
L’architettura Transformer utilizza gli stessi parametri appresi per un prompt breve e per uno lungo. L’impronta dei parametri non raddoppia semplicemente perché l’utente aggiunge più contesto.
Questa base fissa spiega perché le dimensioni del file del modello siano utili per una prima verifica di compatibilità. Non rappresentano però una stima completa della memoria di picco necessaria per l’inferenza.
L’attenzione completa può creare un lavoro intermedio proporzionale al quadrato della sequenza
L’autoattenzione convenzionale confronta tra loro le posizioni dei token. Se un’implementazione materializza grandi matrici di punteggi e probabilità dell’attenzione, le loro dimensioni crescono con il quadrato della lunghezza della sequenza.
FlashAttention identifica la memoria quadratica dell’attenzione come un problema centrale per le sequenze lunghe ed evita di memorizzare l’intera matrice calcolando l’attenzione a blocchi.
I moderni kernel di inferenza ottimizzati possono quindi utilizzare molta meno memoria temporanea rispetto a quanto suggerito dalla formula ingenua. Il lavoro di attenzione sottostante diventa comunque più complesso con l’aumentare della lunghezza delle sequenze, ma la scelta dell’implementazione determina se la matrice completa proporzionale al quadrato della sequenza viene creata nella memoria del dispositivo.
Lo spazio di lavoro di picco può inoltre cambiare in base alla versione del kernel, alla forma del batch, alla dimensione delle teste e all’eventuale ricorso del runtime a un percorso di attenzione meno efficiente.
La cache KV aggiunge uno stato persistente per ogni token conservato
La generazione autoregressiva memorizza chiavi e valori dei token precedenti, così il modello non deve ricalcolare l’intero prefisso prima di generare ogni token successivo.
PagedAttention considera la crescita della cache KV un vincolo primario per la memoria necessaria al serving. La sua capacità aumenta in base ai token conservati, ai livelli che producono la cache, alle dimensioni chiave-valore, alla precisione e alle sequenze attive.
A differenza di una matrice di attenzione temporanea, questo stato deve rimanere disponibile per tutta la durata della conversazione attiva. Un contesto lungo può quindi continuare a consumare memoria anche mentre il modello produce un solo nuovo token alla volta.
La spiegazione di ZimaSpace sul margine di memoria per l’IA distingue lo spazio per il modello dalla capacità aggiuntiva richiesta dal contesto e dagli utenti simultanei.
Le richieste simultanee moltiplicano lo stato dinamico dell’attenzione
Diversi utenti possono condividere una sola copia dei pesi del modello, ma i loro prompt privati, i token generati e i rami della cache KV normalmente rimangono separati.
vAttention utilizza l’allocazione dinamica della memoria fisica perché la lunghezza delle richieste e i tempi di completamento non sono noti all’inizio del serving.
Un server che gestisce una conversazione da 32.000 token potrebbe non riuscire a gestirne contemporaneamente quattro della stessa lunghezza. La dimensione del batch e il numero di utenti moltiplicano lo stato dipendente dai token, anche se il totale dei parametri del modello rimane invariato.
La condivisione dei prefissi può ridurre la duplicazione quando le richieste hanno un prefisso memorizzato identico, ma le conversazioni familiari divergenti richiedono comunque uno stato di continuazione indipendente.
Le attivazioni e le prenotazioni del runtime aumentano ulteriormente il picco
Il prefill del prompt, la proiezione multimodale, la decodifica speculativa, la cattura dei grafi, la conversione temporanea dei tensori e gli spazi di lavoro delle librerie possono allocare memoria oltre a quella occupata dai pesi e dalla cache KV.
FlashAttention-2 osserva che l’attenzione rimane un collo di bottiglia per le sequenze lunghe anche quando kernel migliori eliminano grandi intermedi materializzati.
Gli allocatori con caching dei framework possono conservare per il riutilizzo i blocchi rilasciati, quindi gli strumenti del dispositivo possono mostrare un’impronta di memoria del processo elevata dopo il completamento di una richiesta di picco. Questa prenotazione è diversa dalla memoria dei tensori attivi, ma limita comunque un altro processo.
La memoria massima osservata può quindi verificarsi durante il prefill o il cambio di modello, anziché durante la decodifica stabile di un token alla volta.
Le ottimizzazioni dell’attenzione spostano il limite senza eliminarlo
Flash Attention riduce l’I/O temporaneo e la memorizzazione delle matrici, l’allocazione a pagine riduce la frammentazione della cache KV, una precisione inferiore della cache riduce i byte per token e l’attenzione a query raggruppate utilizza meno teste chiave-valore.
L’attenzione a query raggruppate riduce la memoria delle teste chiave-valore, mantenendo più capacità rispetto a una singola testa multi-query.
Finestre scorrevoli, espulsione dalla cache, offload e recupero possono limitare o spostare lo stato dell’attenzione, ma ciascuna tecnica modifica la latenza, il contesto accessibile o il comportamento delle risposte.
È necessario eseguire benchmark sul carico di lavoro completo previsto: precisione del modello, lunghezza effettiva del prompt, limite di output, dimensione del batch, numero di utenti, token visivi e altri servizi locali. La memoria dell’attenzione ha superato quella dei parametri quando ridurre lo stato dei token o la concorrenza ripristina la stabilità senza modificare i pesi del modello.
Domande frequenti
La memoria dell’attenzione supera sempre quella dei pesi del modello?
No. I prompt brevi con un solo utente lasciano spesso i pesi come componente dominante. Lo stato dell’attenzione diventa dominante solo quando il contesto, il batching o la concorrenza superano una soglia specifica del modello e del runtime.
FlashAttention elimina la memoria della cache KV?
No. Riduce il calcolo dell’attenzione e il traffico di memoria temporaneo. Il serving autoregressivo richiede comunque lo stato conservato di chiavi e valori, a meno che il runtime non lo ricalcoli, lo elimini o lo trasferisca altrove.
La RAM di sistema può risolvere una carenza di memoria per l’attenzione?
Può supportare l’inferenza su CPU o l’offload nei runtime compatibili, ma trasferire lo stato attivo attraverso un collegamento più lento può aumentare la latenza e ridurre la velocità di output.
Hub Tecnologico e AI
Altro da leggere

Perché le previsioni della casa intelligente diventano meno accurate dopo i cambiamenti stagionali delle abitudini?
Le routine stagionali cambiano il rapporto tra tempo, sensori, presenza e azioni desiderate, rendendo obsoleto un modello addestrato su abitudini precedenti.

Perché un NVR domestico perde gli eventi brevi quando il rilevamento degli oggetti è attivato?
Il tracciamento necessita di un numero sufficiente di rilevamenti per avviare e confermare una traiettoria, quindi un oggetto che compare solo per poco tempo...

Perché le etichette delle foto generate dall’IA cambiano dopo un aggiornamento del modello?
Un aggiornamento del modello modifica la rappresentazione e la classificazione utilizzate per assegnare le etichette, quindi la stessa foto può oltrepassare confini semantici o...

