Scegliere la quantizzazione (Q4, Q5, Q8, FP16)
Scegli Q4_K_M come impostazione predefinita: con 4,89 bit per peso, riduce la dimensione del modello di oltre un fattore tre rispetto al FP16, con una perdita di qualità contenuta. Passa a Q5_K_M o Q6_K se la memoria lo permette, a Q8_0 solo se ti resta spazio, ed evita di scendere sotto i 4 bit senza motivo. A determinare la scelta è la memoria disponibile: il file, il contesto e un margine devono rientrarvi.
Su Hugging Face come su Ollama, lo stesso modello esiste in decine di varianti: Q4_K_M, Q5_K_S, Q6_K, Q8_0, IQ3_XXS, FP16. Questa guida ti fornisce le dimensioni misurate, un calcolo per stimare la memoria di qualsiasi modello e una regola di decisione in base alla tua VRAM.
#Quantizzazione: a cosa rinunci in cambio di memoria
Un modello è un insieme di miliardi di numeri, i pesi. In FP16, ciascuno occupa 16 bit: un modello con 8 miliardi di parametri pesa circa 16 GB. La quantizzazione memorizza ogni peso usando meno bit. Secondo la documentazione dello strumento llama-quantize, questo processo riduce le dimensioni del modello e può accelerare l'inferenza, al prezzo di una perdita di precisione misurata in termini di perplessità o di divergenza di Kullback-Leibler. Il formato GGUF utilizzato da llama.cpp, Ollama e LM Studio riunisce queste varianti. La scelta giusta dipende da tre quantità: la memoria della tua scheda o del tuo Mac, le dimensioni del modello e il contesto che intendi utilizzare. Q4_K_M offre il miglior rapporto nella maggior parte dei casi, perché la perdita di qualità rimane bassa mentre le dimensioni scendono a circa il 30% di quelle in FP16.
#Decodificare i nomi: Q4_K_M, Q5_K_S, Q8_0, IQ3_XXS
Il tuo ChatGPT privato e gratuito sulla tua macchina in 1 ora — LM Studio, Ollama, Open WebUI, i tuoi documenti, senza cloud.
- Spazio online a vita
- PDF + file
- Aggiornamenti a vita
- Il numero (da Q2 a Q8)
- Il numero nominale di bit per peso. Il valore reale è più alto, perché i tensori sensibili vengono mantenuti a una precisione superiore: Q4_K_M misura 4,89 bit per peso.
- _0 e _1
- Formati vecchi, con precisione uniforme. Q8_0 viene ancora utilizzato per la quasi assenza di perdita, ma Q4_0 e Q5_0 sono stati sostituiti dalle varianti K.
- _K
- I K-quants, più recenti, distribuiscono i bit in base all'importanza dei tensori.
- S, M, L
- Small, Medium, Large: a parità di numero di bit, M conserva più bit sui tensori importanti rispetto a S, quindi pesa un po' di più e perde un po' meno.
- IQ
- Gli I-quants, basati su una matrice di importanza: a parità di dimensioni conservano meglio la qualità a precisioni molto basse (sotto i 4 bit) e richiedono un po' più di calcolo durante la decodifica. Si basano su un file imatrix.
#Tabella decisionale: dimensioni e perdite misurate
Il README di llama-quantize pubblica, per Llama 3.1 8B, il numero di bit per peso e la dimensione di ogni formato. La libreria Ollama mostra, per lo stesso modello, le dimensioni dei file distribuiti. Le due fonti concordano approssimativamente e forniscono un ordine di grandezza applicabile ad altri modelli della stessa famiglia.
| Formato | Bit per peso | Dimensione llama.cpp | Dimensione in Ollama | Perdita di perplessità a 7B | Uso tipico |
|---|---|---|---|---|---|
| Q2_K | 3,16 | 2,95 GiB | non elencato | +0,87 (perdita estrema) | Da evitare |
| Q3_K_M | 4,00 | 3,74 GiB | non elencato | +0,24 | Ultima risorsa |
| Q4_K_M | 4,89 | 4,58 GiB | 4,9 GB | +0,05 | Scelta predefinita |
| Q5_K_M | 5,70 | 5,33 GiB | 5,7 GB | +0,014 | Margine di VRAM disponibile |
| Q6_K | 6,56 | 6,14 GiB | 6,6 GB | +0,004 | Precisione massima ragionevole |
| Q8_0 | 8,50 | 7,95 GiB | 8,5 GB | +0,0004 | Riferimento quasi senza perdite |
| FP16 | 16,00 | 14,96 GiB | 16 GB | 0 | Addestramento, conversione |
Una precisazione sull'ultima colonna: le perdite in termini di perplessità provengono da una discussione nel repository llama.cpp che riporta la tabella di aiuto dello strumento, elaborata nel 2023 su un modello da 7 miliardi di parametri. Mostrano l'ordine dei formati, non il comportamento esatto dei modelli attuali, alcuni dei quali sono più sensibili.
#Calcolare la memoria di un modello in pochi secondi
La dimensione di un file GGUF si ottiene con la seguente formula: il numero di parametri espresso in miliardi, moltiplicato per i bit per peso e diviso per otto, dà la dimensione in gigabyte. Per un 70B in Q4_K_M: 70 × 4,89 ÷ 8 ≈ 42,8 GB, come confermato dalla tabella di llama.cpp per Llama 3.1 70B (43,1 GB). Aggiungi poi la cache KV, che cresce con il contesto, e un margine per il sistema.
| Modello | Q4_K_M | Q5_K_M | Q8_0 | FP16 |
|---|---|---|---|---|
| 8B | 4,9 | 5,7 | 8,5 | 16 |
| 14B | 8,6 | 10,0 | 14,9 | 28 |
| 32B | 19,6 | 22,8 | 34,0 | 64 |
| 70B | 42,8 | 49,9 | 74,4 | 140 |
#Come la quantizzazione influisce davvero sulla qualità
Le misure di perplessità classificano i formati in modo coerente: più bit, meno perdita. Ma la perplessità predice male le capacità specifiche. Uno studio pubblicato su arXiv a gennaio 2026 ha confrontato i formati di llama.cpp su Llama-3.1-8B-Instruct, con test di ragionamento, conoscenze e rispetto delle istruzioni: la perplessità su WikiText-2 va da 7,32 per FP16 a 8,96 per Q3_K_S, e gli autori osservano che la perplessità non è un predittore completo del comportamento nei compiti a valle. Il punteggio medio di Q5_0 nello studio supera persino leggermente quello di FP16 (69,92 % contro 69,47 %), un risultato dovuto al rumore di misura, non a un modello migliorato.
Il risultato utile riguarda il ragionamento matematico: su GSM8K, il punteggio passa da 77,63 in FP16 a 68,31 in Q3_K_S. Gli autori raccomandano di evitare la quantizzazione aggressiva a 3 bit e di preferire Q4_K_S o Q5_0 quando il carico di lavoro implica un ragionamento in più passaggi. I compiti che mettono per primi in difficoltà la quantizzazione sono quindi il calcolo, il codice e le lunghe catene di ragionamento, non la conversazione quotidiana.
- Da Q8 a Q6
- Differenza non misurabile in pratica nelle tabelle pubblicate.
- Da Q6 a Q4_K_M
- Perdita lieve, visibile soprattutto nei compiti che richiedono ragionamenti lunghi, nel codice e nelle lingue poco rappresentate.
- Sotto i 4 bit
- Netto calo delle capacità di ragionamento: da evitare se non per esigenze di memoria.
#Perché un file più piccolo consente anche una generazione più veloce
Le misurazioni del README di llama.cpp, effettuate su Llama 3.1 8B, illustrano un punto che le guide trascurano: la generazione del testo legge tutti i pesi attivi a ogni token, quindi dipende soprattutto dalla quantità di byte da leggere. In questa tabella, la velocità di generazione passa da circa 51 token al secondo in Q8_0 a circa 72 in Q4_K_M e a 90 in Q2_K_S. La lettura del prompt, invece, rimane stabile intorno a 800 token al secondo perché è limitata dal calcolo e non dalla memoria. Questi numeri provengono da uno specifico hardware riportato nel repository e non sono quelli della tua macchina; tieni presente la tendenza: meno bit, generazione più veloce.
Due conseguenze pratiche. Primo, passare da Q4_K_M a Q8_0 per ottenere un miglioramento impercettibile della qualità comporta una perdita di circa il 30% della velocità di generazione in queste misurazioni. Secondo, la quantizzazione dei pesi e quella della cache KV sono due impostazioni distinte: la seconda riduce la memoria necessaria per i contesti lunghi ed è trattata in una guida dedicata.
#Scegliere seguendo tre regole
- 01Parti dalla tua memoria disponibileVRAM di una scheda NVIDIA o AMD, oppure memoria unificata di un Mac meno circa il 25% riservato al sistema. Se il modello richiede più memoria di quella disponibile, parte del calcolo viene trasferita alla CPU e la velocità cala, spesso di diverse volte.
- 02Prendi il modello più grande che entra in memoria in Q4_K_MA parità di memoria, un modello più grande a 4 bit è generalmente migliore di uno più piccolo a 8 bit. È una regola empirica ampiamente condivisa, da verificare sulle tue attività, soprattutto per il codice.
- 03Aumenta poi la precisione sfruttando il margine rimanenteSe rimane della VRAM dopo aver riservato il contesto, passa a Q5_K_M, poi a Q6_K. Il guadagno è minore rispetto al passaggio da una dimensione del modello a quella successiva.
Le etichette della libreria Ollama indicano il formato e la dimensione di ogni variante; quando ometti il suffisso, Ollama applica l'etichetta predefinita del modello. Su Hugging Face, i nomi dei file GGUF includono il nome della quantizzazione.
#Gli I-quants e i formati inferiori a 4 bit
La tabella di llama.cpp permette di misurare il risparmio reale. Su Llama 3.1 8B, IQ4_XS pesa 4,17 GiB contro 4,58 GiB per Q4_K_M, cioè circa il 9% in meno; IQ3_XXS pesa 3,04 GiB; IQ2_XXS 2,23 GiB. Nelle misurazioni del repository, le velocità di generazione di questi formati rimangono vicine a quelle dei K-quants, con una differenza di pochi token al secondo: il costo aggiuntivo della decodifica è quindi modesto. Gli I-quants dipendono invece dalla qualità dell'imatrix e del modello: hanno senso solo quando Q4_K_M non rientra in memoria.
- IQ4_XS
- Dimensioni vicine a quelle di Q4_K_M, ma inferiori di circa il 9 %. Utile quando la VRAM è appena sufficiente.
- IQ3_XXS e IQ3_S
- Un modello 13B con circa 5 GB di pesi, con una perdita sensibile nelle capacità di ragionamento.
- IQ2 e IQ1
- Solo per modelli giganteschi, quando nessun'altra opzione entra in memoria. Con quantizzazioni di questo tipo, la fedeltà si misura: vedere l'esempio di Kimi K3, in cui la quantizzazione dinamica a 1 bit presenta solo il 78,9% di concordanza con l'originale.
#Modelli pubblicati direttamente in 4 bit
Alcuni modelli recenti non vengono più addestrati a 16 bit e poi compressi: i loro pesi vengono prodotti a 4 bit con un addestramento consapevole della quantizzazione. Kimi K3 ne è un esempio: la sua scheda indica pesi MXFP4 e attivazioni MXFP8, con quantization-aware training. Per questi modelli, il file nativo è già il riferimento, e un'ulteriore quantizzazione verso un formato a precisione inferiore degrada la qualità più della quantizzazione di un modello a 16 bit. Leggi sempre la scheda del modello prima di convertirlo.
#Che cosa scegliere in base alla memoria
| Memoria disponibile | Scelta ragionevole |
|---|---|
| Da 6 a 8 GB | 7-8B in Q4_K_M; IQ4_XS se non entra in memoria |
| 12 GB | 8B in Q6_K o Q8_0, o 14B in Q4_K_M (8,6 GB) |
| 16 GB | 14B in Q5_K_M (10 GB) con una finestra di contesto sufficientemente ampia |
| 24 GB | 32B in Q4_K_M (19,6 GB) con un contesto moderato |
| 32 GB | 32B in Q5_K_M (22,8 GB) o in Q6_K |
| 64 GB e oltre | 70B in Q4_K_M (42,8 GB) |
Che quantizzazione scegliere: Q4, Q5 o Q8?+
Che significato ha la M in Q4_K_M?+
Quanta VRAM serve per un modello in Q4_K_M?+
La quantizzazione degrada la qualità in francese?+
È meglio un 14B in Q4 o un 8B in Q8?+
Q8_0 è davvero senza perdita?+
#Per approfondire
- Q4_K_M, Q5_K_M e Q6_K in pratica
- Comprendere la finestra di contesto
- Quantizzare la cache KV: risparmiare VRAM
- GGUF, safetensors: capire i formati
- Calcolatore VRAM
- Fonte: README di llama-quantize (llama.cpp)
- Fonte: studio arXiv sulla quantizzazione llama.cpp (2026)
- Fonte: etichette Ollama di Llama 3.1
- Fonte: discussione su llama.cpp riguardo ai metodi di quantizzazione
Un feedback, un errore, una precisazione? Facci sapere, così la guida migliora per tutti.