Multi-token prediction (MTP) foi integrada ao llama.cpp em 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, desativada por padrão.
Um benchmark da comunidade publicado no primeiro dia após o merge reportou: Qwen 3.6-27B decodifica a 65 tok/s em uma única 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 levará alguns ciclos de atualizaçã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 simultaneamente a partir do mesmo estado oculto compartilhado do backbone. A cabeça principal então roda novamente para verificar a sequência candidata. Se os tokens especulativos coincidirem, você os obtém essencialmente de graça. Caso contrário, recai-se em decoding token a token para essa etapa.
Isso comprime o que o speculative decoding tradicionalmente faz — rodar um modelo draft pequeno ao lado de um modelo target grande — em um único modelo com cabeças de predição integradas. O overhead corresponde a grosso modo 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 falhas é a principal desvantagem, mas em modelos treinados para MTP a taxa de acerto é alta o suficiente para que o decoding médio seja materialmente mais rápido.
O que isso exige do modelo
MTP precisa de cabeças de predição embutidas no treinamento — a runtime não consegue sintetizá-las depois. 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, então deixá-la ativada por padrão não causa dano.
O paper do DeepSeek-V3 popularizou MTP como objetivo auxiliar de treinamento. Quais modelos open-weights publicados depois do paper do DeepSeek-V3 carregam as cabeças em seus checkpoints públicos — e quantas posições à frente — catalogaremos por modelo na próxima atualização de dados, citando diretamente cada model card em vez de nos basearmos em rumores arquiteturais.
Ressalvas
- Beta significa beta. A própria PR #22673 sinaliza isso; espere arestas vivas e acompanhe o tracker de issues llama.cpp linkado antes de depender em produção.
- Speedups escalam com o que estrangula o decoding. Em rigs ricos em compute e alimentados de banda, a passada especulativa tem folga; em rigs limitados em banda, o ganho encolhe. O 1,71× em um 5090 é um ponto nesse gradiente — não assuma que é universal.
Como ativar
Compile o llama.cpp a partir de main depois de 16 de maio e passe --mtp para llama-server ou llama-cli. O suporte upstream em Ollama, LM Studio e Jan tipicamente fica um ciclo de release atrás do llama.cpp main — verifique as release notes de cada runtime para o primeiro build que o adota.
Fontes
- PR #22673 do llama.cpp — Suporte MTP (am17an, integrado em 16/05/2026)
- Gist da comunidade: rodar Qwen 3.6 com MTP (38 → 65 tok/s em RTX 5090, benchmark)
- Tutorial Multi-token prediction — DataCamp