Multi-token prediction (MTP) foi integrada no llama.cpp a 16 de maio através da PR #22673 de am17an. A funcionalidade chega em beta — atrás da flag --mtp em llama-cli e llama-server, desactivada por defeito.
Um benchmark da comunidade publicado no primeiro dia após o merge reportou: Qwen 3.6-27B descodifica a 65 tok/s num único RTX 5090, contra 38 tok/s sem MTP — um speedup de 1,71× em Q4_K_M sem regressão de qualidade perceptível em comparações de prompts lado a lado. Por enquanto é o único ponto de dados; uma cobertura mais ampla de build × modelo demorará alguns ciclos de actualização.
O que é realmente MTP
O modelo é treinado com cabeças de saída adicionais que predizem os próximos 2, 3 ou 4 tokens em simultâneo a partir do mesmo estado oculto partilhado do backbone. A cabeça principal volta depois a correr para verificar a sequência candidata. Se os tokens especulativos coincidirem, obtém-se essencialmente de graça. Caso contrário, recai-se em decoding token a token para esse passo.
Isto comprime o que o speculative decoding faz tradicionalmente — executar um modelo draft pequeno ao lado de um modelo target grande — num único modelo com cabeças de predição integradas. O overhead corresponde grosso modo a uma camada transformer adicional por posição de predição extra, não a uma segunda rede completa. O custo de memória é baixo; o custo em throughput durante verificações falhadas é o principal inconveniente, mas em modelos treinados para MTP a taxa de acerto é suficientemente alta para que o decoding médio seja materialmente mais rápido.
O que isto exige do modelo
MTP precisa de cabeças de predição cozidas no treino — a runtime não consegue sintetizá-las à posteriori. O benchmark citado usou Qwen 3.6-27B em Q4_K_M; a flag --mtp é um no-op para qualquer modelo cujo checkpoint não contenha os pesos das cabeças adicionais, portanto deixá-la activa por defeito não faz mal.
O artigo do DeepSeek-V3 popularizou MTP como objectivo auxiliar de treino. Quais modelos open-weights publicados depois do artigo do DeepSeek-V3 carregam as cabeças nos seus checkpoints públicos — e quantas posições à frente — catalogaremos por modelo na próxima actualização de dados, citando directamente cada model card em vez de basearmo-nos em rumores arquitecturais.
Reservas
- Beta significa beta. A própria PR #22673 alerta para isto; conte com arestas vivas e siga o tracker de issues llama.cpp ligado antes de depender em produção.
- Speedups escalam com aquilo que estrangula o decoding. Em rigs ricos em compute e alimentados em largura de banda, o passe especulativo tem folga; em rigs limitados em largura de banda, o ganho encolhe. O 1,71× num 5090 é um ponto nesse gradiente — não assuma que é universal.
Como activar
Compile o llama.cpp a partir de main depois de 16 de maio e passe --mtp a llama-server ou llama-cli. O suporte upstream em Ollama, LM Studio e Jan tipicamente fica um ciclo de release atrás de llama.cpp main — verifique as release notes de cada runtime para o primeiro build que o adopta.
Fontes
- PR #22673 do llama.cpp — Suporte MTP (am17an, integrado em 16/05/2026)
- Gist da comunidade: correr Qwen 3.6 com MTP (38 → 65 tok/s em RTX 5090, benchmark)
- Tutorial Multi-token prediction — DataCamp