Multi-token prediction (MTP) è stata integrata in llama.cpp il 16 maggio tramite la PR #22673 di am17an. La feature arriva in beta — dietro il flag --mtp su llama-cli e llama-server, disattivata di default.
Un benchmark della community pubblicato nelle prime 24 ore dal merge ha riportato: Qwen 3.6-27B decodifica a 65 tok/s su una singola RTX 5090, contro 38 tok/s senza MTP — uno speedup di 1,71× in Q4_K_M senza regressione di qualità percepibile in confronti di prompt fianco a fianco. Per ora è l’unico dato disponibile; una copertura più ampia di build × modello richiederà un paio di cicli di refresh.
Cos’è davvero MTP
Il modello viene addestrato con teste di output aggiuntive che predicono i prossimi 2, 3 o 4 token simultaneamente dallo stesso stato nascosto condiviso del backbone. La testa principale poi ri-esegue per verificare la sequenza candidata. Se i token speculativi corrispondono, li ottieni praticamente gratis. Altrimenti si torna al decoding token-per-token per quel passo.
Questo condensa ciò che lo speculative decoding fa tradizionalmente — far girare un modello draft piccolo accanto a un modello target grande — in un singolo modello con teste di predizione integrate. L’overhead è all’incirca un layer transformer aggiuntivo per posizione di predizione extra, non una seconda rete completa. Il costo in memoria è basso; il costo di throughput durante verifiche fallite è lo svantaggio principale, ma su modelli addestrati per MTP il tasso di successo è abbastanza alto da rendere il decoding medio sensibilmente più veloce.
Cosa richiede questo al modello
MTP richiede teste di predizione cotte nel training — la runtime non può sintetizzarle a posteriori. Il benchmark citato usava Qwen 3.6-27B in Q4_K_M; il flag --mtp è un no-op per qualsiasi modello il cui checkpoint non contenga i pesi delle teste aggiuntive, quindi lasciarlo attivo di default non fa danno.
Il paper di DeepSeek-V3 ha reso popolare MTP come obiettivo ausiliario di training. Quali modelli open-weights pubblicati dopo il paper di DeepSeek-V3 portano le teste nei loro checkpoint pubblici — e quante posizioni in avanti — lo cataloghiamo per modello al prossimo refresh dei dati, citando direttamente ciascuna model card invece di affidarsi a voci architetturali.
Riserve
- Beta significa beta. La PR #22673 stessa lo segnala; aspettati spigoli e tieni d’occhio il tracker di issue llama.cpp collegato prima di affidartici in produzione.
- Gli speedup scalano con ciò che strozza il decoding. Su rig ricchi di compute e ben alimentati di banda, la passata speculativa ha margine; su rig limitati dalla banda, il guadagno si riduce. Il 1,71× su una 5090 è un punto su quel gradiente — non dare per scontato che sia universale.
Come attivarlo
Compila llama.cpp da main dopo il 16 maggio e passa --mtp a llama-server o llama-cli. Il supporto upstream in Ollama, LM Studio e Jan tipicamente segue llama.cpp main con un ciclo di release di ritardo — controlla le release notes di ciascuna runtime per il primo build che lo include.
Fonti
- PR #22673 di llama.cpp — Supporto MTP (am17an, integrata il 16/05/2026)
- Gist della community: eseguire Qwen 3.6 con MTP (38 → 65 tok/s su RTX 5090, benchmark)
- Tutorial Multi-token prediction — DataCamp