← Tutte le lezioni
Lezione 09 Fondamenti 7:13

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.

FormatoBit per pesoValori rappresentabili
Float3232circa 4 miliardi
Float1616circa 65.000
Int88256
Int4416

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:

SiglaQuando
Q4_K_ML’uso quotidiano. Il punto di equilibrio consigliato quasi sempre
Q5_K_MHai memoria che avanza e vuoi qualche punto in più di qualità
Q8_0La precisione conta e lo spazio non è un problema
Q3 e sottoSolo 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.

FormatoChi lo esegue
GGUFllama.cpp e tutto ciò che ci si appoggia: Ollama, LM Studio
MLXIl framework di Apple: più veloce sui chip della serie M
safetensorsI 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

ConcettoIn una riga
QuantizzazioneMeno bit per peso: meno memoria, un po’ meno precisione
Il contoParametri × bit ÷ 8 = byte occupati
Punto di equilibrio4 bit (Q4_K_M) per l’uso quotidiano
Principio guidaModello grande molto quantizzato > modello piccolo poco quantizzato
GGUFIl formato di file tipico dei modelli quantizzati in locale
Cache compressa8 bit sulla cache è quasi gratis e libera memoria
Misurare il degradoGli indici statistici mentono: servono i tuoi casi reali
Le sigleQ4_K_M per l’uso quotidiano, Q5 se la memoria avanza, Q8 se serve precisione
FormatoGGUF per Ollama e LM Studio, MLX su Apple Silicon: non è la quantizzazione

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à.

Guarda su YouTube