Comment accélérer les réseaux neuronaux locaux sur Apple Silicon de deux fois avec MTPLX
Si vous avez exécuté les derniers modèles de la famille Qwen sur un MacBook, vous avez probablement remarqué que la génération de longues réponses peut sensiblement atteindre le plafond de la bande passante mémoire. En général, le speculative decoding est utilisé pour accélérer le processus. Mais l'approche classique présente un désagrément : vous devez conserver un second petit modèle draft dans la mémoire unifiée précieuse du Mac.
Récemment, je suis tombé sur le projet MTPLX du développeur Youssof Altoukhi. L'auteur a décidé de tirer chaque goutte de performance de l'architecture Apple Silicon et des têtes de prédiction multi-tokens (MTP) déjà intégrées dans les poids des modèles modernes comme Qwen 3.5, 3.6 et 3.8.
L'astuce derrière MTP sans seconde modèle
La plupart des runtimes existants ignorent simplement les têtes MTP dans les poids. MTPLX fonctionne différemment.
Le modèle lui-même draft plusieurs tokens à l'avance, puis vérifie l'ensemble du batch en un seul passage forward à travers MLX. La validation utilise l'algorithme précis de rejection sampling de Leviathan et Chen avec correction résiduelle.
Qu'est-ce que cela signifie en pratique ? Aucune simplification ou heuristique. La distribution de probabilité reste exactement la même qu'avec une génération pas-à-pas classique. Si vous définissez temperature=0.6 et top_p=0.95, le modèle répondra de manière identique à ce qu'il ferait sans MTP, juste beaucoup plus vite.
Sur un M4 Mac mini avec 16 Go de mémoire, l'accélération atteint 1,6x, et sur les puces M5 Max, l'amélioration va jusqu'à 2,24x.
Ce qu'il y a à l'intérieur : Application et CLI
Le projet existe en deux versions : une application GUI native pour macOS 14+ et un outil CLI classique.
Le client graphique gère tout le travail fastidieux. Au premier lancement, il analyse la mémoire disponible, choisit un modèle adapté, le télécharge, configure un environnement Python isolé, et propose même la gestion du ventilateur pour que votre MacBook ne throttle pas sur les longues tâches.
Si vous préférez le terminal, l'installation se fait via Homebrew ou pip :
brew install youssofal/mtplx/mtplx
mtplx start
Ou via pip :
python3 -m pip install mtplx
Fonctionnalités principales
- Réglage automatique de la profondeur draft. L'efficacité MTP dépend de la puce spécifique et de la largeur du bus mémoire. La commande
mtplx tune --retuneexécute le modèle à différentes profondeurs (Depth 1, 2, 3) directement sur votre matériel et verrouille l'option la plus rapide. Si MTP sur votre configuration perd soudainement contre le mode autorégressif classique, le programme désactivera honnêtement le draft. - Serveur local compatible. La commande
mtplx servedémarre un serveur sur le port 8000. Il est compatible avec les formats OpenAI (/v1/chat/completions) et Anthropic (/v1/messages). Claude Code, Cline, Continue et Open WebUI fonctionnent avec out-of-the-box. - Embeddings et reranking intégrés. Vous n'avez pas besoin d'un serveur séparé pour RAG. Le daemon peut contenir des modèles d'embedding et de reranker MLX en parallèle, les chargeant en mémoire à la demande lors des requêtes.
- Utilitaire Forge pour créer vos propres modèles. Le package inclut l'outil
mtplx forge, qui convertit les dépôts Hugging Face au format MLX, fine-tune l'adaptateur MTP et mesure la vitesse avant et après.
Comment travailler avec le serveur
Après le démarrage du serveur, vous pouvez l'interroger avec des requêtes standard :
curl http://127.0.0.1:8000/v1/chat/completions \
-H 'Content-Type: application/json' \
-d '{"model":"mtplx","messages":[{"role":"user","content":"Привет!"}],"stream":true}'
Si vous construisez un système d'agent ou un pipeline RAG, spécifiez les modèles de recherche dès le départ :
mtplx serve \
--embedding-model mlx-community/Qwen3-Embedding-8B-4bit-DWQ \
--reranker-model vserifsaglam/Qwen3-Reranker-4B-4bit-MLX
Les sessions sont sauvegardées sur SSD, donc lorsque le serveur redémarre, le contexte des longues conversations précédentes se restaure presque instantanément.
Limitations du projet
Il n'y a pas de miracles sans compromis, alors gardez quelques points à l'esprit :
- L'outil est écrit strictement pour Apple Silicon (puces M1 et plus récentes) et repose sur le framework MLX. Les utilisateurs Linux et les propriétaires de GPU NVIDIA devraient utiliser vLLM ou SGLang.
- MTPLX ne peut pas attacher des têtes MTP arbitraires à des modèles aléatoires, car les incompatibilités de poids cassent la précision mathématique de la génération. Vous devez soit utiliser des builds vérifiés du catalogue officiel de l'auteur sur Hugging Face (Qwen 3.5, 3.6, 3.8, Gemma 4), soit entraîner un adaptateur from scratch en utilisant le Forge intégré.
Cela vaut-il la peine d'essayer
Si vous écrivez du code sur un Mac et utilisez des LLMs locaux via Continue ou Cline, MTPLX offre un excellent gain de vitesse sans acheter de logiciel supplémentaire. Sur des modèles comme Qwen 3.8 27B, la différence dans la réactivité de l'autocomplétion et la génération de code est ressentie immédiatement.
Le projet est distribué sous la licence permissive Apache-2.0, le code source est propre et les benchmarks sont reproductibles directement depuis le terminal via la commande mtplx bench. Une trouvaille exceptionnelle pour le développement local.
Projets similaires