Ollama va in out of memory: VRAM, context window e KV cache spiegati
- IlNegoziodiLuserna®

- 19 mag
- Tempo di lettura: 5 min
Ollama va in out of memory: VRAM, context window e KV cache spiegati
Benvenuti sul blog tecnico di IlNegoziodiLuserna®. L'esecuzione di Large Language Models (LLM) in locale tramite strumenti come Ollama è un'opportunità potente, ma spesso si scontra con un limite critico: il temuto erroreOut of Memory (OOM). Questo problema non è quasi mai dovuto a un singolo fattore, ma è il risultato di un'interazione complessa tra la dimensione del modello, la lunghezza del contesto richiesto e la gestione della cache interna della GPU.
Questo articolo analizza i meccanismi tecnici che portano all'OOM in Ollama, fornendo una diagnosi chiara basata sui componenti hardware e software che gestiscono la memoria.
Diagnosi rapida
Prima di modificare compulsivamente variabili d'ambiente o considerare un costoso upgrade hardware, è fondamentale capire cosa sta consumando esattamente la memoria.
Per ottenere una panoramica immediata dell'utilizzo delle risorse, è possibile utilizzare il comando da terminale `ollama ps`. Questo comando permette di visualizzare lo stato di esecuzione e l'utilizzo stimato in tempo reale diVRAM(memoria della GPU) eDRAM(memoria di sistema) per i modelli attualmente caricati.
�s�️ Attenzione:I dati di utilizzo sono fortemente specifici per il modello, il livello di quantizzazione e la singola sessione di inferenza.
Cause principali dell'OOM in Ollama
L'errore OOM in Ollama è generalmente riconducibile a tre macro-aree di consumo di memoria:
# 1. Dimensione del Modello e Quantizzazione (Model Weights)
La memoria richiesta per caricare i pesi del modello (iweights) è direttamente proporzionale alla dimensione del modello stesso e al suo formato di quantizzazione.
Impatto:Modelli con più parametri (es. 30B o 70B) richiedono drasticamente più VRAM.
Esempio pratico:Si è riscontrato che un modello come `glm-4.7-flash` può richiedere una quantità di memoria sensibilmente diversa rispetto a un modello come `qwen3:30b Q4K`, anche se entrambi sono considerati modelli "grandi" nella community (Fonte: GitHub Issue #13789).
Quantizzazione:La quantizzazione (es. passare da FP16 a Q4K) è la tecnica primaria per ridurre l'impronta di memoria dei pesi, ma non elimina il problema alla radice se il modello resta intrinsecamente troppo grande per la VRAM fisica disponibile.
# 2. Context Window e KV Cache
IlContext Windowdefinisce il numero massimo di token che il modello può "ricordare" durante una singola conversazione. Ogni token elaborato richiede spazio di memoria per la cosiddettaKey-Value (KV) Cache.
Come funziona:La KV Cache memorizza le rappresentazioni delle chiavi (Keys) e dei valori (Values) dei token già processati. Questo evita di dover ricalcolare questi pesanti vettori ad ogni nuovo token generato.
Dipendenza:La memoria occupata dalla KV Cache èdirettamente proporzionale alla dimensione del context windowrichiesto.
Stima:�^ stato osservato che con un contesto di 8192 token, la KV Cache può richiedere risorse significative (ad esempio, circa 1GB solo per la cache per `qwen3:30b Q4K` in determinate configurazioni) (Fonte: GitHub Issue #13789).
# 3. Gestione della Memoria (Memory Leakage)
In alcuni scenari specifici di stress test o utilizzo prolungato via API, è stato segnalato che Ollama potrebbe non liberare completamente la memoria utilizzata dai modelli dopo la generazione, portando a un esaurimento progressivo delle risorse (Fonte: GitHub Issue #10114).
Soluzioni operative
Affrontare l'OOM richiede un approccio stratificato: ottimizzazione del software, gestione oculata delle risorse e, se necessario, upgrade hardware.
# 1. Ottimizzare il Context Window
Non è sempre necessario impostare il contesto al massimo valore teorico supportato dal modello.
Azione:�^ possibile limitare esplicitamente la dimensione del contesto utilizzando la variabile d'ambiente `OLLAMA_CONTEXT_LENGTH`.
Risultato:Impostare `OLLAMA_CONTEXT_LENGTH` a un valore più contenuto (es. 4096 invece di 8192) ridurrà drasticamente la dimensione della KV Cache, mitigando immediatamente il rischio OOM (Fonte: Documentazione Ollama).
# 2. Quantizzazione della KV Cache
La precisione dei dati utilizzati per la cache può essere ridotta senza perdere prestazioni critiche in molti use-case.
Azione:Se supportato dalla versione del vostro framework, si può tentare di ridurre la precisione della KV Cache, passando da formati pesanti come `fp16` a formati quantizzati come `q8_0`. Questo riduce l'overhead di memoria senza compromettere in modo sensibile la qualità dell'inferenza testuale (Fonte: Hacker News).
# 3. Gestione dei Processi
Se si eseguono test di stress o si caricano più modelli contemporaneamente:
Monitorare:Usare costantemente `ollama ps` per vedere quali modelli sono attivi e quanto consumano in tempo reale.
Ciclo di vita:Assicurarsi che i processi precedenti o le chiamate API vengano terminati correttamente per permettere al sistema operativo di rilasciare la memoria associata.
Errori da non fare
Ignorare la Quantizzazione:Non dare per scontato che un modello caricato sia ottimizzato per la memoria. Verificare sempre se esistono versioni quantizzate (es. GGUF in Q4_K_M) adatte al proprio hardware.
Impostare Context Length troppo alto:Impostare `OLLAMA_CONTEXT_LENGTH` a valori massimi senza considerare la VRAM fisica disponibile è la causa più comune, e più facilmente risolvibile, di OOM.
Non monitorare:Eseguire carichi di lavoro pesanti senza monitorare l'utilizzo tramite `ollama ps` rende impossibile diagnosticare se il problema è un veroleakdi memoria o un semplicesizinginsufficiente della macchina.
Quando valutare hardware o consulenza
Se, dopo aver ottimizzato il contesto e aver applicato tutte le tecniche di quantizzazione possibili, l'OOM persiste in modo sistematico, significa che la richiesta di memoria del vostro workflow supera la capacità fisica del sistema.
In questi casi, è necessario valutare:
Aumento della VRAM:L'aggiornamento della GPU (o l'aggiunta di una seconda scheda) è la soluzione più diretta per gestire modelli più grandi o contesti più lunghi senza colli di bottiglia.
Memoria di Sistema (DRAM):Se il modello è configurato per utilizzare la DRAM come fallback, aumentare la RAM fisica può aiutare, sebbene al costo di una forte perdita prestazionale in token/s.
Architettura Avanzata:Per carichi di lavoro estremamente pesanti o per l'implementazione in azienda, potrebbe essere necessaria una consulenza per valutare soluzioni dimodel offloadingcomplesse o sistemi RAG ottimizzati.
FAQ
D: Come posso impostare il context window in Ollama?
R:�^ possibile impostare la dimensione del contesto definendo la variabile d'ambiente `OLLAMA_CONTEXT_LENGTH` a livello di sistema operativo o nel file di configurazione. Questo permette di limitare la memoria pre-allocata per la KV Cache (Fonte: Documentazione Ollama).
D: Quali modelli consumano più memoria a parità di contesto?
R:In generale, i modelli con un numero di parametri maggiore (es. 30B vs 8B) e che non sono stati quantizzati in modo aggressivo consumeranno più memoria di base. I dati specifici variano, ma è sempre consigliabile confrontare le dimensioni del file GGUF prima dell'avvio.
D: Come posso ridurre l'uso della KV cache se mi serve un contesto lungo?
R:Se il framework backend lo supporta, l'unica soluzione è quantizzare la cache stessa da formati in virgola mobile (`fp16`) a precisioni inferiori come `q8_0`.
Fonti Tecniche e Link Utili
Issue Ufficiale GitHub Ollama #13789:Discussione sul memory leak e sulle differenze di VRAM tra modelli.
Documentazione Ollama (FAQ):https://docs.ollama.com/faq(Per la gestione della variabile OLLAMA_CONTEXT_LENGTH).
Hacker News Tech Threads:Discussioni sulle best practice per la quantizzazione della KV Cache.
Approfondimenti e Hardware
Vuoi sconfiggere definitivamente i colli di bottiglia della VRAM? Su IlNegoziodiLuserna® trovi l'infrastruttura adatta per scalare i tuoi progetti AI:
Scegli una delle nostreGPU NVIDIA Data Center Usate(da 16GB a 24GB di VRAM).
Costruisci la tua infrastruttura con i nostri componenti perWorkstation Server Custom.
Leggi la nostra guida suCome scegliere le GPU usate per AI in locale sotto i 400.





Commenti