All news

Multi-token prediction chega ao llama.cpp (beta)

A PR #22673 integrou o suporte a MTP no llama.cpp em 16 de maio de 2026. Um benchmark da comunidade no Qwen 3.6-27B reportou um salto de velocidade de decoding de 38 para 65 tok/s num único RTX 5090 — um speedup de 1,71×.

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