Vai al contenuto principale
ModelliIntermedio5 min di lettura

Quantizzazione: ottenere di più dallo stesso hardware

i
iaLocale Team
•
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:

  1. Memoria — il modello occupa meno VRAM, e ne resta di più per la cache di contesto.
  2. 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:

LivelloDimensione fileQualità percepita
FP16~28 GBRiferimento
Q8_0~15,7 GBQuasi identica
Q6_K~12,1 GBQuasi identica
Q5_K_M~10,5 GBEccellente
Q4_K_M~9,0 GBMolto buona (lo standard)
Q3_K_M~7,3 GBBuona, con cali su compiti difficili
Q2_K~5,7 GBPovera, 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

  1. Parti dal modello che ti serve (vedi come scegliere il primo modello) e verifica quanti GB occupa in Q4_K_M.
  2. Confronta con la tua VRAM, tenendo da 2 a 4GB da parte per la cache di contesto.
  3. Se non entra, scendi un livello. Se entra con margine, valuta di salire.
  4. 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

#gguf#modelli#prestazioni#quantizzazione#vram
Condividi:

Ti è piaciuto questo articolo?

Iscriviti alla newsletter per ricevere nuovi tutorial e guide.

Dopo l'iscrizione ricevi una email di conferma (double opt-in). Senza conferma non inviamo nulla. Nessuno spam, ti promettiamo.

Articoli Correlati