Multi-token prediction (MTP) se integró en llama.cpp el 16 de mayo mediante la PR #22673 de am17an. La función llega en beta — detrás del flag --mtp en llama-cli y llama-server, desactivada por defecto.
Un benchmark comunitario publicado en el primer día tras el merge reportó: Qwen 3.6-27B decodifica a 65 tok/s en una sola RTX 5090, frente a 38 tok/s sin MTP — un speedup de 1,71× en Q4_K_M sin regresión de calidad perceptible en comparaciones de prompts lado a lado. Ese es el único punto de datos por ahora; una cobertura más amplia de build × modelo tomará un par de ciclos de actualización.
Qué es realmente MTP
El modelo se entrena con cabezas de salida adicionales que predicen los siguientes 2, 3 o 4 tokens simultáneamente desde el mismo estado oculto compartido del backbone. La cabeza principal vuelve a ejecutarse para verificar la secuencia candidata. Si los tokens especulativos coinciden, los obtienes prácticamente gratis. Si no, se vuelve al decoding token a token para ese paso.
Esto comprime lo que hace tradicionalmente el speculative decoding — ejecutar un modelo draft pequeño junto a un modelo target grande — en un solo modelo con cabezas de predicción integradas. El overhead es aproximadamente una capa transformer adicional por posición de predicción extra, no una segunda red completa. El coste de memoria es bajo; el coste de throughput durante verificaciones fallidas es el inconveniente principal, pero en modelos entrenados para MTP la tasa de acierto es lo suficientemente alta como para que el decoding promedio sea materialmente más rápido.
Lo que esto requiere del modelo
MTP necesita cabezas de predicción integradas en el entrenamiento — la runtime no puede sintetizarlas a posteriori. El benchmark citado usó Qwen 3.6-27B en Q4_K_M; el flag --mtp es un no-op para cualquier modelo cuyo checkpoint no incluya los pesos de cabezas adicionales, así que dejarlo activado por defecto no causa daño.
El artículo de DeepSeek-V3 popularizó MTP como objetivo auxiliar de entrenamiento. Qué modelos open-weights publicados tras el artículo de DeepSeek-V3 llevan las cabezas en sus checkpoints públicos — y cuántas posiciones por delante — lo catalogaremos por modelo en la próxima actualización de datos, citando directamente cada model card en vez de basarnos en rumores arquitectónicos.
Reservas
- Beta significa beta. La propia PR #22673 lo señala; espera asperezas y vigila el tracker de issues de llama.cpp vinculado antes de depender de ello en producción.
- Los speedups escalan con lo que limita el decoding. En rigs ricos en compute y alimentados con bandwidth, la pasada especulativa tiene margen; en rigs limitados por bandwidth, la ganancia se reduce. El 1,71× en una 5090 es un punto en ese gradiente — no asumas que es universal.
Cómo activarlo
Compila llama.cpp desde main tras el 16 de mayo y pasa --mtp a llama-server o llama-cli. El soporte upstream en Ollama, LM Studio y Jan suele ir un ciclo de release por detrás de llama.cpp main — consulta las notas de release de cada runtime para saber qué build lo recoge primero.
Fuentes
- PR #22673 de llama.cpp — Soporte MTP (am17an, mergeada el 16/05/2026)
- Gist comunitario: ejecutar Qwen 3.6 con MTP (38 → 65 tok/s en RTX 5090, benchmark)
- Tutorial Multi-token prediction — DataCamp