Aller au contenu

PyTorch 2.15 accélère jusqu'à 6,5 fois le décodage MoE sur Mac

PyTorch 2.15 ajoute les tenseurs FP8 sur les GPU d'Apple et de nouveaux kernels Metal. Le décodage de Qwen3.6-35B-A3B sur un M3 Ultra bondit de 9,4 à 61,3 tokens par seconde.

Par Tech AI Wire Team

3 min de lecture

XLinkedIn
Un Apple Mac Studio argenté sur un bureau en bois ensoleillé, à côté d'un écran affichant des lignes de code floues, avec un clavier, une souris et des plantes en pot.
MoE decoding on M3 Ultra with torch.compile, tokens per second
Qwen3.6-35B-A3B, 2.14
9.4
Qwen3.6-35B-A3B, 2.15
61.3
LFM2.5-8B-A1B, 2.14
23.6
LFM2.5-8B-A1B, 2.15
123.6

PyTorch 2.15, attendu le 28 octobre 2026, rend les Mac Apple Silicon bien plus rapides pour exécuter des modèles d'IA à mélange d'experts (mixture-of-experts). L'équipe PyTorch de Hugging Face indique que le décodage sur un M3 Ultra est environ 5 à 6,5 fois plus rapide qu'avec la 2.14. La version ajoute aussi les nombres FP8 sur les GPU d'Apple et corrige des problèmes de mémoire et de précision qui cassaient certains modèles d'images.

Ce qu'est MPS et ce qui a changé

MPS est le backend de PyTorch pour les GPU d'Apple, la partie qui exécute votre modèle sur la puce graphique d'un Mac plutôt que sur son CPU. L'article de Hugging Face, signé Irakli Salia et Khushi Agrawal, détaille le travail mené pour la 2.15. Son objectif affiché est de « faire de votre Mac un endroit de premier ordre pour exécuter et entraîner des modèles PyTorch ».

Une grande partie du gain vient du transfert d'opérations vers des kernels Metal écrits à la main. Metal est l'interface bas niveau d'Apple pour le graphisme et le calcul. Auparavant, de nombreuses opérations passaient par MPSGraph, le framework plus généraliste d'Apple, ce qui ajoutait une surcharge.

La version change la façon dont les modèles génèrent du texte. Quand un modèle écrit un token à la fois, F.linear utilise désormais des kernels conçus pour une seule ligne d'entrée. Un nouveau F.grouped_mm natif gère les nombreuses petites multiplications de matrices dont ont besoin les modèles à mélange d'experts. Ces modèles envoient chaque token vers quelques sous-réseaux spécialisés, appelés experts.

Les chiffres

Tous les chiffres viennent de l'article de Hugging Face et ont été mesurés sur du matériel Apple avec torch.compile.

TestPyTorch 2.14PyTorch 2.15
Décodage de Qwen3.6-35B-A3B, M3 Ultra9,4 tokens/s61,3 tokens/s
Décodage de LFM2.5-8B-A1B, M3 Ultra23,6 tokens/s123,6 tokens/s
Softmax sur une ligne de 128 256 tokens57 microsecondes7 microsecondes
Décodage VAE vidéo de Wan2.2, pic de mémoire du pilote270,1 GiB8,1 GiB
Précision du VAE de Qwen-Image-2.1 par rapport au CPU10,06 dB29,95 dB

Les couches linéaires progressent moins : 1,23 fois plus rapides en moyenne sur 96 formes de couches BF16, les grandes couches restant proches de 1x. La correction de précision compte pour les outils d'images. Selon l'article, l'encodeur de Qwen-Image-2.1 produisait une sortie corrompue dans ComfyUI avec la 2.14.

FP8 et autres ajouts

FP8 est un format numérique qui stocke chaque valeur sur un octet, soit la moitié des formats 16 bits courants. PyTorch 2.15 prend en charge les tenseurs FP8 sur MPS, et la multiplication de matrices mise à l'échelle F.scaled_mm fonctionne avec eux.

Autres changements cités dans l'article :

  • Une API de streams, torch.mps.Stream, pour exécuter des tâches en parallèle sur le GPU.
  • Softmax, convolution, padding et dropout plus rapides grâce à des kernels Metal dédiés.
  • Davantage d'algèbre linéaire, dont la factorisation LU complexe et une inversion plus rapide des petites matrices.
  • De nouvelles opérations comme torch.frexp, torch.take et torch.heaviside.

Configuration requise et date de sortie

PyTorch 2.15 nécessite macOS 15 ou plus récent et Python 3.11 ou plus récent sur un Mac Apple Silicon. La prise en charge de Python 3.10 prend fin avec cette version. Les responsables des versions de PyTorch ont confirmé que la 2.14 est la dernière version avec des wheels pour 3.10.

La branche de release a été créée le 5 octobre, et la première release candidate est sortie le 8 octobre. La version finale est prévue pour le 28 octobre. Vous pouvez essayer la release candidate dès maintenant dans un environnement séparé avec uv pip install torch==2.15.0 --index-url https://download.pytorch.org/whl/test/cpu.

L'article présente aussi en avant-première des travaux visant la 2.16, qui peuvent encore changer. L'attention pour le décodage grouped-query sur un M5 Pro passe de 465 à 65 microsecondes lors des premiers tests.

Ce que cela signifie pour les développeurs

Pour quiconque fait tourner des modèles ouverts en local sur un Mac, la 2.15 apporte de gros gains. Les modèles à mélange d'experts sont ceux qui gagnent le plus dans les tests de Hugging Face.

  • Testez la release candidate sur votre propre modèle. Installez-la dans un environnement séparé et comparez les tokens par seconde avec la 2.14 avant le 28 octobre.
  • Mettez d'abord à jour Python et macOS. Les builds sous Python 3.10 ou macOS 14 n'auront pas la 2.15. Planifiez ce changement dès maintenant.
  • Revérifiez vos pipelines d'images. Si les sorties de Qwen-Image-2.1 ou de Wan2.2 semblaient fausses ou si la mémoire saturait, la 2.15 cible exactement ces bugs.
  • Essayez FP8 pour économiser de la mémoire. Un octet par valeur divise la mémoire par deux par rapport aux formats 16 bits. Vérifiez la qualité de sortie sur votre tâche avant de basculer.
  • Comparez les backends d'un matériel à l'autre. La volonté de PyTorch de faire de chaque puce un périphérique natif couvre aussi le nouveau backend TorchNeuron d'AWS Trainium. Un code qui reste indépendant du périphérique peut passer de l'un à l'autre.

Sources

  1. MPS in PyTorch 2.15 - Hugging Face
  2. PyTorch Release 2.15 Key Dates - PyTorch Developer Mailing List
  3. PyTorch 2.15 RC1 produced for pytorch, torchvision & torchaudio - PyTorch Developer Mailing List

Articles liés