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 em uma única RTX 5090 — um speedup de 1,71×.

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