GGUF, quantizzazione e VRAM: calcolare la memoria per eseguire modelli in locale
Imagen generada con gpt-image-2.5-sunburst para InferamaFonte ↗
01

La quantizzazione riduce i pesi, ma non tutta la memoria necessaria

La quantizzazione rappresenta i pesi di un modello con una precisione numerica inferiore, riducendo lo spazio occupato e, su alcuni sistemi, accelerando l’inferenza. In GGUF si trovano etichette come Q4_K_M, Q5_K_M e Q8_0. Sono indicazioni sulla quantizzazione, non una specifica completa dell’utilizzo di memoria né una garanzia di qualità o velocità.

GGUF è un contenitore per modelli usato spesso con llama.cpp e con strumenti basati su questo motore. Non è sinonimo di quantizzazione: può contenere pesi con diversi tipi e livelli di precisione. Inoltre, «Q4» non significa che ogni parametro occupi esattamente quattro bit. Metadati, scale e parti memorizzate con una precisione diversa aumentano le dimensioni. Quando disponibile, è quindi preferibile controllare la dimensione effettiva del file quantizzato che verrà caricato.

Per dimensionare un’installazione bisogna distinguere almeno quattro componenti: pesi, cache chiave-valore (KV), memoria temporanea per il calcolo e overhead del motore. Il totale dipende dall’architettura del modello, dal contesto, dal batch, dalla distribuzione tra i dispositivi e dal software. Un calcolo basato soltanto sul numero di parametri può escludere una configurazione che entrerebbe in memoria oppure far sembrare fattibile un’installazione che poi non riesce a riservare spazio per la conversazione.

La prima domanda non è «qual è la GPU migliore?», ma «quale modello, contesto, concorrenza e latenza mi servono?». Solo dopo si può stimare la memoria e provare configurazioni compatibili. Per confrontare motori o modelli diversi, consulta una comparativa e definisci un carico di lavoro comune; per esplorare alternative di inferenza locale, filtra in base al compito e all’hardware disponibile.

Prima di fare una stima

  1. 01Individua il file esatto del modello e annotane le dimensioni su disco.
  2. 02Registra l’architettura, il contesto massimo che userai davvero e la dimensione del batch.
  3. 03Decidi se i pesi verranno caricati interamente nella VRAM oppure ripartiti tra GPU e RAM.
  4. 04Verifica i requisiti e i limiti del motore per quel modello e quel formato.
02

Che cosa indicano Q4_K_M, Q5_K_M e Q8_0

In generale, quantizzare significa ridurre la precisione con cui vengono memorizzati i pesi. Il vantaggio atteso è occupare meno memoria per i pesi; il possibile costo è una differenza nelle risposte rispetto al modello di riferimento. Il rapporto tra i due effetti non è uguale per tutti i modelli e non si può riassumere in modo affidabile con una percentuale fissa di perdita.

Nelle varianti GGUF, il numero indica una classe di quantizzazione, ma non descrive da solo la composizione completa del file. I suffissi distinguono metodi e assegnazioni di precisione. In un’etichetta come Q4_K_M, la famiglia K e la variante M fanno parte dello schema: non vanno interpretate come un moltiplicatore uniforme di quattro bit. La dimensione del file è un dato più attendibile che dedurre il numero esatto di byte dal nome.

Come indicazione qualitativa, una configurazione Q4 richiede di solito meno spazio per i pesi rispetto a una Q5 o Q8 dello stesso modello. Q5 e Q8 conservano più precisione nei pesi, ma occupano più memoria. Questo non dimostra che produrranno risultati migliori in ogni compito: occorre misurarli nell’applicazione concreta. Un classificatore, un generatore di codice e un chatbot generalista possono reagire in modo diverso alla stessa quantizzazione.

GGUF consente anche di scegliere diversi formati di quantizzazione per una stessa famiglia di modelli, ma la compatibilità dipende dal motore e dalla sua implementazione. Non presumere che due file con etichette simili si eseguano alla stessa velocità o producano gli stessi risultati. Verifica che il modello sia compatibile con il motore, che venga caricato il backend previsto e che la valutazione confronti la stessa revisione del modello.

Come leggere le etichette in pratica

Indicazioni generali: dimensioni e comportamento vanno verificati per il file e il motore scelti.

EtichettaChe cosa suggerisceChe cosa non permette di concludere
Q4_K_MQuantizzazione della famiglia Q4 con variante K_M.Che ogni parametro occupi esattamente 4 bit o che la perdita di qualità sia fissa.
Q5_K_MVariante con precisione nominale superiore a Q4, di norma con pesi più ingombranti.Che superi Q4 in ogni compito o che entri in memoria insieme al contesto previsto.
Q8_0Variante generalmente più precisa di Q4.Che sia identica al modello non quantizzato o che sia sempre la scelta più veloce.
GGUFFormato di file usato da diversi motori locali.Un unico livello di precisione, un motore specifico o una quantità di VRAM prestabilita.
03

Calcolare separatamente pesi, cache KV e margine

Per una prima stima, la dimensione dei pesi residenti può basarsi sul file del modello effettivamente caricato. Se si conosce solo il numero di parametri, si può usare come orientamento il prodotto tra parametri e byte medi per parametro; tuttavia, il valore medio deve corrispondere alla quantizzazione reale, non al numero riportato nel nome come se fosse esatto. Nei file GGUF, la combinazione di precisioni diverse può rendere questa semplificazione imprecisa.

La cache KV conserva informazioni sui token precedenti di cui il modello ha bisogno durante la generazione. In genere cresce con la lunghezza della sequenza e con la dimensione del batch, e dipende dall’architettura: numero di layer, teste KV, dimensione delle teste e tipo di dato della cache. Una formula generale è: due volte il numero di layer, moltiplicato per teste KV, dimensione della testa, token memorizzati, batch e byte per elemento. La formula va adattata all’implementazione e alle architetture che usano meccanismi di attenzione differenti.

Per ottenere le dimensioni pertinenti, consulta la configurazione del modello e la documentazione del motore invece di dedurle dal solo numero di parametri o dalle teste di query. Nell’attenzione raggruppata, le teste KV possono essere meno numerose delle teste di query: calcolare la cache come se ogni testa di query ne avesse una propria può quindi sovrastimare il risultato. Altri progetti architetturali possono richiedere una formula diversa.

La memoria temporanea e l’overhead non equivalgono a una percentuale fissa dei pesi. Il prefill di prompt lunghi può richiedere buffer più grandi rispetto alla generazione token per token. Incidono anche frammentazione, backend, prenotazione della memoria, librerie e numero di GPU. Il metodo di stima di AIMultiple separa pesi, KV, attivazioni e overhead: è utile come struttura di calcolo, ma i risultati vanno verificati per il modello, il motore e la configurazione esatti.

Non esiste una risposta univoca e verificabile alla domanda «quanta VRAM serve per un 7B Q4_K_M con 4096 token?» senza specificare modello, batch, tipo di cache KV, motore, distribuzione e margine. Un contesto di 4096 token indica la lunghezza della sequenza, ma da solo non determina la cache: servono le dimensioni dell’architettura e altri dettagli. La dimensione del file può fornire un riferimento per i pesi, non per il fabbisogno totale.

Metodo di stima riproducibile

  1. 01Registra la dimensione del file GGUF e il numero esatto di layer, teste KV e dimensione per testa del modello.
  2. 02Definisci contesto effettivo e batch. Se il prompt include istruzioni di sistema, cronologia e input, conta questi token insieme all’output previsto.
  3. 03Calcola la cache KV usando il tipo di dato effettivo; se il motore supporta una cache quantizzata, verifica la compatibilità e misura l’impatto.
  4. 04Aggiungi buffer di calcolo e riserva del motore, basandoti sulla configurazione documentata o sulla misurazione durante il caricamento.
  5. 05Carica il modello e un prompt rappresentativo; registra la memoria libera e il picco durante prefill e generazione.
  6. 06Ripeti il test con il caso operativo più impegnativo previsto, non solo con una breve richiesta.
04

Scegliere tra VRAM, RAM e offload parziale

La VRAM disponibile stabilisce quanto può rimanere nella GPU; la RAM di sistema può servire a caricare parti del modello quando il motore supporta l’offload parziale. Ma molta RAM non garantisce automaticamente un’esperienza interattiva: trasferire dati tra RAM e GPU può ridurre le prestazioni, e il risultato dipende dal collegamento tra i due componenti e dal modo in cui vengono distribuiti i layer.

Se servono risposte rapide e frequenti, dai priorità a una configurazione in cui pesi e cache attiva entrino nella memoria della GPU con un margine adeguato. Se invece l’obiettivo è eseguire un modello che altrimenti non entrerebbe, l’offload su RAM può risolvere un problema di capacità al costo di una maggiore latenza. Non confondere «si carica» con «rispetta il requisito di velocità».

Su Apple Silicon la memoria unificata è condivisa tra CPU e GPU, ma viene utilizzata anche dal sistema e dalle altre applicazioni. La RAM installata non coincide necessariamente con quella disponibile per il modello. Anche con più GPU non basta sommarne la capacità: ci sono costi di comunicazione e riserve per dispositivo, e il software deve supportare la distribuzione prevista.

La larghezza di banda incide soprattutto sulla generazione, quando i pesi vengono letti ripetutamente. La capacità determina se i dati entrano in memoria; la larghezza di banda e l’implementazione contribuiscono alla velocità una volta caricati. Motore, supporto dei kernel, tipo di quantizzazione e concorrenza possono cambiare il risultato: scegliere l’hardware solo in base alla VRAM o a una larghezza di banda teorica lascia fuori fattori decisivi.

Decidere in base al limite principale

Usa la tabella per capire che cosa misurare prima di cambiare hardware.

Sintomo o requisitoChe cosa controllare per primoPossibile intervento
Il modello non si carica nella GPUDimensione effettiva dei pesi, cache KV prevista, buffer e riserva del motore.Ridurre contesto o batch, scegliere una quantizzazione compatibile oppure distribuire o scaricare i pesi.
Si carica, ma genera con troppa latenzaQuota di pesi fuori dalla GPU, larghezza di banda, backend e token al secondo.Ridurre l’offload, provare un altro motore compatibile o passare a un dispositivo con maggiore larghezza di banda.
Il sistema si blocca con prompt lunghiPicco durante il prefill, contesto effettivo, batch e memoria della cache KV.Limitare la lunghezza, elaborare i prompt a blocchi se il motore lo consente o valutare un’altra configurazione.
Le prestazioni calano con più utentiConcorrenza, accumulo della cache KV, batch e politica di riserva.Dimensionare in base alle richieste simultanee e misurare throughput aggregato e latenza per richiesta.
05

Non esiste un minimo universale per 7B Q4 e 4096 token

Un modello da 7 miliardi di parametri in Q4_K_M occupa in genere meno memoria per i pesi rispetto alla stessa famiglia in Q5 o Q8, ma questo principio non si traduce in un valore minimo universale di VRAM o RAM. Il numero di parametri non descrive interamente l’architettura, i tensori mantenuti a una precisione diversa o la dimensione esatta del file.

Nemmeno 4096 token bastano per calcolare la cache. Per stimarla servono almeno architettura, numero di layer, teste KV, dimensione per testa, tipo di dato della cache KV e batch. Se si usa una finestra di attenzione o un meccanismo diverso, il calcolo cambia. La risposta corretta è misurare una configurazione specifica, non garantire che qualsiasi 7B Q4_K_M funzioni con una quantità fissa di memoria.

Come procedura pratica, usa la dimensione effettiva del file come riferimento per i pesi, calcola la cache KV con i parametri dell’architettura e aggiungi memoria temporanea e riserva del motore. Poi verifica il picco durante il caricamento e la generazione. Se il sistema dispone solo di RAM, l’esecuzione può essere possibile con un motore compatibile, ma la velocità non si può dedurre dalla dimensione del modello.

Di conseguenza, non è consigliabile acquistare una scheda video sulla base di una tabella generica del tipo «7B = X GB». Prima definisci il modello esatto e l’obiettivo di servizio: utente singolo o concorrenza, contesto normale e massimo, risposta in tempo reale o elaborazione batch. Un caso d’uso definito permette di dimensionare il sistema; il solo numero di parametri non basta.

06

Prestazioni: misura velocità, prima risposta e concorrenza

I token al secondo descrivono una parte delle prestazioni, ma occorre specificare se la misura riguarda il prefill del prompt o la generazione. La latenza fino al primo token comprende ricezione, prefill e preparazione: può aumentare con prompt estesi anche quando la generazione successiva è rapida. Per un’applicazione interattiva sono importanti entrambi i valori.

Il confronto deve mantenere costanti modello, prompt, lunghezza dell’output, contesto, batch, motore, versione software e temperatura del dispositivo. Esegui più prove e registra mediana e variabilità, oltre alla memoria massima. Non confrontare un test con una risposta breve con un altro che usa un contesto esteso: misurerebbero carichi diversi.

Le fonti fornite non sono sufficienti per indicare i token al secondo o la latenza attesi per un 13B Q5_K_M su una GPU da 16 GB. Il risultato dipende dalla GPU specifica, dalla larghezza di banda, dal modello e dalla sua architettura, dal motore, dai layer scaricati, dal contesto e dalla configurazione. Una stima della capacità non sostituisce un benchmark eseguito sulla macchina interessata.

Per un servizio multiutente, misura anche il throughput aggregato e la latenza per richiesta sotto carico. Un motore ottimizzato per richieste simultanee può comportarsi diversamente da uno locale pensato per una sola conversazione. Il test deve riprodurre l’uso reale: un singolo utente che genera codice non rappresenta un server con più sessioni e prompt lunghi.

Protocollo essenziale per il benchmark

  1. 01Fissa una versione del modello, un file di quantizzazione, il motore e i parametri di esecuzione.
  2. 02Prepara un prompt rappresentativo e un output di lunghezza controllata; registra i token in input e in output.
  3. 03Riscalda il motore ed esegui più prove, separando la latenza fino al primo token dalla velocità di generazione.
  4. 04Annota picco di VRAM e RAM, token al secondo, errori di caricamento ed eventuale offload sulla memoria di sistema.
  5. 05Ripeti con contesto lungo e concorrenza prevista; comunica mediana e variabilità, non soltanto il risultato migliore.
07

Valutare la perdita di qualità sui compiti rilevanti

Non esiste una singola percentuale di degrado che descriva il passaggio da Q8 a Q4 per tutti i modelli e tutti i compiti. La differenza dipende dall’architettura, dal metodo di quantizzazione, dal set di valutazione e dal criterio di punteggio. Un’affermazione come «perde il 2%» non è interpretabile se non specifica metrica, dati, versione e condizioni del confronto.

Prepara una valutazione con esempi rappresentativi e risposte attese, oppure con criteri di punteggio definiti prima dei test. Per la classificazione, usa un set etichettato e confronta accuratezza, precisione, richiamo o F1 in base al costo di falsi positivi e falsi negativi. Per la generazione, valuta aderenza alle istruzioni, correttezza verificabile, formato ed errori critici con una griglia coerente. Per il codice, esegui test automatici sulle risposte: non basta un’impressione soggettiva che «sembri corretto».

Confronta ogni quantizzazione con lo stesso modello di riferimento usando prompt, modello di conversazione e parametri di generazione identici. Mantieni gli stessi seed quando il motore lo consente e ripeti i compiti stocastici. Riporta sia la media sia i fallimenti gravi: una media simile può nascondere un calo significativo in un gruppo ristretto di casi.

Il lavoro disponibile su alphaXiv su Qwen3.5-4B descrive un caso specifico di inferenza INT4 con distillazione consapevole della quantizzazione, decodifica speculativa e una GPU A10G. È una prova relativa a quel sistema e a quella configurazione, non dimostra che ogni Q4 in GGUF mantenga la qualità o raggiunga la stessa accelerazione. Inoltre, l’estratto non permette di generalizzare i risultati a un modello da 13B o a un’altra GPU.

Metriche in base al compito

Scegli metriche che riflettano gli errori importanti per il prodotto.

CompitoMisura utileControllo necessario
ClassificazioneAccuratezza, precisione, richiamo e F1.Stesso set etichettato; controllare classi sbilanciate ed errori per classe.
Generazione di testoAderenza alle istruzioni, fatti verificabili e formato.Griglia definita in anticipo e, se c’è valutazione umana, revisione in cieco.
CodiceTest unitari, compilazione e percentuale di compiti completati.Stesse specifiche, ambiente di esecuzione e limiti ai tentativi.
Estrazione strutturataValidità dello schema e correttezza campo per campo.Distinguere errori di formato da errori semantici.
08

Criteri per scegliere quantizzazione e hardware

Parti dal livello di qualità richiesto dal compito, non dalla quantizzazione più aggressiva che entra in memoria. Se la qualità di riferimento è indispensabile e hai memoria sufficiente, mantieni una precisione superiore e verifica la differenza rispetto a Q4. Se il limite è la memoria, prova Q4_K_M, misura le prestazioni e controlla la qualità. Se i risultati non bastano, valuta Q5, una riduzione del contesto o un modello diverso prima di concludere che serva necessariamente acquistare hardware.

La scelta dell’hardware deve tenere conto della capacità di memoria, della larghezza di banda, della compatibilità con il motore e della facilità di manutenzione. Un sistema con VRAM sufficiente può comunque essere lento se la quantizzazione non dispone di kernel efficienti o se una parte del modello viene trasferita. Al contrario, un modello che entra nella RAM può essere utile per test o carichi non interattivi, pur senza raggiungere la latenza di una GPU.

Valuta ogni combinazione con una tabella decisionale personalizzata: modello, quantizzazione, contesto, batch, picco di memoria, latenza al primo token, velocità di generazione e punteggio di qualità. Questa tabella aiuta a giustificare un acquisto perché rende esplicito il requisito che manca davvero. Evita anche di usare il prezzo di una scheda come sostituto di una prova.

Per confrontare motori e configurazioni, mantieni lo stesso protocollo e consulta una comparativa tecnica. Per trovare modelli compatibili, filtra in base ad architettura, formato, licenza e dimensione effettiva del file; non presumere che tutte le varianti abbiano lo stesso comportamento.

Matrice iniziale per decidere

È un orientamento per scegliere quale prova eseguire, non una raccomandazione universale d’acquisto.

PrioritàPrima provaCondizione per approvare la configurazione
Far entrare il modello nella GPUMisurare Q4 e calcolare la cache KV per il contesto previsto.Picco di memoria con margine, senza offload indesiderato.
Massima fedeltàConfrontare Q5 o Q8 con il modello di riferimento.Miglioramento verificabile nei compiti critici e latenza accettabile.
Latenza interattivaMisurare il modello caricato interamente nel backend previsto.Prima risposta e generazione rispettano l’obiettivo con prompt realistici.
ConcorrenzaTestare richieste simultanee e contesti rappresentativi.Throughput e latenza per utente rispettano l’obiettivo del servizio.
Budget limitatoConfrontare un modello più piccolo con quantizzazione moderata e uno più grande in Q4.La qualità del compito giustifica le differenze di memoria e velocità.
09

Conclusione: la stima iniziale va verificata sul sistema reale

GGUF semplifica la distribuzione di modelli locali con diverse quantizzazioni, ma il nome Q4, Q5 o Q8 non basta a dimensionare un’installazione. Usa la dimensione reale del file per stimare i pesi, calcola la cache KV in base all’architettura e alla configurazione prevista, quindi aggiungi buffer e riserva del motore.

Non esiste un valore universale di VRAM per un modello 7B Q4_K_M con 4096 token, né una previsione affidabile dei token al secondo per un 13B Q5_K_M su una GPU da 16 GB senza ulteriori dettagli. Presentare questi valori come garanzie nasconderebbe le variabili che determinano il risultato.

La decisione finale richiede due verifiche: memoria e prestazioni sul carico reale, e qualità nei compiti che giustificano l’installazione. Registra contesto, batch, motore, versioni, picco di memoria, latenza e metriche di qualità. Potrai così scegliere con dati confrontabili tra quantizzazione, contesto più breve, offload parziale, un altro modello o un aggiornamento hardware.

Questioni aperte

  • Le fonti fornite non documentano un calcolo primario completo per uno specifico modello 7B in Q4_K_M, con contesto di 4096 token, batch e motore definiti; non viene quindi indicato un minimo di VRAM o RAM.
  • Non sono disponibili benchmark sufficientemente tracciabili per prevedere token al secondo o latenza al primo token di un 13B Q5_K_M su una generica GPU da 16 GB.
  • L’effetto di Q8 rispetto a Q4 dipende da modello, metodo di quantizzazione e compito; le prove disponibili non supportano una perdita di qualità universale.
  • La formula della cache KV è un’approssimazione per architetture compatibili con quella rappresentazione; architetture con attenzione o cache differenti richiedono un calcolo adattato.
  • La fonte primaria fornita riguarda un sistema specifico con Qwen3.5-4B e non dimostra che i risultati siano generalizzabili a GGUF, altri modelli o altri hardware.
10

Continua a esplorare

10

Fonti consultate

03

Correzioni e trasparenza

Se trovi un dato errato o non aggiornato, inviaci la pagina e la fonte da verificare.

Proponi una correzione