Tutti i 6 data center operativi

Pagamento in cripto · Nessuna verifica d’identità · Accesso root in in meno di 5 minuti

Guida Dimensionamento · 10 min di lettura

Quale formato di quantizzazione eseguire davvero.

Uno stack di serving chiede un formato numerico prima di chiedere qualsiasi altra cosa, e la risposta sposta la ricevuta mensile di un fattore otto. Il formato con i pesi più piccoli non è sempre quello che dà il modello più piccolo.

La risposta breve

La regola pratica
I pesi si riducono esattamente secondo il rapporto nel nome — BF16 / FP16 2 B/param · FP8 1 B/param · 4-bit (AWQ, GPTQ) 0.5 B/param. Nient’altro lo fa.
Quanto vale
Qwen 3 32B richiede NVIDIA A100 PCIe a $1,091 al mese a piena precisione, e NVIDIA L4 a $125 a 4 bit. Stesso modello, stesso contesto.
La trappola
La cache chiave/valore non si riduce insieme ai pesi. A 128k di contesto, un Llama 3.3 70B a 4 bit è 53 % cache e solo 47 % pesi.
Dove il 4 bit perde nettamente
Llama 3.1 8B a 128k richiede 23.0 GB in 4-bit contro 18.4 GB in FP8 — più memoria, per una qualità peggiore

Inizi qui

Gran parte di questa pagina è calcolo, quindi ecco prima la conclusione. Quattro domande stabiliscono il formato, e vengono poste in quest’ordine perché ciascuna può chiudere da sola la discussione.

Il modello entra già a piena precisione, con margine per il proprio contesto? Lo esegua in BF16 e si fermi qui. La quantizzazione è un modo per acquistare una macchina più piccola, e Lei ne ha già acquistata una che funziona. Non c’è alcun premio per comprimere un modello che entra già.

Il contesto è breve e il modello è grande? È qui che il 4 bit si guadagna la sua reputazione. I pesi dominano la memoria, e ridurli a un quarto equivale quasi a ridurre a un quarto la macchina.

Il contesto è lungo e il modello è piccolo? Usi FP8, su una scheda che lo supporta. FP8 dimezza la cache oltre ai pesi, e superata una certa lunghezza è quel secondo dimezzamento a fare la differenza — la tabella qui sotto mostra il punto esatto in cui supera il 4 bit.

Sta servendo una sola persona su una sola macchina? GGUF tramite Ollama è di gran lunga la soluzione che richiede meno lavoro, e il throughput a cui si rinuncia è throughput che un singolo utente non avrebbe comunque mai sfruttato.

Tutto ciò che segue spiega perché queste quattro risposte sono tali, e fornisce i numeri per verificarle sul proprio modello anziché sul nostro. Se non ha ancora calcolato quanta memoria richiede il proprio modello, quel calcolo è una guida a parte e viene prima di tutto.

Tre formati, quattro nomi

Esistono solo tre formati numerici di uso comune per il serving, e differiscono per una sola cosa: quanti byte costa ciascun parametro. Tutto il resto — AWQ, GPTQ, GGUF, bitsandbytes — è un metodo per produrre uno di questi tre, non un quarto formato.

I tre formati numerici, e a cosa si applica ciascuna cifra in byte
Formato Byte per peso Byte per elemento di cache A cosa serve
BF16 / FP16I pesi come pubblicati 2 2 Qualità reference
FP8Prodotto dallo stack di serving stesso 1 1 Quasi reference, Hopper e Blackwell
4-bit (AWQ, GPTQ)Un checkpoint preparato in anticipo 0.5 2 Pesi più piccoli, la cache resta FP16

Legga le due colonne numeriche come una coppia. Sono uguali nelle prime due righe e non lo sono nella terza, e quest’unica asimmetria è responsabile della maggior parte delle sorprese più avanti in questa pagina.

I quattro nomi che si incontrano realmente in un repository di modelli corrispondono a quella tabella come segue.

AWQ e GPTQ

Due strade per la stessa destinazione a 4 bit. AWQ decide quali pesi contano osservando le attivazioni e li protegge; GPTQ comprime layer per layer e corregge l’errore man mano che procede. Entrambi producono un checkpoint che vLLM e SGLang caricano direttamente, e per un dato modello lo scarto tra i due è più piccolo dello scarto tra uno qualsiasi dei due e il 16 bit.

GGUF

La famiglia llama.cpp, ciò che Ollama usa sotto il cofano. È più un contenitore che un singolo metodo: un unico file contiene i pesi a una qualsiasi di una dozzina di precisioni, e riverserà i livelli sulla RAM di sistema quando la scheda è troppo piccola. Imbattibile per un solo utente su una sola macchina, e il più debole dei tre sotto concorrenza reale.

FP8

Più che un formato di checkpoint, è una modalità. Si diano a uno stack di serving pesi a 16 bit e lui li convertirà in FP8 durante il caricamento, senza download separato e senza fase di calibrazione. È l’unico dei quattro che può comprimere anche la cache, motivo per cui compare qui sotto dove non ce lo si aspetterebbe.

BF16 e FP16

I pesi così come li hanno rilasciati gli autori, e il riferimento rispetto a cui si misura ogni altra riga. Due byte per parametro, nessun set di calibrazione, nessun supporto del kernel da verificare, nessuna discussione sulla qualità da avere. Quando entra in memoria, è la risposta corretta e il resto della pagina è una distrazione.

Richiederli è questione di un solo flag. Sono le stesse opzioni che la guida a vLLM illustra in dettaglio; qui il punto è solo quanto sia breve la differenza tra loro.

Lo stesso server, in quattro modi
# 1. Reference. The weights as published, nothing to prepare.
$ vllm serve meta-llama/Llama-3.3-70B-Instruct --dtype bfloat16

# 2. FP8, quantised while it loads. No second download, no calibration.
#    --kv-cache-dtype is the half everyone forgets: it is what
#    halves the CACHE as well as the weights.
$ vllm serve meta-llama/Llama-3.3-70B-Instruct \
    --quantization fp8 --kv-cache-dtype fp8

# 3. Four-bit AWQ. A DIFFERENT checkpoint, prepared by someone else.
$ vllm serve casperhansen/llama-3.3-70b-instruct-awq \
    --quantization awq_marlin

# 4. Four-bit GPTQ. Same idea, different repository and flag.
$ vllm serve TechxGenus/Llama-3.3-70B-Instruct-GPTQ \
    --quantization gptq_marlin

La metà che non si riduce

Quantizzare i pesi a 4 bit non quantizza la cache chiave/valore. AWQ e GPTQ comprimono i pesi e solo i pesi; la cache resta a 16 bit a meno di richiedere separatamente una cache FP8, e su un checkpoint a 4 bit quasi nessuno lo fa. È la terza colonna della tabella qui sopra, ed è il motivo per cui il calcolo qui sotto non va come ci si aspetterebbe.

La conseguenza si vede più facilmente su un solo modello. Di seguito Llama 3.3 70B, in 4 bit, a ogni lunghezza di contesto offerta dal configuratore — pesi contro cache.

Pesi e cache di un modello 70B a 4 bit, per lunghezza del contesto
Contesto Pesi Cache KV Quota di cache
4k token 35.0 GB 1.3 GB 3 %
8k token 35.0 GB 2.5 GB 7 %
32k token 35.0 GB 10.0 GB 22 %
128k token 35.0 GB 40.0 GB 53 %

La colonna dei pesi non si muove mai — è proprio questo il senso della quantizzazione. La colonna della cache cresce in modo lineare con il contesto finché, nell’ultima riga, non diventa più grande del modello a cui appartiene.

A 128k, un Llama 3.3 70B a 4 bit è 53 % cache. Ha quantizzato i pesi a un quarto della loro dimensione e la macchina necessaria si è spostata a malapena, perché ha compresso la parte che non era più il problema. Chi dimensiona un deployment a contesto lungo basandosi solo sulla cifra dei pesi finirà per ordinare meno della metà del necessario.

Se si spinge abbastanza oltre, il 4 bit smette del tutto di vincere. FP8 dimezza entrambe le metà; il 4 bit riduce a un quarto una metà e lascia l’altra invariata. Quindi per ogni modello esiste una lunghezza di contesto in cui i due si incrociano, e arriva prima quanto più piccolo è il modello — perché un modello piccolo ha pochi pesi da risparmiare e la stessa crescita di cache per token.

Memoria totale in FP8 contro 4 bit, per modello e lunghezza di contesto
Modello 4k 8k 32k 128k
Llama 3.1 8B8 B di parametri · 32 layer · 8 teste KV 5.24 bit, di 4.3 GB 5.84 bit, di 4.0 GB 9.24 bit, di 2.3 GB 23.0FP8 vince — 18.4 GB
Qwen 3 32B32 B di parametri · 64 layer · 8 teste KV 19.54 bit, di 17.8 GB 20.74 bit, di 17.2 GB 27.64 bit, di 13.8 GB 55.2un pareggio netto
Llama 3.3 70B70 B di parametri · 80 layer · 8 teste KV 41.74 bit, di 39.5 GB 43.14 bit, di 38.8 GB 51.74 bit, di 34.5 GB 86.34 bit, di 17.2 GB

Cifre in gigabyte, per il più piccolo dei due formati, con il perdente indicato sotto. Legga da sinistra a destra e osservi il vantaggio della colonna del 4 bit ridursi man mano che il contesto cresce.

L’ultima riga mantiene il vantaggio ovunque, perché 70 miliardi di parametri rappresentano molto peso da risparmiare. La riga centrale finisce in parità perfetta: a 128k, Qwen 3 32B costa esattamente lo stesso nei due formati, e converrebbe scegliere FP8 per la qualità. E la prima riga si ribalta completamente at 128k, dove il 4 bit richiede più memoria di FP8 pur essendo anche il meno fedele dei due. Questa combinazione — più memoria e output peggiore — è l’errore di quantizzazione più comune che vediamo, ed è invisibile se si guarda solo alla dimensione del file dei pesi.

Cosa può fare realmente la sua scheda

FP8 è prima di tutto una caratteristica hardware, poi software. Una scheda i cui tensor core non lo supportano caricherà comunque un checkpoint FP8 — lo stack decomprime i pesi a 16 bit prima della moltiplicazione — ma si conserva solo il risparmio sul download e nulla della velocità, e una cache FP8 non è affatto disponibile. Il 4 bit è l’opposto: funziona ovunque, perché i pesi vengono comunque decompressi a 16 bit prima del calcolo.

Le schede del catalogo per generazione, e il relativo supporto FP8
Generazione Schede che noleggiamo FP8
Ampere NVIDIA RTX A6000 48GB, NVIDIA A100 PCIe 40GB, NVIDIA A100 PCIe 80GB, NVIDIA A100 SXM4 80GB Nessuno in hardware — decompresso a 16 bit
Ada Lovelace NVIDIA L4 24GB, NVIDIA RTX 4090 24GB, NVIDIA L40S 48GB Nei tensor core — pesi e cache
Hopper NVIDIA H100 PCIe 80GB, NVIDIA H100 SXM5 80GB, NVIDIA H200 SXM5 141GB Nei tensor core — pesi e cache
Blackwell NVIDIA RTX 5090 32GB, NVIDIA B200 SXM6 180GB Nei tensor core — pesi e cache

Quella colonna descrive il silicio, il che non è esattamente la stessa domanda di dove FP8 sia una buona idea. La nota del catalogo accanto al formato cita Hopper and Blackwell, ed è un’affermazione sugli stack di serving più che sui tensor core: sono le generazioni su cui i kernel FP8 e le cache FP8 hanno avuto il maggior uso e le minori sorprese. Ada Lovelace lo eseguirà. Hopper e Blackwell sono dove metteremmo un deployment che ne dipende.

Su una scheda Ampere, FP8 è solo un risparmio sul download, niente di più. NVIDIA RTX A6000, NVIDIA A100 PCIe e NVIDIA A100 SXM4 non hanno alcun percorso FP8 nei tensor core. Se il piano era dimezzare la cache su una di esse, non accadrà — e le cifre di memoria nella colonna FP8 qui sopra non sono raggiungibili su quell’hardware. Scelga la scheda e il formato insieme, in quest’ordine.

Un’altra cosa che vale la pena sapere prima di scegliere una scheda. Llama 3.3 70B in FP8 a 8k richiede 81.9 GB, e una scheda da 80 GB — tra cui la NVIDIA A100 PCIe — ne manca di 1.9 GB. Non abbastanza pochi da saltare all’occhio su un foglio di calcolo, ma abbastanza da far fallire tutto sulla macchina. La scheda che la contiene da sola è quella della fascia superiore, e il configuratore Le dirà quale sia prima che paghi, non dopo.

Il guadagno in velocità

Generare un token significa leggere una volta i pesi attivi dalla memoria. Meno byte per peso significa meno byte da leggere, il che significa più token al secondo — e su un singolo flusso non raggruppato in batch quella relazione è quasi perfettamente lineare, perché non c’è nient’altro ad attendere la scheda. È lo stesso limite di larghezza di banda della memoria per cui divide la guida al costo per token, ed è deliberatamente prudente. Qui sotto viene applicato a un modello abbastanza piccolo da girare su ogni macchina a scheda singola che noleggiamo, in modo che formato e scheda si possano leggere sulla stessa tabella.

Tasso di generazione a flusso singolo per un modello 8B, per scheda e formato
Scheda Larghezza di banda BF16 / FP16 FP8 4-bit (AWQ, GPTQ)
NVIDIA L424 GB · $125 al mese 300 GB/s ~ 8 tok/s ~ 17 tok/s ~ 34 tok/s
NVIDIA RTX A600048 GB · $286 al mese 768 GB/s ~ 22 tok/s ~ 43 tok/s ~ 86 tok/s
NVIDIA L40S48 GB · $714 al mese 864 GB/s ~ 24 tok/s ~ 49 tok/s ~ 97 tok/s
NVIDIA RTX 409024 GB · $193 al mese 1008 GB/s ~ 28 tok/s ~ 57 tok/s ~ 113 tok/s
NVIDIA A100 PCIe40 GB · $392 al mese 1555 GB/s ~ 44 tok/s ~ 87 tok/s ~ 175 tok/s
NVIDIA RTX 509032 GB · $335 al mese 1792 GB/s ~ 50 tok/s ~ 101 tok/s ~ 202 tok/s
NVIDIA A100 PCIe80 GB · $1,091 al mese 1935 GB/s ~ 54 tok/s ~ 109 tok/s ~ 218 tok/s
NVIDIA H100 PCIe80 GB · $1,469 al mese 2000 GB/s ~ 56 tok/s ~ 113 tok/s ~ 225 tok/s

Llama 3.1 8B su una scheda, un flusso alla volta. Ogni macchina elencata lo contiene in tutti e tre i formati, quindi le righe sono confrontabili sia in orizzontale sia in verticale — e il rapporto tra le tre colonne è lo stesso su ogni riga, perché è determinato dai byte per peso e da nient’altro.

Due avvertenze sulla lettura di quella tabella. La prima è che descrive una richiesta alla volta, e quasi nessuno serve una richiesta alla volta: con il batching continuo i pesi vengono letti una sola volta per l’intero batch, quindi il limite diventa il calcolo aritmetico piuttosto che la memoria, e il rapporto tra le colonne si riduce. La seconda è che la decompressione ha un costo. I pesi a 4 bit devono essere decompressi prima di essere moltiplicati, e su un modello piccolo con batch di dimensioni ridotte quella decompressione può assorbire una quota visibile di ciò che la lettura più leggera aveva fatto guadagnare. La direzione della tabella è affidabile; i multipli esatti non sono una promessa.

Quanto costa

Questa è la parte dell’argomento in cui diffidare dei numeri sicuri di sé, compresi i nostri. L’errore di quantizzazione dipende dal modello molto più che dal metodo, e i confronti pubblicati sono in disaccordo tra loro perché misurano modelli diversi su compiti diversi. Ciò che si può dire onestamente è la forma generale del fenomeno.

FP8 è abbastanza vicino da non sollevare discussioni. È comunque un formato in virgola mobile — un esponente e una mantissa, con meno bit ciascuno — e non la griglia di interi su cui un checkpoint a 4 bit deve essere mappato con scale per gruppo. Ecco perché degrada in modo così contenuto, e perché non richiede alcuna fase di calibrazione. La maggior parte dei team lo adotta senza eseguire una valutazione, e nella maggior parte dei casi se la cava senza problemi.

Il 4 bit è un compromesso reale, e i suoi effetti non sono uniformi. Il punteggio medio nei benchmark di norma si muove pochissimo. A muoversi è la coda: catene di ragionamento lunghe, calcolo aritmetico esatto, lingue rare, formati di output rigidi. Un modello che continua a ottenere buoni risultati in una suite a scelta multipla può iniziare a chiudere il JSON in modo scorretto.

I modelli più grandi lo assorbono meglio. Il 4 bit su un 70B è un deployment di routine. Il 4 bit su un 8B, i cui parametri portano ciascuno più peso, è dove il degrado si nota — e, secondo la tabella qui sopra, dove offre il minor vantaggio.

I dati di calibrazione contano più della sigla. AWQ e GPTQ comprimono entrambi rispetto a un corpus campione. Un checkpoint calibrato su prosa inglese e usato per il codice darà risultati peggiori di quanto il metodo meriti, e nessuna tabella di benchmark glielo dirà.

Il che porta all’unico consiglio di questa pagina che non è aritmetica: li provi entrambi. Sta noleggiando una macchina con accesso root e senza alcun contatore, quindi servire lo stesso modello due volte su due porte e far passare un centinaio di prompt propri attraverso ciascuno costa una serata e risolve la domanda per il suo carico di lavoro, non per quello di qualcun altro. Questa è una risposta sostanzialmente migliore di qualsiasi tabella, questa compresa — ed è il motivo per cui preferiamo mostrarle la formula piuttosto che un punteggio.

Verifichi nell’ordine che costa meno. Inizi con BF16 se entra in memoria, perché è il riferimento di cui hanno bisogno le altre esecuzioni. Passi poi a FP8 — stesso checkpoint, un solo flag, nulla da scaricare. Ricorra a un checkpoint a 4 bit solo quando i due precedenti sono stati esclusi per mancanza di memoria, e quando lo fa, lo confronti con l’esecuzione FP8 anziché con le proprie aspettative.

Quale macchina ne consegue

Il motivo per cui tutto questo conta è la ricevuta. Di seguito la macchina più economica nel nostro catalogo che contiene ogni modello per intero a 8k di contesto, in ciascuno dei tre formati — per intero significa su una sola scheda, senza suddividerlo, perché un modello suddiviso tra più schede porta in causa l’interconnessione, e quello è un’altra guida.

Macchina più economica che contiene ogni modello per intero, per formato
Modello BF16 / FP16 FP8 4-bit (AWQ, GPTQ)
Llama 3.1 8B NVIDIA L4$125 al mese · richiede 19.5 GB NVIDIA L4$125 al mese · richiede 9.8 GB NVIDIA L4$125 al mese · richiede 5.8 GB
Qwen 3 32B NVIDIA A100 PCIe$1,091 al mese · richiede 75.9 GB NVIDIA RTX A6000$286 al mese · richiede 37.9 GB NVIDIA L4$125 al mese · richiede 20.7 GB
Llama 3.3 70B 4 × NVIDIA B200 SXM6$11,790 al mese · richiede 163.9 GB 4 × NVIDIA H200 SXM5$8,405 al mese · richiede 81.9 GB NVIDIA RTX A6000$286 al mese · richiede 43.1 GB

A 8k di contesto, sulle macchine che noleggiamo realmente. Dove una cella indica più schede, si tratta del nodo più piccolo in cui quella scheda è disponibile, non di un modello suddiviso: le schede più grandi si vendono a gruppi di quattro o di otto, quindi il modo più economico per evitare di suddividere un 70B a piena precisione è acquistarne quattro e usarne una. È esattamente il costo che la quantizzazione esiste per evitare.

Legga la riga centrale in orizzontale: $1,091 contro $125, circa 9×. Lo stesso Qwen 3 32B, lo stesso contesto a 8k, la stessa scheda singola e lo stesso accesso root — e un solo formato numerico a fare la differenza. È l’intero caso commerciale della quantizzazione, ed è anche il motivo per cui vale una serata di misurazioni piuttosto che un pomeriggio di lettura.

Due abitudini fanno la differenza tra usare bene questa tabella e farsi cogliere in fallo da essa. Dimensioni in base al contesto che utilizzerà davvero, non al massimo del modello — la seconda tabella di questa pagina è ciò che succede a chi confonde le due cose. E verifichi il formato rispetto alla scheda prima di ordinare, non dopo: NVIDIA RTX A6000, NVIDIA A100 PCIe e NVIDIA A100 SXM4 non può fornirle i numeri FP8, qualunque flag passi. Il configuratore indica la memoria richiesta e se rientra in una scheda, per ogni nodo e ogni formato, prima che si paghi qualsiasi cosa. Se il dubbio è se noleggiare oppure pagare un’API in base ai token, quel punto di pareggio è calcolato a parte, e la quantizzazione lo sposta di molto a favore dell’hardware.

Verifichi formato e macchina insieme.

Il configuratore indica di cosa ha bisogno il modello a ciascuna precisione, e quali nodi lo contengono su una singola scheda, prima che paghi qualsiasi cosa.

Accedi

Console, ricevute e accesso fuori banda.

Non ha ancora un account?

Non esiste una registrazione separata. Il suo account viene creato mentre effettua il suo primo ordine — sceglie l’email e la password nella fase di pagamento, e la console è già aperta quando lo è la macchina.

Configura un server

Language