MTP dans LM Studio : activer la Multi-Token Prediction
Le MTP (Multi-Token Prediction) est l'une des rares techniques d'inférence qui donne un vrai gain de tokens/sec sur LM Studio sans dégrader la qualité. Popularisée par DeepSeek V3, elle s'invite désormais dans le runtime llama.cpp utilisé par LM Studio. Ce guide explique ce qu'est le MTP, sur quels modèles il marche, comment l'activer dans LM Studio et quel gain attendre — sans promettre la lune.
#Pourquoi le MTP accélère l'inférence
L'inférence d'un LLM est goulot-d'étranglement par la mémoire : à chaque token généré, il faut relire la totalité des poids du modèle depuis la VRAM. Sur un 32B en Q4, c'est ~19 Go qui transitent à chaque pas. Même une RTX 4090 plafonne autour de 1 To/s de bande passante, ce qui plafonne mécaniquement le débit à quelques dizaines de tokens par seconde.
Le MTP contourne ce mur d'une manière simple : générer plusieurs tokens par passe forward, plutôt qu'un seul. Si on peut produire 2 ou 3 tokens valides pour un seul aller-retour mémoire, le débit grimpe d'autant — sans avoir à acheter une carte plus rapide. C'est ce qui distingue le MTP des autres « optimisations » qui se contentent de mieux utiliser le compute (Flash Attention, prefix caching) : ici, on s'attaque directement à la contrainte dominante.
#Ce que fait vraiment le MTP
Concrètement, un modèle entraîné avec MTP n'a pas qu'une seule tête de prédiction. Il en a deux, trois ou quatre, en cascade : la première prédit le token N+1, la deuxième tente le token N+2, etc. Pendant l'entraînement, ces têtes auxiliaires apprennent à anticiper les tokens suivants à partir des états cachés intermédiaires. Une fois entraîné, le modèle peut servir ces têtes en inférence pour produire plusieurs candidats d'un coup.
À la génération, deux schémas coexistent dans les runtimes actuels :
- MTP en speculative decoding
- Les têtes auxiliaires produisent un brouillon de 2-4 tokens, puis le modèle principal vérifie en un seul forward s'il les valide. Tout token rejeté est régénéré. C'est l'implémentation par défaut dans llama.cpp pour DeepSeek V3.
- MTP comme draft model interne
- Variante où les têtes secondaires servent uniquement de petit modèle de brouillon, et le runtime traite ça comme un draft model standard, mais hébergé dans le même fichier GGUF. Plus simple à servir, mais gain plus modeste.
#Quels modèles supportent réellement le MTP
Le MTP n'est pas un réglage qu'on bascule sur n'importe quel modèle : il faut que le modèle ait été entraîné avec les têtes MTP, et que les poids correspondants soient présents dans le fichier GGUF. À l'heure actuelle, la liste utile pour un usage local LM Studio est courte :
- DeepSeek V3 (base et chat)
- Le pionnier. Architecture MoE 671B avec 4 têtes MTP. En local, on vise les variantes quantifiées agressivement (Q2_K_XL, IQ3_XS) ou les distillations.
- DeepSeek V3.1 / V3.2 / V4 Flash
- Toute la lignée DeepSeek a hérité du MTP. Les versions Flash (≈300B MoE) sont les seules qui rentrent vraiment sur un Mac Studio Ultra ou un build multi-GPU 80-100 Go VRAM.
- Qwen3 MoE (sélection de variantes)
- Plusieurs variantes Qwen3 MoE ont publié des poids GGUF avec têtes MTP. Vérifiez la fiche du modèle Hugging Face : la présence d'un champ « mtp_layers » ou d'un suffixe -mtp dans le nom est un bon indicateur.
- Modèles dense classiques (Llama 3, Mistral, Gemma)
- Pas de MTP natif. LM Studio ne fera rien de spécial. Pour ces modèles, le seul équivalent disponible est le speculative decoding classique avec un draft model séparé.
#Prérequis côté LM Studio
- LM Studio récent
- Version 0.3.10 ou supérieure. Les versions plus anciennes utilisent un runtime llama.cpp antérieur au support MTP et l'option n'apparaît tout simplement pas dans l'UI.
- Runtime llama.cpp à jour
- Le support MTP dans llama.cpp est arrivé fin 2024 et a été stabilisé courant 2025. LM Studio embarque plusieurs versions de runtime ; il faut explicitement sélectionner la plus récente dans l'onglet Runtimes.
- VRAM ou mémoire unifiée suffisante
- Le MTP ajoute peu d'overhead mémoire (les têtes auxiliaires sont petites), mais il faut quand même charger le modèle entier. Comptez la VRAM standard pour la taille visée, plus 5-10 % pour le KV-cache étendu utilisé pendant la vérification.
- GPU correctement détecté
- Le gain MTP n'apparaît que si l'inférence est GPU-bound. En mode CPU pur, le bénéfice existe mais est largement marginal et parfois négatif sur les petits modèles.
#1. Activer le runtime à jour
Avant de toucher au modèle, on vérifie que LM Studio utilise une version de llama.cpp qui connaît le MTP. C'est l'étape la plus oubliée.
- 01Ouvrir les paramètres RuntimesDans LM Studio, allez dans l'icône engrenage (Settings) puis dans la section « Runtimes » (ou « LM Runtimes » selon les versions). Vous y voyez les runtimes installés : CUDA, Metal, Vulkan, CPU.
- 02Installer la dernière versionCliquez sur « Check for updates » à côté du runtime de votre plateforme. LM Studio télécharge une version récente du llama.cpp embarqué. Le support MTP est présent dans toutes les builds 2025+.
- 03Vérifier la version activeDans la même section, la version actuellement utilisée est affichée (par exemple « llama.cpp v0.3.x — CUDA »). Confirmez qu'elle est postérieure à novembre 2024. Si plusieurs runtimes coexistent, sélectionnez le plus récent comme défaut.
#2. Charger un modèle avec tête MTP
Téléchargez un modèle compatible MTP via l'onglet de recherche intégré. Tapez « DeepSeek V3 » ou « Qwen3 MoE » et filtrez sur les builds GGUF récentes qui mentionnent MTP. À défaut, passez par Hugging Face en direct et glissez le fichier GGUF dans le dossier des modèles de LM Studio.
Une fois le modèle visible dans la bibliothèque, chargez-le normalement depuis l'onglet Chat ou l'onglet Local Server. Avant de cliquer sur « Load », ouvrez le panneau « Advanced Configuration » : c'est là que les options MTP apparaissent quand le modèle les déclare.
#3. Régler les paramètres MTP
L'Advanced Configuration expose en général trois paramètres liés au MTP. Les noms varient selon la version de LM Studio, mais le principe reste le même.
- Enable MTP (ou Use MTP heads)
- Interrupteur principal. À activer. Désactivé, le modèle ignore ses têtes auxiliaires et se comporte comme un modèle classique.
- MTP draft tokens (n_draft)
- Nombre de tokens proposés par passe. Valeur typique : 3 ou 4. Au-delà, le taux d'acceptation chute et le gain s'évapore. En dessous (1-2), le coût de vérification devient comparable au gain.
- MTP acceptance threshold
- Seuil de confiance pour accepter un token proposé. Par défaut souvent autour de 0.7. Plus haut = plus de sécurité mais moins de gain. Plus bas = plus rapide mais qualité de sortie qui peut dériver subtilement.
#4. Mesurer le gain réel sur votre machine
Activer le MTP sans mesurer, c'est se priver de la moitié du bénéfice du guide. LM Studio affiche le débit en bas du chat (tok/s) après chaque génération. La méthode honnête :
- 01Préparer 3 prompts représentatifsUn prompt de code (très structuré, taux d'acceptation élevé attendu), un prompt FR factuel, un prompt créatif libre. Sauvegardez-les pour pouvoir les rejouer à l'identique.
- 02Désactiver MTP, mesurer la baselineDécharger le modèle, désactiver MTP, recharger. Lancer chaque prompt, noter le tok/s moyen sur 3 répétitions. Ne pas oublier d'ignorer le tout premier run (prefill non comparable).
- 03Activer MTP, mesurerDécharger, réactiver MTP, recharger avec exactement les mêmes paramètres (contexte, température, etc.). Refaire les mêmes prompts.
- 04ComparerCalculer le ratio par prompt. Un facteur 1.5-2× sur le code est attendu, 1.3-1.7× sur le FR factuel, 1.1-1.4× sur le créatif. En dessous de 1.2× partout, quelque chose ne va pas (runtime trop ancien, têtes MTP absentes, ou GPU saturé par autre chose).
- DeepSeek V3 distillé 32B Q4, RTX 4090
- Baseline ~25 tok/s, MTP activé ~42 tok/s sur un prompt de code Python. Sur de la prose française, ~30 tok/s.
- DeepSeek V4 Flash sur Mac Studio M2 Ultra 192 Go
- Baseline ~14 tok/s, MTP activé ~24 tok/s sur du code. Sur du texte libre, ~18 tok/s. Le gain est franc même sur Apple Silicon.
- Qwen3 MoE 30B-A3B Q4, RTX 4070 Ti
- Baseline ~38 tok/s, MTP activé ~55 tok/s sur du JSON. Sur du texte créatif, gain limité à ~46 tok/s.
#Réglages avancés et combinaisons
Le MTP se combine bien avec d'autres optimisations disponibles dans LM Studio. Quelques associations qui marchent :
- MTP + Flash Attention
- À activer en même temps. Flash Attention réduit le coût mémoire du KV-cache pendant la vérification des brouillons, ce qui aide quand n_draft est élevé.
- MTP + Q4_K_M (vs Q8)
- Le MTP préserve la qualité même sur Q4 agressif. Pas de raison de monter en Q8 « pour compenser » — gardez Q4_K_M et économisez la VRAM.
- MTP + grand contexte
- Le KV-cache pèse plus lourd avec MTP (la vérification stocke davantage d'états intermédiaires). Sur un 32B en 32k contexte, comptez 1-2 Go VRAM supplémentaires.
- MTP + batch (Local Server)
- Si vous servez plusieurs requêtes simultanées via le serveur OpenAI-compatible de LM Studio, le gain MTP se cumule au gain de batching. C'est là qu'on voit les plus gros écarts.
#Dépannage
- L'option MTP n'apparaît pas
- Soit le runtime est trop ancien (vérifiez la version dans Settings → Runtimes), soit le modèle GGUF ne contient pas les têtes MTP. Téléchargez une variante explicitement marquée MTP.
- MTP activé, mais zéro gain mesuré
- Vérifiez que le GPU est bien la cible (gpu_layers = -1 ou égal au total de couches). Sur CPU pur, le MTP coûte parfois plus qu'il ne rapporte. Vérifiez aussi qu'aucun autre process ne sature la VRAM.
- Sortie qui dérive ou répétitions étranges
- Acceptance threshold trop bas. Remontez-le à 0.75-0.8. Si le problème persiste, désactivez MTP : il existe des cas pathologiques sur des prompts très atypiques.
- LM Studio crashe au chargement
- Un GGUF mal converti avec têtes MTP corrompues peut planter le runtime. Essayez une autre quantization du même modèle, ou un fichier d'un autre publisher sur Hugging Face.
- Gain visible sur le chat mais pas via l'API
- Vérifiez que le Local Server utilise bien la même configuration que le chat — il existe une page de réglages séparée pour le serveur, où MTP doit être réactivé indépendamment.
#Pour aller plus loin
Le MTP est un des leviers de performance qui marchent vraiment en local. Quelques pistes complémentaires pour pousser plus loin :
- Démarrer avec LM Studio
- Si vous arrivez ici sans avoir installé LM Studio, le guide de démarrage couvre les bases avant de toucher aux réglages avancés.
- Transformer LM Studio en serveur API
- Pour exposer un endpoint OpenAI-compatible et bénéficier du MTP sur tous vos clients (Continue.dev, Aider, scripts Python).
- Plugins LM Studio : lesquels installer et comment
- Au-delà du MTP, l'écosystème de plugins et le SDK lmstudio-js/python ouvrent d'autres marges de manœuvre.
Un retour, une erreur, une précision ? Faites-nous signe, ça améliore le guide pour tout le monde.