Abbiamo benchmarkato Qwen3-32B a 4 livelli di precisione (BF16, FP8, GPTQ-Int8, GPTQ-Int4) su una singola NVIDIA H100 80GB GPU. Ogni configurazione è stata valutata su 2 benchmark (~12,2K domande) che coprono conoscenza e generazione di codice, oltre a oltre 2.000 esecuzioni di inferenza per misurare il throughput. Int4 è 2,7x più veloce di BF16 pur perdendo meno di 2 punti su MMLU-Pro, ma la generazione di codice (HumanEval) perde 8 punti.
Risultati del benchmark di quantizzazione
MMLU-Pro verifica il ragionamento ampio su 14 domini (~12K domande, 5-shot). Questa è la versione più difficile di MMLU con domande a 10 scelte invece di 4.
HumanEval verifica la generazione di codice (164 problemi, pass@1). Il modello scrive funzioni Python che vengono eseguite su test unitari. Questo è l'unico benchmark in cui l'output viene eseguito, non solo valutato.
Throughput è token di output al secondo con dimensione batch 1.
Dimensione del modello è la memoria GPU consumata solo dai pesi, misurata dopo il caricamento.
Sudddivisione MMLU-Pro per categoria
Ingegneria e legge mostrano i maggiori cali con Int4. Matematica rimane stabile su tutte le precisioni.
Capacità di memoria e concorrenza
Strumenti di monitoraggio GPU come nvidia-smi riportano un utilizzo quasi pieno indipendentemente dalla dimensione del modello perché vLLM pre-alloca tutta la memoria disponibile. La vera domanda è come quella memoria si divide tra pesi del modello e KV cache, perché la KV cache determina quanti utenti puoi servire contemporaneamente.
Il numero massimo di utenti è il limite di memoria prima dell'OOM: capacità totale di token divisa per la lunghezza del contesto per utente. Questo è il massimo teorico. In pratica, l'overhead di scheduling lo riduce leggermente.
Ciò ha implicazioni dirette per i modelli di ragionamento. DeepSeek-R1 e Qwen-QwQ generano migliaia di token interni di “pensiero” (spesso 2K-5K) prima di produrre una risposta finale. Su BF16, una singola richiesta di ragionamento potrebbe consumare l'intera capacità di 17K token, bloccando un secondo utente. Su Int4, la capacità di 193K consente più sessioni di ragionamento concorrenti.
Risultati principali
FP8 non perde alcuna accuratezza misurabile
FP8 ottiene 69,64% su MMLU-Pro contro 70,24% per BF16, una differenza di 0,6 punti su 12.000 domande. Su HumanEval, sia FP8 che BF16 ottengono lo stesso punteggio di 39,02%. FP8 ti dà 1,5x di throughput e dimezza la dimensione del modello per un costo di 0,6 punti.
GPTQ-Int8 ottiene 70,32% su MMLU-Pro ma perde 1,8 punti su HumanEval (37,20%). Se la generazione di codice è importante, FP8 è la scelta più sicura.
Int4 degrada la generazione di codice più della conoscenza
MMLU-Pro perde 1,6 punti con Int4 (70,24% a 68,66%). HumanEval perde 8 punti (39,02% a 31,10%). La generazione di codice richiede previsioni precise dei token in cui piccoli errori di peso si accumulano attraverso i corpi delle funzioni.
Il vero vantaggio è la concorrenza, non la velocità
Int4 è 2,7x più veloce di BF16. Ma l'effetto maggiore è sulla memoria. BF16 lascia solo 4,4 GB per la KV cache, sufficienti per circa 4 utenti concorrenti con contesto 4K. Int4 libera 47,3 GB, sufficienti per 47 utenti, un aumento di 12x della capacità di servizio dalla stessa GPU.
I punteggi di matematica reggono su tutte le precisioni
I punteggi di matematica si muovono appena: 81,87% con BF16, 81,87% con FP8, 81,87% con Int8, 80,24% con Int4. Ingegneria (49,64% a 43,45%) e legge (43,05% a 40,60%) sono più sensibili.
Costo per token
Utilizzando il prezzo di H100 SXM su RunPod ($2,69/ora) con dimensione batch 1:
Questi numeri riflettono la generazione in tempo reale per singolo utente. L'elaborazione batch riduce ulteriormente il costo.
LLM metodologia del benchmark di quantizzazione
Ambiente
- GPU: Singola NVIDIA H100 80GB HBM3 (SXM) via RunPod ($2,69/ora)
- Software: vLLM 0.17.0, lm-evaluation-harness 0.4.11, PyTorch 2.8.0, CUDA 12.8, Python 3.11
- Modello: Qwen3-32B (post-addestrato/instruction-tuned) da HuggingFace. Nessun fine-tuning applicato.
Valutazione dell'accuratezza
- Tutte le valutazioni vengono eseguite tramite
lm-evaluation-harnessconbatch_size="auto". - Ogni task viene eseguito in un sottoprocesso separato. Il modello viene caricato ex novo ogni volta, GPU completamente pulita tra i task. Questo previene l'OOM dovuto alla frammentazione della memoria.
- HumanEval viene eseguito con
HF_ALLOW_CODE_EVAL=1(esecuzione del codice abilitata). - I risultati MMLU-Pro includono la suddivisione per categoria (biologia, matematica, fisica, legge, ecc.).
- La modalità di pensiero di Qwen3 non era attiva durante le valutazioni. lm-evaluation-harness invia prompt formattati grezzi senza applicare il template di chat del modello (
apply_chat_template=Falseper impostazione predefinita), quindi il token<think>non viene mai iniettato.
Valutazione delle prestazioni
- 5 prompt rotanti tra domini (scienza, programmazione, conoscenze generali)
- 10 iterazioni di riscaldamento (non misurate), poi 500 iterazioni misurate
- Output fisso:
max_tokens=256, temperature=0.7, top_p=0.9, batch_size=1 - Metriche: throughput (token/s), utilizzo memoria GPU (GB)
Configurazione vLLM per precisione
Tutte le precisioni usano gpu_memory_utilization=0.90, max_model_len=4096.
Architettura a processo diviso
Ogni benchmark viene eseguito come due processi separati per prevenire OOM:
- Passo 1: Carica modello, riscaldamento, benchmark throughput, salva su file temporaneo, esci.
- Pulizia: Forza la chiusura dei processi vLLM e Ray, attendi 10 secondi.
- Passo 2: Carica modello ex novo, esegui ogni task di valutazione in un sottoprocesso separato, unisci con le metriche del passo 1, salva JSON finale.
Variabili controllate
Per eliminare fattori esterni, i seguenti parametri sono stati fissati in tutte le esecuzioni:
Prompt di test
I 5 prompt di test:
- “Spiega la teoria della relatività in termini semplici.” (Scienza/Astratto)
- “Scrivi una funzione Python per trovare la più lunga sottostringa palindroma.” (Programmazione)
- “Quali sono le principali cause del cambiamento climatico e i loro effetti?” (Ragionamento complesso)
- “Descrivi il processo di fotosintesi passo dopo passo.” (Descrizione di processo)
- “Come impara una rete neurale dai dati?” (Spiegazione tecnica)
Verifica dei dati: telemetria runtime di vLLM
Le cifre di memoria e concorrenza in questo articolo sono state derivate direttamente dai log di inizializzazione del motore vLLM engine initialization durante l'esecuzione del benchmark.
BF16 inizializzazione:
GPTQ-Int4 inizializzazione:
Limitazioni
Tutti i test usano dimensione batch 1. In scenari ad alto throughput, il divario di prestazioni tra Int4 e BF16 si amplia perché la saturazione della larghezza di banda della memoria diventa il collo di bottiglia dominante.
I risultati sono specifici per H100 SXM. Le GPU più vecchie (A100, A10) mancano del supporto nativo FP8. Le GPU consumer (RTX 4090) hanno caratteristiche di larghezza di banda della memoria diverse.
I modelli GPTQ (JunHowie) sono quantizzazioni fornite dalla comunità. I rilasci ufficiali potrebbero usare dataset di calibrazione o parametri diversi, che possono influenzare l'accuratezza.
Abbiamo testato solo GPTQ. Altri metodi di quantizzazione (AWQ, BitsAndBytes NF4, GGUF, HQQ) potrebbero offrire compromessi diversi.
Conclusione
Per Qwen3-32B su una H100, FP8 è la scelta predefinita. Ottieni 1,5x il throughput, metà dell'ingombro di memoria e un costo di accuratezza di 0,6 punti.
Int4 ha senso quando hai bisogno del massimo throughput o concorrenza: velocità 2,7x, concorrenza 12x, al costo di 1,6 punti su MMLU-Pro e 8 punti su HumanEval.
Int8 si colloca a metà e non offre un chiaro vantaggio rispetto a FP8 in questa configurazione. Il guadagno di throughput rispetto a FP8 è piccolo (43,3 contro 37,9 tok/s) e l'accuratezza è comparabile. FP8 è più semplice perché è fornito ufficialmente dagli autori del modello e non richiede un checkpoint quantizzato di terze parti.
L'impatto pratico più grande della quantizzazione non è la velocità, è la concorrenza. BF16 può servire 4 utenti con contesto 4K su una singola H100. Int4 può servirne 47. A $2,69/ora, ciò porta il costo per 1M token da $28,73 a $10,69.
Cita questa ricerca
Scegli il formato adatto a dove pubblicherai. Incollare la versione con link nel tuo CMS preserva il backlink.
@misc{sar2026,
author = {Sarı, Ekrem and Ermut, Sıla},
title = {{LLM Quantizzazione: BF16 vs FP8 vs INT4}},
year = {2026},
month = mar,
howpublished = {\url{https://aimultiple.com/llm-quantization}},
note = {AIMultiple. Consultato il 17 Marzo 2026}
}
Sii il primo a commentare
Il tuo indirizzo email non verrà pubblicato. Tutti i campi sono obbligatori. I commenti vengono lasciati nella loro lingua originale.