MTP in LM Studio: attivare la Multi-Token Prediction
Il MTP (Multi-Token Prediction) è una delle poche tecniche di inferenza che offre un reale aumento dei token/sec in LM Studio senza compromettere la qualità. Questa tecnica, resa popolare da DeepSeek V3, arriva ora nel runtime llama.cpp utilizzato da LM Studio. Questa guida spiega cos'è il MTP, con quali modelli funziona, come attivarlo in LM Studio e quale incremento aspettarti — senza promettere la luna.
#Perché il MTP accelera l'inferenza
L'inferenza di un LLM è limitata dalla memoria: a ogni token generato, occorre rileggere tutti i pesi del modello dalla VRAM. Per un 32B in Q4, sono ~19 GB trasferiti a ogni passo. Anche una RTX 4090 raggiunge al massimo circa 1 TB/s di banda passante, il che limita meccanicamente la velocità a poche decine di token al secondo.
Il MTP supera questo muro in modo semplice: genera più token per passaggio forward, piuttosto che uno solo. Se si riesce a produrre 2 o 3 token validi con un solo ciclo di accesso alla memoria, il throughput aumenta nella stessa proporzione — senza dover acquistare una scheda più veloce. Questo è ciò che distingue il MTP dalle altre «ottimizzazioni» che si limitano a sfruttare meglio le risorse di calcolo (Flash Attention, prefix caching): qui si affronta direttamente il vincolo dominante.
#Cosa fa realmente il MTP
Il tuo ChatGPT privato e gratuito sulla tua macchina in 1 ora — LM Studio, Ollama, Open WebUI, i tuoi documenti, senza cloud.
- Spazio online a vita
- PDF + file
- Aggiornamenti a vita
In pratica, un modello addestrato con MTP non ha una sola testa di predizione. Ne ha due, tre o quattro, in cascata: la prima predice il token N+1, la seconda cerca di predire il token N+2, ecc. Durante l'addestramento, queste teste ausiliarie imparano ad anticipare i token successivi a partire dagli stati nascosti intermedi. Una volta addestrato, il modello può usare queste teste durante l'inferenza per produrre più candidati in una sola volta.
Durante la generazione, nei runtime attuali coesistono due schemi:
- MTP in decoding speculativo
- Le teste ausiliarie producono una bozza di 2-4 token, poi il modello principale verifica in un solo passaggio forward se li accetta. Ogni token rifiutato viene rigenerato. Questa è l'implementazione predefinita in llama.cpp per DeepSeek V3.
- MTP come draft model interno
- Variante in cui le teste secondarie servono soltanto da piccolo modello di bozza e il runtime tratta il tutto come un modello di bozza standard, ma ospitato nello stesso file GGUF. Più semplice da mettere in servizio, ma con un guadagno più modesto.
#Quali modelli supportano veramente il MTP
Il MTP non è un parametro che si può attivare su qualsiasi modello: il modello deve essere stato addestrato con le teste MTP e i pesi corrispondenti devono essere presenti nel file GGUF. Attualmente, l'elenco utile per l'uso locale con LM Studio è breve:
- DeepSeek V3 (base e chat)
- Il pioniere. Architettura MoE 671B con 4 teste MTP. In locale, si punta alle varianti quantizzate in modo aggressivo (Q2_K_XL, IQ3_XS) o ai modelli distillati.
- DeepSeek V3.1 / V3.2 / V4 Flash
- Tutta la famiglia DeepSeek ha ereditato il MTP. Le versioni Flash (≈300B MoE) sono le uniche che riescono davvero a stare su un Mac Studio Ultra o su una configurazione multi-GPU con 80-100 GB di VRAM.
- Qwen3 MoE (selezione di varianti)
- Per diverse varianti Qwen3 MoE sono stati pubblicati pesi GGUF con teste MTP. Controlla la scheda del modello su Hugging Face: la presenza di un campo «mtp_layers» o di un suffisso -mtp nel nome è un buon indicatore.
- Modelli densi classici (Gemma 4, Mistral Small, Qwen 3.5)
- Nessun MTP nativo. LM Studio non farà nulla di speciale. Per questi modelli, l'unico equivalente disponibile è il decoding speculativo classico con un modello draft separato.
#Prerequisiti per LM Studio
- LM Studio recente
- Versione 0.3.10 o successiva. Le versioni più vecchie usano un runtime llama.cpp precedente al supporto MTP e l'opzione semplicemente non compare nell'interfaccia utente.
- Runtime llama.cpp aggiornato
- Il supporto MTP in llama.cpp è arrivato alla fine del 2024 ed è stato stabilizzato nel corso del 2025. LM Studio include diverse versioni del runtime; bisogna selezionare esplicitamente la più recente nella scheda Runtimes.
- VRAM o memoria unificata sufficiente
- Il MTP comporta un modesto consumo aggiuntivo di memoria (le teste ausiliarie sono piccole), ma bisogna comunque caricare l'intero modello. Prevedi la quantità di VRAM normalmente necessaria per la dimensione del modello desiderata, più il 5-10% per la cache KV estesa utilizzata durante la verifica.
- GPU correttamente rilevato
- Il guadagno con MTP si manifesta solo se l'inferenza è limitata dalla GPU. In modalità solo CPU, il beneficio esiste ma è perlopiù marginale e talvolta negativo sui modelli piccoli.
#1. Attivare il runtime aggiornato
Prima di intervenire sul modello, verifica che LM Studio utilizzi una versione di llama.cpp che supporti il MTP. È il passaggio che più spesso viene dimenticato.
- 01Aprire le impostazioni RuntimesIn LM Studio, fai clic sull'icona dell'ingranaggio (Settings), poi vai alla sezione «Runtimes» (o «LM Runtimes», a seconda della versione). Qui puoi vedere i runtime installati: CUDA, Metal, Vulkan, CPU.
- 02Installa la versione più recenteClicca su «Check for updates» accanto al runtime della tua piattaforma. LM Studio scarica una versione recente di llama.cpp integrata nell'applicazione. Il supporto MTP è presente in tutte le build 2025+.
- 03Verificare la versione attivaNella stessa sezione viene mostrata la versione attualmente utilizzata (ad esempio « llama.cpp v0.3.x — CUDA »). Verifica che sia successiva a novembre 2024. Se coesistono più runtime, seleziona il più recente come predefinito.
#2. Caricare un modello con testa MTP
Scarica un modello compatibile con MTP tramite la scheda di ricerca integrata. Digita «DeepSeek V3» o «Qwen3 MoE» e filtra le build GGUF recenti che menzionano MTP. In alternativa, vai direttamente su Hugging Face e trascina il file GGUF nella cartella dei modelli di LM Studio.
Una volta che il modello è visibile nella libreria, caricalo normalmente dalla scheda Chat o dalla scheda Local Server. Prima di cliccare su «Load», apri il pannello «Advanced Configuration»: è lì che appaiono le opzioni MTP quando il modello le dichiara.
#3. Regolare i parametri MTP
Advanced Configuration mostra in generale tre parametri relativi al MTP. I nomi variano in base alla versione di LM Studio, ma il principio rimane lo stesso.
- Enable MTP (o Use MTP heads)
- Interruttore principale. Attivare. Quando è disattivato, il modello ignora le proprie teste ausiliarie e si comporta come un modello classico.
- MTP draft tokens (n_draft)
- Numero di token proposti per passo. Valore tipico: 3 o 4. Al di sopra, il tasso di accettazione cala e il guadagno svanisce. Al di sotto (1-2), il costo di verifica diventa comparabile al guadagno.
- MTP acceptance threshold
- Soglia di confidenza per accettare un token proposto. Il valore predefinito è spesso intorno a 0,7. Più alta = maggiore sicurezza ma minore guadagno. Più bassa = maggiore velocità, ma la qualità dell'output può subire lievi deviazioni.
#4. Misurare il guadagno reale sul tuo computer
Attivare il MTP senza effettuare misurazioni significa rinunciare a metà dei benefici della guida. LM Studio mostra la velocità di generazione in fondo alla chat (tok/s) dopo ogni generazione. Il metodo onesto:
- 01Preparare 3 prompt rappresentativiUn prompt di codice (molto strutturato, tasso di accettazione elevato previsto), un prompt FR fattuale, un prompt creativo libero. Salvali per poterli ripetere esattamente.
- 02Disattivare MTP, misurare la baselineRimuovere il modello dalla memoria, disattivare MTP, ricaricare il modello. Eseguire ogni prompt, annotare il valore medio in tok/s su 3 ripetizioni. Non dimenticare di ignorare la primissima esecuzione (prefill non confrontabile).
- 03Attivare MTP, misurareRimuovere il modello dalla memoria, riattivare MTP, ricaricarlo con esattamente gli stessi parametri (contesto, temperatura, ecc.). Ripetere gli stessi prompt.
- 04ConfrontareCalcolare il rapporto per prompt. È atteso un fattore di 1,5-2× sul codice, 1,3-1,7× sui testi fattuali in francese e 1,1-1,4× sui testi creativi. Se il rapporto è inferiore a 1,2× in tutti i casi, qualcosa non va (runtime troppo vecchio, teste MTP assenti o GPU saturata da altro).
- DeepSeek V3 distillato 32B Q4, RTX 4090
- Baseline ~25 tok/s, con MTP attivato ~42 tok/s su un prompt di codice Python. Sulla prosa francese, ~30 tok/s.
- DeepSeek V4 Flash su Mac Studio M2 Ultra 192 GB
- Baseline ~14 tok/s, MTP attivato ~24 tok/s su codice. Su testo libero, ~18 tok/s. Il guadagno è chiaro anche su Apple Silicon.
- Qwen3 MoE 30B-A3B Q4, RTX 4070 Ti
- Baseline ~38 tok/s, con MTP attivato ~55 tok/s su JSON. Sul testo creativo, il guadagno è limitato a ~46 tok/s.
#Impostazioni avanzate e combinazioni
Il MTP si combina bene con altre ottimizzazioni disponibili in LM Studio. Alcune combinazioni che funzionano:
- MTP + Flash Attention
- Attivare contemporaneamente. Flash Attention riduce l'occupazione di memoria della cache KV durante la verifica delle bozze, il che aiuta quando n_draft è elevato.
- MTP + Q4_K_M (vs Q8)
- Il MTP preserva la qualità anche con una quantizzazione Q4 aggressiva. Non c'è motivo di passare a Q8 «per compensare» — mantieni Q4_K_M e risparmia VRAM.
- MTP + contesto ampio
- Il KV-cache occupa più memoria con MTP (la verifica memorizza più stati intermedi). Su un modello da 32B con un contesto da 32k, prevedi 1-2 GB di VRAM aggiuntivi.
- MTP + batch (Local Server)
- Se gestisci più richieste simultanee tramite il server di LM Studio compatibile con OpenAI, il guadagno MTP si somma a quello del batching. È qui che si vedono le differenze maggiori.
#Risoluzione dei problemi
- L'opzione MTP non appare
- O il runtime è troppo vecchio (verifica la versione in Settings → Runtimes), oppure il modello GGUF non contiene le teste MTP. Scarica una variante esplicitamente contrassegnata MTP.
- MTP attivato, ma nessun guadagno misurato
- Verifica che sia effettivamente la GPU a essere utilizzata (gpu_layers = -1 o uguale al numero totale di strati). Usando solo la CPU, il MTP a volte costa più di quanto renda. Verifica anche che nessun altro processo saturi la VRAM.
- Output che devia o ripetizioni strane
- Acceptance threshold troppo basso. Aumentalo a 0,75-0,8. Se il problema persiste, disattiva MTP: esistono casi patologici con prompt molto atipici.
- LM Studio crasha durante il caricamento
- Un GGUF convertito male con teste MTP corrotte può mandare in crash il runtime. Prova una diversa quantizzazione dello stesso modello, oppure un file pubblicato da un altro autore su Hugging Face.
- Miglioramento visibile nella chat ma non tramite l'API
- Verifica che il Local Server utilizzi effettivamente la stessa configurazione della chat — esiste una pagina di impostazioni separata per il server, in cui MTP deve essere riattivato indipendentemente.
#Per approfondire
Il MTP è una delle leve per migliorare le prestazioni che funzionano davvero in locale. Alcune idee complementari per andare oltre:
- Iniziare con LM Studio
- Se arrivi qui senza aver installato LM Studio, la guida introduttiva copre le basi prima di passare alle impostazioni avanzate.
- Trasformare LM Studio in un server API
- Per esporre un endpoint compatibile con OpenAI e beneficiare del MTP su tutti i tuoi client (Continue.dev, Aider, script Python).
- Plugin LM Studio: quali installare e come
- Al di là del MTP, l'ecosistema dei plugin e gli SDK lmstudio-js/python aprono altre possibilità.
Un feedback, un errore, una precisazione? Facci sapere, così la guida migliora per tutti.