Quantizzazione: ottenere di più dallo stesso hardware

Hai una GPU con 16GB di VRAM e un modello da 14 miliardi di parametri che, a piena precisione, ne richiede circa 28. Il modello non c'entra. E invece sì: quasi sempre basta una quantizzazione per farlo girare, con una perdita di qualità che spesso non noti nemmeno.
La quantizzazione è la tecnica che rende possibile eseguire modelli grandi su hardware consumer. In questo articolo capisci cosa fa esattamente, dove perde qualità e come scegliere il livello giusto, con un esempio concreto su un modello reale.
Cos'è la quantizzazione
Un modello di linguaggio conserva i propri parametri come numeri. In addestramento li salva in alta precisione: tipicamente 16 bit (FP16) o 32 bit (FP32). Ogni parametro occupa 2 o 4 byte, e moltiplicato per miliardi di parametri la dimensione diventa enorme.
La quantizzazione riduce la precisione di quei numeri. Al posto di 16 bit per parametro ne usa, ad esempio, 4. Il file si fa più piccolo e, di conseguenza, entra in meno memoria e gira più veloce, perché la GPU legge meno dati dalla VRAM.
Nessun "modello più piccolo" viene addestrato: è lo stesso modello, gli stessi pesi, solo rappresentati con meno bit. È una compressione, non un'architettura diversa.
Perché la VRAM è il limite vero
La velocità di generazione dipende dalla banda di memoria: a ogni token, la GPU deve rileggere i pesi. Meno pesi, meno dati da spostare, più token al secondo. La quantizzazione vince quindi su due fronti:
- Memoria — il modello occupa meno VRAM, e ne resta di più per la cache di contesto.
- Velocità — a parità di GPU, il modello quantizzato genera più token al secondo.
Su una GPU con memoria limitata (12-16GB) è spesso la differenza tra "gira" e "non gira affatto".
I livelli: Q2, Q4, Q5, Q8
I file per l'inferenza locale sono quasi sempre in formato GGUF, lo standard de facto nato con llama.cpp. Il suffisso nel nome indica il livello di quantizzazione:
- FP16 — precisione completa. È il riferimento, ma il più grande.
- Q8_0 — 8 bit. Qualità praticamente indistinguibile da FP16.
- Q6_K — 6 bit. Ancora quasi identica, con file più contenuti.
- Q5_K_M — 5 bit. Ottimo compromesso qualità e ingombro.
- Q4_K_M — 4 bit. Lo standard de facto: la maggior parte dei setup locali parte da qui.
- Q3_K_M — 3 bit. Quando la VRAM è davvero poca.
- Q2_K — 2 bit. Estremo: la qualità degrada in modo percepibile.
La "K" sta per "K-quant", una famiglia di quantizzazione più sofisticata che distribuisce i bit in modo non uniforme, proteggendo i parametri più importanti. Per questo un Q4_K_M rende quasi sempre meglio di un Q4_0 a parità di bit.
Esempio concreto: Qwen2.5 14B
Prendiamo Qwen2.5-14B-Instruct, un modello da 14 miliardi di parametri molto usato in locale. Le dimensioni reali dei file GGUF ufficiali dal repository Hugging Face:
| Livello | Dimensione file | Qualità percepita |
|---|---|---|
| FP16 | ~28 GB | Riferimento |
| Q8_0 | ~15,7 GB | Quasi identica |
| Q6_K | ~12,1 GB | Quasi identica |
| Q5_K_M | ~10,5 GB | Eccellente |
| Q4_K_M | ~9,0 GB | Molto buona (lo standard) |
| Q3_K_M | ~7,3 GB | Buona, con cali su compiti difficili |
| Q2_K | ~5,7 GB | Povera, uso occasionale |
Su una GPU da 16GB (RTX 4060 Ti 16GB, RTX 5080), Q4_K_M lascia circa 7GB liberi per la cache di contesto, spazio per decine di migliaia di token. Su una GPU da 12GB (RTX 3060 12GB), Q4_K_M entra a stento con contesto breve, mentre Q5_K_M no: è il punto in cui il livello smette di essere una scelta estetica e diventa una necessità.
La regola pratica: parti da Q4_K_M, sali a Q5_K_M o Q6_K se la memoria c'è e ti serve più qualità, scendi a Q3_K_M solo se non c'è alternativa.
Come scegliere in pratica
- Parti dal modello che ti serve (vedi come scegliere il primo modello) e verifica quanti GB occupa in Q4_K_M.
- Confronta con la tua VRAM, tenendo da 2 a 4GB da parte per la cache di contesto.
- Se non entra, scendi un livello. Se entra con margine, valuta di salire.
- Prova. La qualità percepita dipende dal modello e dal compito: su riassunti di documenti Q3_K_M spesso basta; su ragionamento o codice, Q4_K_M in su.
Con Ollama il livello è implicito nel tag: ollama run qwen2.5:14b scarica la variante Q4_K_M, il default della libreria. Con llama.cpp o LM Studio scegli il file GGUF esplicitamente e hai il controllo totale.
I limiti da conoscere
- Non è gratis. Sotto Q4_K_M la perdita si fa reale, soprattutto su: codice, ragionamento a più passi, generazione in lingue diverse dall'inglese.
- Il contesto pesa. Un modello che "entra" a contesto breve può non entrare a contesto lungo, perché la cache di chiave-valore cresce con i token.
- Ogni modello reagisce diversamente. Un 7B in Q3_K_M può essere più utile di un 14B in Q2_K. La dimensione conta, ma la quantizzazione la modula.
In sintesi
La quantizzazione è il motivo per cui un 14B gira sul tuo 16GB. Capirla ti dà il controllo su un compromesso che altrimenti gestiresti a sentimento: qualità contro memoria e velocità. Parti da Q4_K_M, misura sulla tua VRAM e regola un livello alla volta.
Vuoi capire come questi numeri si traducono nella scelta di un modello per il tuo hardware? Prosegui con come leggere le specifiche di un modello e quando un modello grande non serve.
Articolo generato con IA
In questi percorsi
Ti è piaciuto questo articolo?
Iscriviti alla newsletter per ricevere nuovi tutorial e guide.
Articoli Correlati

Nemotron-Parse: la famiglia OCR di NVIDIA per leggere i documenti in locale
NVIDIA ha rieditato Nemotron Parse (v1.1, v1.2, 2.0) nella stessa settimana del 20 ottobre: meno di 1 miliardo di parametri, struttura della pagina inclusa. Setup in locale con vLLM e limiti onesti.

MiniCPM-V 4.7: il MoE da 35B che gira sullo smartphone con 3 GB di RAM
Il primo MoE open da 35B (3B attivi) che gira fluido su smartphone: 13+ tok/s con 3 GB di RAM su iPhone 17 Pro Max, OCR, video e GGUF Q4_K_M da 21,8 GB per il desktop. I numeri, le tre tecniche e i limiti.

