La quantizzazione
Ridurre la precisione dei numeri per far entrare un modello da miliardi di parametri in un portatile. Quanto si perde davvero, e dove conviene fermarsi.
Il video parte solo se lo chiedi: nessuna richiesta a YouTube prima del click.
È come ridurre la risoluzione di una foto. In 4K è perfetta e pesa moltissimo; in 1080p la differenza è quasi impercettibile e lo spazio si dimezza; a 720p qualcosa si nota ma resta ottima; a 480p il degrado si vede, però il file è minuscolo.
La quantizzazione fa questo con i pesi del modello: riduce la precisione con cui ogni numero è memorizzato.
Il conto è semplice
I pesi sono miliardi di numeri con la virgola. Nel formato originale ognuno occupa 32 bit, cioè 4 byte.
| Formato | Bit per peso | Valori rappresentabili |
|---|---|---|
| Float32 | 32 | circa 4 miliardi |
| Float16 | 16 | circa 65.000 |
| Int8 | 8 | 256 |
| Int4 | 4 | 16 |
Da qui la formula che serve davvero: parametri × bit ÷ 8 = byte. Un modello da 8 miliardi di parametri occupa circa 32 GB in float32, 16 GB in float16, 8 GB a 8 bit e poco più di 4 GB a 4 bit. È la differenza fra “non entra” e “gira bene” su una macchina normale.
Quanto si perde
Molto meno di quanto suggerirebbe il dimezzamento dei bit, ed è il motivo per cui questa tecnica ha avuto tanto successo. Passando da 16 a 8 bit la perdita di qualità è generalmente trascurabile. A 4 bit c’è un degrado misurabile ma contenuto, quasi sempre accettabile. Sotto i 4 bit il calo diventa evidente e il modello inizia a sbagliare in modo visibile.
C’è però un principio che vale più di ogni tabella: un modello grande e molto quantizzato batte quasi sempre un modello piccolo e poco quantizzato, a parità di memoria occupata. Fra un 14B a 4 bit e un 8B a 8 bit — entrambi intorno agli 8 GB — conviene di norma il primo.
Le sigle che trovi in giro
Scaricando modelli incontri nomi come Q4_K_M, Q5_K_S, Q8_0. La lettera Q e il numero
dicono i bit; le lettere finali indicano la variante e la dimensione del blocco di
quantizzazione. Nella pratica Q4_K_M è il punto di equilibrio più consigliato, e
Q5_K_M è il passo successivo se la memoria abbonda.
Il formato di file più diffuso per l’uso locale è GGUF: un unico file che contiene pesi e metadati, ed è quello che usano gli strumenti di cui parliamo nella sezione Setup Locale.
Vale la pena sapere che non tutti i pesi vengono trattati allo stesso modo: le tecniche moderne lasciano a precisione più alta le parti del modello che soffrono di più, ed è questo che rende il degrado così contenuto.
Comprimere anche la cache, non solo i pesi
Tutto quello detto finora riguarda i pesi. C’è però una seconda voce che occupa memoria durante l’uso e cresce con la conversazione: la cache delle chiavi e dei valori. Su contesti lunghi può pesare quanto il modello, a volte di più.
Si può quantizzare anche quella.
Modello 8B a 4 bit ~4,5 GB costante
Cache a 16 bit ~2 GB su 8k di contesto, e cresce
Cache a 8 bit ~1 GB stessa conversazione, metà memoria
La regola pratica che emerge dall’uso: 8 bit sulla cache è quasi gratis in termini di qualità e libera memoria utile; scendere a 4 si sente, soprattutto sui contesti lunghi dove gli errori si accumulano. È la leva giusta quando il modello entra in memoria ma la conversazione lunga fa rallentare tutto: non serve scendere di taglia, basta comprimere la cache.
Come si misura davvero il degrado
La domanda “quanto perdo” viene di solito liquidata con un indice statistico che misura quanto il modello è “sorpreso” da un testo di riferimento. È comodo da calcolare ed è fuorviante se usato da solo: fra 8 e 4 bit quell’indice si muove pochissimo, mentre sui compiti che richiedono precisione — seguire un formato rigido, non perdere un vincolo, scrivere codice che compili — la differenza si vede a occhio nudo.
Il degrado inoltre non è uniforme: colpisce prima le capacità fragili — aritmetica, ragionamento a più passi, lingue meno rappresentate — e per ultima la conversazione generica. Ecco perché chi prova un modello molto compresso chiacchierando conclude che va benissimo, e poi si stupisce quando sbaglia il formato.
L’unica misura che conta davvero resta quella fatta in casa: gli stessi venti prompt reali, prima e dopo.
Le sigle: come si sceglie in pratica
Scaricando modelli incontri nomi come Q4_K_M, Q5_K_S, Q8_0 e la scelta sembra arbitraria.
Non lo è, ma il numero di opzioni è più grande di quanto serva.
Q4_K_M
│ │ │
│ │ └─ dimensione del blocco: S piccolo, M medio, L grande
│ └─── famiglia del metodo (K = quantizzazione a blocchi, la piu' diffusa)
└───── bit per peso
Nella pratica servono tre righe di questa tabella, non tutte:
| Sigla | Quando |
|---|---|
| Q4_K_M | L’uso quotidiano. Il punto di equilibrio consigliato quasi sempre |
| Q5_K_M | Hai memoria che avanza e vuoi qualche punto in più di qualità |
| Q8_0 | La precisione conta e lo spazio non è un problema |
| Q3 e sotto | Solo per necessità: il degrado si vede |
La variante M al posto di S conta poco rispetto al salto fra 4 e 5 bit: se devi scegliere fra
Q4_K_S e Q4_K_M con memoria sufficiente, prendi la seconda e non pensarci più.
E un promemoria che vale più di tutte le sigle: a parità di gigabyte occupati, un modello grande molto compresso batte quasi sempre uno piccolo poco compresso. Fra un 14B a 4 bit e un 8B a 8 bit — entrambi intorno agli 8 GB — conviene di norma il primo.
GGUF e gli altri formati
Il formato del file dice quale programma può eseguirlo, ed è una cosa diversa dalla quantizzazione.
| Formato | Chi lo esegue |
|---|---|
| GGUF | llama.cpp e tutto ciò che ci si appoggia: Ollama, LM Studio |
| MLX | Il framework di Apple: più veloce sui chip della serie M |
| safetensors | I pesi originali, non quantizzati: servono per addestrare, non per usare |
Se scarichi un modello e non parte, nove volte su dieci è il formato sbagliato: safetensors
al posto di GGUF è l’errore più comune di chi arriva da Hugging Face senza sapere cosa cerca.
In sintesi
| Concetto | In una riga |
|---|---|
| Quantizzazione | Meno bit per peso: meno memoria, un po’ meno precisione |
| Il conto | Parametri × bit ÷ 8 = byte occupati |
| Punto di equilibrio | 4 bit (Q4_K_M) per l’uso quotidiano |
| Principio guida | Modello grande molto quantizzato > modello piccolo poco quantizzato |
| GGUF | Il formato di file tipico dei modelli quantizzati in locale |
| Cache compressa | 8 bit sulla cache è quasi gratis e libera memoria |
| Misurare il degrado | Gli indici statistici mentono: servono i tuoi casi reali |
| Le sigle | Q4_K_M per l’uso quotidiano, Q5 se la memoria avanza, Q8 se serve precisione |
| Formato | GGUF per Ollama e LM Studio, MLX su Apple Silicon: non è la quantizzazione |
- Quantizzazione
- GGUF
- Hardware
Lezioni collegate
- Fine-tuning e LoRA
Specializzare un modello senza riaddestrarlo da zero. E la domanda che viene prima: ti serve davvero il fine-tuning, o basta un prompt migliore o un RAG?
- Hardware per LLM in locale
La memoria è il collo di bottiglia, tutto il resto viene dopo. Come calcolare cosa ti serve davvero e cosa aspettarti dalla macchina che hai già.