All news

Multi-token prediction approda in llama.cpp (beta)

La PR #22673 ha integrato il supporto MTP in llama.cpp il 16 maggio 2026. Un benchmark della community su Qwen 3.6-27B ha riportato un salto della velocità di decoding da 38 a 65 tok/s su una singola RTX 5090 — uno speedup di 1,71×.

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