Qwen 3.6 27B e 35B MTP rispetto allo standard su GPU da 16 GB
MTP rispetto alla decodifica standard su RTX 4080 — benchmark reali
Ho testato le prestazioni di Speculative Decoding (Multi-Token Prediction, MTP) su Qwen 3.6 27B e 35B su una RTX 4080 con 16 GB di VRAM.
Per una panoramica più ampia delle velocità dei token e dei compromessi di VRAM tra più modelli sulla stessa hardware, consulta Benchmark LLM su GPU 16 GB VRAM con llama.cpp.

Cos’è MTP (Multi-Token Prediction)
La Multi-Token Prediction è una forma di decodifica speculativa integrata direttamente in determinati checkpoint del modello. Invece di prevedere un token per passaggio forward, il modello utilizza “testate MTP” aggiuntive che propongono diversi token futuri in un unico passo — per poi verificarli in parallelo. Se le previsioni vengono accettate, il throughput effettivo aumenta senza compromettere la qualità dell’output.
La famiglia Qwen 3.6 offre sia file GGUF standard che varianti abilitate per MTP. In llama.cpp, MTP si attiva tramite:
--spec-type draft-mtp --spec-draft-n-max 3
--spec-draft-n-max è il parametro chiave di ottimizzazione. Definisce quanti token speculativi la testata MTP propone a ogni passo. Valori più alti offrono un potenziale aumento di velocità ma richiedono VRAM aggiuntiva per i buffer di bozza — un vincolo reale per le schede da 16 GB.
Cosa e come ho testato
Ho testato il comportamento dei due modelli Qwen 3.6 con MTP abilitato rispetto alla decodifica standard su una GPU con 16 GB di VRAM (RTX 4080).
Per far rientrare i pesi del modello e la cache KV nella VRAM, ho utilizzato varianti fortemente quantizzate:
Qwen3.6-27B-UD-IQ3_XXSeQwen3.6-27B-UD-IQ3_XXS-MTPQwen3.6-35B-A3B-UD-IQ3_SeQwen3.6-35B-A3B-UD-IQ3_S-MTP
Per ogni esecuzione vengono monitorati due budget di contesto:
- Avg Ctx — la dimensione del contesto in cui llama.cpp occupa ~14,8 GB di VRAM, lasciando un buffer confortevole di ~500 MB ad altre applicazioni (Xorg, GNOME Shell, Cursor).
- Max Ctx — il contesto più grande che llama.cpp può allocare, dato che le stesse applicazioni desktop occupano già ~500 MB di VRAM.
Un motivo fondamentale per mantenere il contesto medio a un target pratico è che Hermes Agent — che utilizzo come assistente AI principale collegato a llama.cpp su questa macchina — richiede almeno un contesto di 64 K di default e rifiuterà modelli con una finestra più piccola all’avvio. I modelli al di sotto di questa soglia non possono mantenere memoria di lavoro sufficiente per flussi di lavoro multi-step con chiamata di strumenti. Per llama.cpp questo significa passare --ctx-size 65536 o superiore. Qualsiasi configurazione MTP che compressi il contesto utilizzabile medio significativamente sotto i 64 K è quindi inadatta per i carichi di lavoro quotidiani di Hermes, motivo per cui i numeri Avg Ctx nelle tabelle seguenti sono quelli più rilevanti per le decisioni.
Sono stati testati entrambi i livelli di quantizzazione della cache KV: q8 (qualità superiore, più VRAM) e q5 (meno VRAM, contesto più lungo). Tieni presente che passare dalla cache KV q8 a q5 può causare un calo di qualità notevole — nei miei test il degrado è stato significativo al punto da rendere q5 inadatto per i miei carichi di lavoro. Le velocità e i numeri di contesto per q5 sono inclusi per completezza, ma dovresti testare la qualità delle risposte sui tuoi compiti prima di adottarlo.
Qwen 3.6 27B MTP vs Standard
Cache KV q8
| MTP max 1 | MTP max 2 | MTP max 3 | MTP max 4 | Standard (IQ3_XXS) | |
|---|---|---|---|---|---|
| Velocità Prompt | 148 t/s | 151 t/s | 148 t/s | 147 t/s | 200 t/s |
| Velocità Gen | 65 t/s | 75 t/s | 73 t/s | 75 t/s | 45 t/s |
| Avg Ctx | 40 K | 40 K | 40 K | 30 K | 80 K |
| Max Ctx | 60 K | 60 K | 60 K | 50 K | 100 K |
Con la cache KV q8, MTP con --spec-draft-n-max 2 offre una generazione più veloce del ~67 % (75 vs 45 t/s) a costo di dimezzare la finestra di contesto media da 80 K a 40 K. La velocità di ingestione del prompt scende da 200 a ~150 t/s perché MTP richiede trasferimenti device-to-host durante la fase di prefill.
Cache KV q5
| MTP max 1 | MTP max 2 | MTP max 3 | MTP max 4 | Standard (IQ3_XXS) | |
|---|---|---|---|---|---|
| Velocità Prompt | 145 t/s | 144 t/s | 141 t/s | 139 t/s | 191 t/s |
| Velocità Gen | 57 t/s | 62 t/s | 67 t/s | 66 t/s | 41 t/s |
| Avg Ctx | 70 K | 60 K | 60 K | 50 K | 130 K |
| Max Ctx | 100 K | 100 K | 90 K | 80 K | 160 K |
Passando alla cache KV q5 si recupera un contesto significativo: --spec-draft-n-max 1 offre un contesto medio di 70 K a 57 t/s — un aumento di velocità di generazione del 39 % rispetto alla decodifica standard, mantenendo comunque la finestra di contesto a una dimensione utile. Con --spec-draft-n-max 3 il contesto scende a 60 K ma la generazione raggiunge 67 t/s (+63 %).
Conclusioni Qwen 3.6 27B
MTP è genuinamente utile per il modello denso 27B. Il punto ottimale su 16 GB di VRAM è:
- Cache KV q8 +
--spec-draft-n-max 2— velocità raw migliore (75 t/s), contesto ridotto a 40–60 K - Cache KV q5 +
--spec-draft-n-max 1— miglior bilanciamento velocità-contesto (57 t/s, contesto medio 70 K)
Qwen 3.6 35B MTP vs Standard
Il modello 35B utilizza un’architettura Mixture-of-Experts (MoE) (35B-A3B significa 35B parametri totali, ~3B attivi per token). I modelli MoE di solito beneficiano maggiormente di MTP perché il routing sparse mantiene la testata MTP computazionalmente economica rispetto a un intero passaggio forward.
Cache KV q8
| MTP max 1 | MTP max 2 | MTP max 3 | MTP max 4 | Standard (IQ3_S) | |
|---|---|---|---|---|---|
| Velocità Prompt | 277 t/s | 277 t/s | 265 t/s | 275 t/s | 368 t/s |
| Velocità Gen | 186 t/s | 189 t/s | 180 t/s | 171 t/s | 146 t/s |
| Avg Ctx | 15 K | 10 K | — | — | 80 K |
| Max Ctx | 80 K | 70 K | 60 K | 50 K | 150 K |
L’architettura MoE offre una velocità di generazione raw impressionante con MTP (+27 % con max 1, +29 % con max 2 vs standard 146 t/s). Ma il problema pratico è il contesto medio. Con la cache KV q8, anche --spec-draft-n-max 1 offre solo 15 K di contesto medio — appena sufficiente per compiti modesti. Profondità di bozza più elevate non hanno affatto un contesto medio utilizzabile su una scheda 16 GB.
Questa è la questione centrale del costo VRAM per MTP sull’hardware consumer: i buffer di bozza aggiuntivi consumano direttamente il budget VRAM residuo, e il modello 35B-A3B con cache KV q8 lascia pochissimo margine.
Cache KV q5
| MTP max 1 | MTP max 2 | MTP max 3 | MTP max 4 | Standard (IQ3_S) | |
|---|---|---|---|---|---|
| Velocità Prompt | 264 t/s | 266 t/s | 270 t/s | 264 t/s | 343 t/s |
| Velocità Gen | 151 t/s | 147 t/s | 137 t/s | 131 t/s | 122 t/s |
| Avg Ctx | 10 K | — | — | — | 120 K |
| Max Ctx | 120 K | 110 K | 110 K | 80 K | 200 K |
La cache KV q5 migliora solo marginalmente la situazione del contesto medio. --spec-draft-n-max 1 offre 10 K di contesto medio a 151 t/s. La decodifica standard con q5 offre 122 t/s con 120 K di contesto medio.
Conclusioni Qwen 3.6 35B
Su una GPU 16 GB, il modello MoE 35B con MTP incontra un muro duro: il contesto utilizzabile medio crolla a 10–15 K token, rendendolo impraticabile per carichi di lavoro reali. La decodifica standard a 122–146 t/s con contesto 80–120 K è significativamente più utile.
Se disponi di 24 GB+ di VRAM, la combinazione 35B + MTP diventa molto più attraente — il problema della finestra di contesto scompare e mantieni il vantaggio di velocità.
Scelta del Valore Corretto per --spec-draft-n-max
La domanda su quanti token speculativi proporre per passo (--spec-draft-n-max) non ha una singola risposta corretta — dipende sia dall’architettura del modello che dalla VRAM disponibile:
- Per 27B denso su 16 GB:
--spec-draft-n-max 2con cache KV q8 è il più veloce,--spec-draft-n-max 1con cache KV q5 è il più amichevole per il contesto. - Per 35B MoE su 16 GB:
--spec-draft-n-max 1è l’unica opzione che mantiene un contesto utilizzabile, e anche solo marginalmente. - Valori più alti (
3,4) aumentano la pressione sulla VRAM senza guadagni di velocità proporzionali — con max 4 si spende approssimativamente la stessa VRAM extra di max 2 ma la velocità di generazione non segue il passo.
Come Abilitare MTP in llama.cpp
Assicurati di utilizzare un GGUF abilitato per MTP (il nome file contiene MTP). Se sei nuovo ai flag di llama.cpp, la Guida Rapida a llama.cpp con CLI e Server copre tutti i fondamenti. Poi avvia llama-server o llama-cli con:
llama-server \
--model Qwen3.6-27B-UD-IQ3_XXS-MTP.gguf \
--ctx-size 40000 \
-ngl 99 --flash-attn on \
--cache-type-k q8_0 --cache-type-v q8_0 \
--spec-type draft-mtp \
--spec-draft-n-max 2
Per la cache KV q5, sostituisci q8_0 con q5_1 o q5_0 e aumenta --ctx-size:
llama-server \
--model Qwen3.6-27B-UD-IQ3_XXS-MTP.gguf \
--ctx-size 80000 \
-ngl 99 --flash-attn on \
--cache-type-k q5_1 --cache-type-v q5_1 \
--spec-type draft-mtp \
--spec-draft-n-max 1
MTP si attiva automaticamente una volta che llama.cpp rileva le testate MTP nel file GGUF e --spec-type draft-mtp è impostato.
Quindi il Qwen3.6-27B-UD-IQ3_XXS.gguf standard non funzionerà in modalità MTP, avrai bisogno di Qwen3.6-27B-UD-IQ3_XXS-MTP.gguf.
Ma il Qwen3.6-27B-UD-IQ3_XXS-MTP.gguf può funzionare sia in modalità di decodifica speculativa che autoregressiva.
Conclusione
Su una GPU 16 GB (RTX 4080), con queste quantizzazioni, MTP di llama.cpp è un chiaro vantaggio per Qwen 3.6 27B e un netto svantaggio per Qwen 3.6 35B nell’uso pratico:
Qwen 3.6 27B (IQ3_XXS) — MTP vale la pena:
- Cache KV q8 + MTP max 2 → ~67 % di generazione più veloce, contesto 40–60 K (vs 80–100 K senza MTP)
- Cache KV q5 + MTP max 1 → ~39 % di generazione più veloce, contesto 70–100 K (vs 130–160 K senza MTP)
- Buon bilanciamento di velocità ed efficienza VRAM con
--spec-draft-n-max 2
Qwen 3.6 35B (IQ3_S) — MTP non è pratico a 16 GB:
- La velocità di generazione è 27–29 % superiore ma il contesto medio crolla a 10–15 K con q8, 10 K con q5
- La decodifica standard a 122–146 t/s con contesto 80–120 K è più utile per compiti reali
- La situazione migliora sostanzialmente su 24 GB+ di VRAM
Sulla carta, la cache KV q5 è la risposta ovvia per massimizzare la finestra di contesto mantenendo i guadagni di velocità di MTP — ma in pratica il calo di qualità passando da q8 a q5 può essere significativo. Testa q5 sui tuoi compiti prima di adottarlo; per i miei carichi di lavoro il degrado era inaccettabile, e q8 con un budget di contesto più stretto rimane il compromesso migliore.
Per una visione più ampia delle opzioni di hosting LLM e dei compromessi infrastrutturali, consulta il pilastro LLM Hosting nel 2026 e Prestazioni LLM nel 2026. Se stai ottimizzando le impostazioni del sampler di Qwen 3.6 insieme a MTP, il Riferimento ai Parametri di Inferenza per LLM Agentic per Qwen 3.6 e Gemma 4 è un utile complemento.