All news

Multi-token prediction arrive dans llama.cpp (beta)

La PR #22673 a intégré le support MTP dans llama.cpp le 16 mai 2026. Un benchmark communautaire sur Qwen 3.6-27B a mesuré un saut de vitesse de décodage de 38 à 65 tokens/s sur une seule RTX 5090 — un speedup de 1,71×.

Multi-token prediction (MTP) a été intégrée à llama.cpp le 16 mai via la PR #22673 par am17an. La fonctionnalité est en beta — derrière le flag --mtp sur llama-cli et llama-server, désactivée par défaut.

Un benchmark communautaire posté dans la première journée après le merge rapporte : Qwen 3.6-27B décode à 65 tokens/s sur une seule RTX 5090, contre 38 tokens/s sans MTP — un speedup de 1,71× en Q4_K_M sans régression de qualité perceptible en comparaison de prompts côte à côte. C’est le seul point de mesure pour l’instant ; une couverture plus large build × modèle prendra quelques cycles de rafraîchissement.

Ce qu’est réellement MTP

Le modèle est entraîné avec des têtes de sortie supplémentaires qui prédisent simultanément les 2, 3 ou 4 prochains tokens à partir du même état caché de backbone partagé. La tête principale repasse ensuite pour vérifier la séquence candidate. Si les tokens spéculatifs correspondent, vous les obtenez essentiellement gratuitement. Sinon, on retombe sur du decoding token-par-token pour cette étape.

Cela condense ce que le speculative decoding fait traditionnellement — faire tourner un petit modèle draft à côté d’un grand modèle target — dans un seul modèle avec des têtes de prédiction intégrées. Le surcoût correspond grossièrement à une couche transformer additionnelle par position de prédiction supplémentaire, pas à un second réseau complet. Le coût mémoire est faible ; le coût en throughput lors des vérifications échouées est le principal inconvénient, mais sur des modèles entraînés pour MTP, le taux de réussite est suffisamment élevé pour que le decoding moyen soit nettement plus rapide.

Ce que cela exige du modèle

MTP nécessite des têtes de prédiction intégrées à l’entraînement — la runtime ne peut pas les synthétiser après coup. Le benchmark cité utilisait Qwen 3.6-27B en Q4_K_M ; le flag --mtp est un no-op pour tout modèle dont le checkpoint ne contient pas les poids de têtes supplémentaires, donc le laisser actif par défaut ne pose pas de problème.

L’article DeepSeek-V3 a popularisé MTP comme objectif auxiliaire d’entraînement. Quels modèles open-weights publiés après l’article DeepSeek-V3 portent les têtes dans leurs checkpoints publics — et combien de positions en avance — nous le cataloguerons modèle par modèle au prochain rafraîchissement de données, en citant directement chaque carte de modèle plutôt qu’en se basant sur des rumeurs architecturales.

Réserves

  • Beta veut dire beta. La PR #22673 elle-même le signale ; attendez-vous à des angles vifs et surveillez le tracker d’issues llama.cpp lié avant de vous y appuyer en production.
  • Les speedups dépendent du bottleneck du décodage. Sur des rigs riches en compute et nourris en bande passante, la passe spéculative a de la marge ; sur des rigs limités par la bande passante, le gain se réduit. Le 1,71× sur une 5090 est un point sur ce gradient — ne supposez pas que c’est universel.

Comment l’activer

Compilez llama.cpp depuis main après le 16 mai et passez --mtp à llama-server ou llama-cli. Le support upstream dans Ollama, LM Studio et Jan suit typiquement llama.cpp main avec un cycle de release de retard — vérifiez les notes de release de chaque runtime pour savoir quel build l’intègre en premier.

Sources