Come eseguire LLM in locale: hardware, VRAM e basi di performance
Eseguire un Large Language Model (LLM) in locale significa avere un assistente AI che gira sul tuo PC o server, senza inviare i prompt a servizi cloud. Il vantaggio è chiaro: più controllo su dati e costi, e spesso latenza più bassa. Il rovescio della medaglia è che devi capire bene hardware, VRAM/RAM, quantizzazione e throughput per ottenere prestazioni accettabili. In questa guida trovi una base solida (e pratica) per scegliere la configurazione giusta e stimare cosa aspettarti.
Perché far girare un LLM in locale (e quando non conviene)
Vantaggi principali
- Privacy e compliance: i dati restano in casa (utile per documenti interni e PII).
- Costi prevedibili: niente consumo a token o abbonamenti per uso intensivo.
- Personalizzazione: più libertà su modelli, prompt, RAG e fine-tuning leggero.
Limiti tipici
- VRAM/RAM: il collo di bottiglia più comune.
- Velocità: su CPU o GPU entry-level, i token/secondo possono essere bassi.
- Setup e manutenzione: driver, runtime, formati modello, aggiornamenti.
Concetti base: parametri, token e memoria
Parametri del modello: cosa indicano davvero
La “taglia” di un LLM è spesso espressa in miliardi di parametri (es. 7B, 13B, 70B). Più parametri = potenzialmente più qualità, ma più memoria e calcolo.
In prima approssimazione, la memoria per pesi dipende da quanti byte usi per parametro:
- FP16: ~2 byte/parametro
- INT8: ~1 byte/parametro
- INT4: ~0,5 byte/parametro Questa è una semplificazione utile per farti un’idea. Nella pratica entrano anche overhead, KV cache e gestione dei tensori. Il tema della quantizzazione (INT8/INT4) è centrale proprio perché riduce drasticamente la memoria necessaria.
Token: input e output sono “pezzi” di testo
Gli LLM non leggono caratteri ma token. Per l’italiano, una stima rozza è:
-
1 token ≈ 3–4 caratteri medi (varia moltissimo) Le prestazioni si misurano spesso in:
-
token/s (generazione)
-
time-to-first-token (TTFT): quanto aspetti prima di vedere il primo token
VRAM e RAM: la differenza (e perché la VRAM è la risorsa critica)
VRAM (GPU)
La VRAM è memoria molto veloce e vicina alla GPU. Se i pesi del modello e la KV cache stanno in VRAM, ottieni throughput molto più alto.
RAM (CPU)
La RAM è più capiente e più economica, ma più lenta. Puoi far girare modelli in RAM (CPU inference) oppure usare offloading (parte su GPU, parte su CPU). Funziona, ma il bus (PCIe) e la latenza impattano.
KV cache: memoria che cresce con il contesto
Durante la generazione, il modello mantiene una cache (KV) che aumenta con:
- lunghezza del contesto (es. 4k, 8k, 16k token)
- dimensione del modello
- batching e numero di conversazioni simultanee In pratica: anche se il modello “entra” in VRAM, potresti saturarla quando aumenti il contesto o apri più sessioni.
Quantizzazione: come far “entrare” un modello nella tua macchina
La quantizzazione riduce precisione dei pesi per diminuire memoria e, spesso, aumentare velocità.
Quantizzazioni comuni (idea generale)
-
8-bit: buon compromesso qualità/memoria
-
4-bit: ottimo per far girare modelli grandi su GPU consumer; qualità spesso sorprendentemente buona per chat e Q&A Molti flussi locali usano formati e tool ottimizzati per inference con quantizzazione, come:
-
llama.cpp e derivati (CPU/GPU), progetto molto diffuso per inference locale con modelli tipo Llama e compatibili, secondo llama.cpp
-
stack di esecuzione per GPU NVIDIA con kernel ottimizzati, ad esempio tramite ecosistemi citati nella documentazione di NVIDIA TensorRT-LLM
Stima pratica: quanta VRAM serve?
Non esiste una tabella universale (dipende da architettura, formato, contesto, runtime), ma queste linee guida sono utili per orientarti.
Regola “da tavolo” per i pesi
-
7B in 4-bit: tipicamente gestibile su 8 GB VRAM in molte configurazioni, con attenzione a contesto e overhead
-
13B in 4-bit: spesso più comodo con 12–16 GB VRAM
-
30–34B in 4-bit: di solito 24 GB VRAM è una soglia realistica per evitare troppo offload
-
70B in 4-bit: spesso richiede multi-GPU o offloading pesante, oppure CPU/RAM molto generosa Perché “tipicamente”? Perché l’uso reale dipende molto da:
-
contesto (4k vs 16k)
-
implementazione della KV cache
-
attivazioni e buffer del runtime
-
parallelismo e batch
Consiglio pratico
Se sei all’inizio, punta a una configurazione che non stia al limite: lascia 10–20% di VRAM libera per stabilità e per contesti più lunghi.
CPU, GPU e storage: cosa conta davvero per la velocità
GPU: il fattore principale per token/s
Per inference LLM, una GPU con:
- molta VRAM
- buona banda memoria
- kernel ottimizzati (CUDA/ROCm) …di solito batte la CPU di molto.
CPU: importante per TTFT e per pipeline/RAG
La CPU conta per:
-
pre/post-processing
-
tokenizzazione
-
retrieval (ricerca su vettori) se fai RAG
-
esecuzione totale se non hai GPU Se fai CPU-only, cerca:
-
alta frequenza single-core e buoni AVX/AMX (dipende dalla piattaforma)
-
molta RAM
Storage: evita colli di bottiglia banali
Un SSD NVMe aiuta soprattutto per:
- caricamento modello
- indicizzazione e ricerca documentale Non aumenta direttamente i token/s, ma riduce tempi morti e rende l’esperienza più fluida.
Leve principali per migliorare le performance
1) Riduci il contesto quando puoi
Se non ti serve 16k token, restare a 4k–8k riduce memoria e spesso migliora velocità.
2) Usa quantizzazione adeguata
- Parti da 4-bit per massimizzare compatibilità con GPU consumer.
- Se noti cali qualitativi su task specifici (ragionamento, estrazione), prova 8-bit.
3) Limita la lunghezza di output
Imposta max_tokens o limiti simili. Output lunghi moltiplicano i costi.
4) Scegli runtime ottimizzato per il tuo hardware
- Per compatibilità ampia e semplicità: soluzioni basate su llama.cpp (CPU/GPU) secondo llama.cpp
- Per pipeline NVIDIA e ottimizzazioni avanzate: riferimenti e implementazioni in TensorRT-LLM
5) Offloading intelligente
Se la VRAM non basta:
- offloada parte dei layer su CPU/RAM
- accetta una riduzione di throughput, ma ottieni stabilità e modelli più grandi
Configurazioni consigliate (per profili)
Profilo A: “Starter” (chat locale e piccoli progetti)
- GPU: 8–12 GB VRAM
- RAM: 16–32 GB
- Target: modelli 7B (4-bit) e alcuni 13B leggeri




