🔍 Read the full analysis: MPS In PyTorch 2.15 on ThorstenMeyerAI.com
TL;DR
PyTorch 2.15 adds FP8 tensor support and performance changes to its Metal Performance Shaders backend for Apple silicon Macs. Hugging Face’s PyTorch team reports faster decoding and lower peak memory in specific tests, but results may vary by model and setup; the release requires macOS 15 or later and Python 3.11 or later.
PyTorch 2.15 adds FP8 tensor support and new performance paths to its Metal Performance Shaders (MPS) backend for Apple silicon Macs, according to the PyTorch team at Hugging Face in the original analysis. The team reports faster decoding for selected language models and substantially lower peak memory in one video-decoding test, although the results apply to the named workloads and are not guarantees for other Macs or models.
In tests on an M3 Ultra using torch.compile, the Hugging Face team measured Qwen3.6-35B-A3B decoding at 61.3 tokens per second with PyTorch 2.15, compared with 9.4 tokens per second on 2.14. For LFM2.5-8B-A1B, it reported 123.6 tokens per second, up from 23.6. Those figures are results for the specific models and test setup; the published material does not establish that users will see the same performance on different Apple chips or software configurations.
The changes target several parts of MPS execution. Eligible single-row linear layers used in language-model decoding can use specialized matrix-vector kernels, and some bias additions are fused. The team reports a 1.23× geometric-mean speedup across 96 BF16 layer shapes drawn from real models, as well as vocabulary softmax running about eight times faster in its measurements. Mixture-of-experts models also gain a native grouped matrix multiplication path, with fewer GPU-to-CPU synchronizations and faster top-k routing, according to the team.
PyTorch 2.15 supports torch.float8_e4m3fn tensors on MPS. These one-byte values use half the storage of BF16 values, and the scaled matrix multiplication operation can process them with tensorwise or rowwise scaling. The update also includes MPS work for complex LU and triangular solves, QR decomposition, convolutions, padding, dropout, interpolation backward and reductions. Support for the data type is confirmed; practical accuracy and memory effects depend on how a particular application uses FP8 and scaling.
What Changes for Mac Model Runs
The update could make some local inference and creative workloads more practical on Apple silicon by reducing per-token latency or the memory needed for a task. Decoding performance matters because language models repeatedly perform work to produce each next token. FP8’s smaller storage footprint may also help applications that can use the format and its scaling operations appropriately.
The reported Wan2.2 tiled VAE decoding result points to a possible memory benefit beyond language models: Hugging Face says peak memory was about 8 GiB in PyTorch 2.15, compared with 270 GiB in its earlier test. If similar results hold in comparable workflows, that could change which video-generation tasks fit within available memory. The figure is not a general benchmark for all resolutions, pipelines or Macs, and the release material does not show how widely it applies.
Performance is only useful if a backend also returns sound results. The team says an image-padding change addressed a Qwen-Image-2.1 VAE issue: an encode-decode round trip reached 29.95 dB PSNR, compared with 10.06 dB in PyTorch 2.14. That is a result for the stated test, not a broad assessment of image quality across models or use cases. Users should compare speed, memory use and output quality on their own workloads.
Apple Silicon Mac compatible external GPU
As an affiliate, we earn on qualifying purchases.
As an affiliate, we earn on qualifying purchases.
How PyTorch MPS Reached 2.15
MPS is PyTorch’s backend for using Apple’s Metal GPU framework. The Hugging Face team says that, at the start of 2026, some models running on MPS encountered unsupported operations, performance drops or unexpected memory growth. Its stated approach has been to test models from the Hugging Face Hub and address backend gaps with PyTorch maintainers and community contributors, including by replacing some MPSGraph paths with dedicated Metal kernels.
PyTorch 2.15 builds on work in version 2.14, which had introduced matrix-vector kernels for torch.mm. The newer release connects eligible F.linear calls to those kernels, aiming at single-row inputs common in language-model decoding. The team has also reported other operations receiving MPS improvements, but the supplied release material does not provide a single benchmark covering the full range of supported models and tasks.
The minimum requirements are macOS 15 and Python 3.11. The release material says MPS availability checks now explain when an older operating system or a missing Metal GPU prevents use. Developers should check PyTorch 2.15 compatibility information before updating an environment, particularly if their application depends on a specific Mac, Python version or model configuration.
“The goal is to make your Mac a first-class place to run and train PyTorch models.”
— PyTorch team at Hugging Face
PyTorch compatible GPU for MacBook Pro
As an affiliate, we earn on qualifying purchases.
As an affiliate, we earn on qualifying purchases.
What the Benchmarks Do Not Show
The benchmark figures come from tests shared by the Hugging Face PyTorch team, which says it worked with PyTorch maintainers and community contributors. The supplied material does not include enough information to independently reproduce every result, such as complete software versions, run counts and measurement conditions. The tokens-per-second comparisons specify an M3 Ultra and torch.compile, but do not establish performance on other Apple silicon systems.
The scope of the Wan2.2 memory comparison is also unclear: the material does not specify how the result changes with resolution, settings or different video pipelines. The Qwen-Image-2.1 PSNR figures describe an encode-decode test, but no broader image set or evaluation is provided. FP8 support is part of the release, while the accuracy and memory trade-offs for an individual application depend on its quantization and scaling choices.
The team has previewed additional work for PyTorch 2.16, including moving attention more fully onto Metal and further migrations away from MPSGraph. Those are plans, not features confirmed as released in version 2.15. The material does not specify a delivery date or guarantee that every previewed item will ship as described.
FP8 tensor support software for Mac
As an affiliate, we earn on qualifying purchases.
As an affiliate, we earn on qualifying purchases.
Testing 2.15 and Watching 2.16
Developers considering the update should first check the macOS 15 and Python 3.11 minimums, then benchmark their own models and workloads. Useful comparisons include tokens per second, peak memory and output quality under the same settings, rather than relying on a result from a different chip or pipeline.
The next stated milestone is the team’s planned work for PyTorch 2.16, which is expected to include more attention operations running on Metal, additional MPSGraph-to-Metal migrations and further language-model decoding improvements. These items remain a preview. Until they are released and tested, the confirmed changes in 2.15—and their performance on a user’s own Mac—are the relevant basis for upgrade decisions.
MacBook Pro M2 Max AI acceleration tools
As an affiliate, we earn on qualifying purchases.
As an affiliate, we earn on qualifying purchases.
Key Questions
What is new for MPS in PyTorch 2.15?
PyTorch 2.15 adds FP8 tensor support to MPS, along with new or improved performance paths for operations including language-model decoding and mixture-of-experts workloads. The update also includes changes to other MPS operations such as convolutions, reductions and QR decomposition.
How much faster is language-model decoding?
In tests on an M3 Ultra with torch.compile, Hugging Face’s PyTorch team reported 61.3 tokens per second for Qwen3.6-35B-A3B, compared with 9.4 on PyTorch 2.14. It reported 123.6 versus 23.6 tokens per second for LFM2.5-8B-A1B. These are model- and setup-specific results, not expected speeds for every Mac.
What are the minimum requirements?
The release material lists macOS 15 or later and Python 3.11 or later. MPS also requires a compatible Metal GPU.
Does FP8 automatically reduce memory use in every model?
No. FP8 values use half the storage of BF16 values, but the benefit in a particular application depends on whether its operations use FP8 and how scaling is configured. Support for FP8 tensors does not by itself guarantee a specific memory reduction or preserve the same output accuracy in every workload.
Which MPS improvements are confirmed for PyTorch 2.16?
None of the 2.16 items described in the release material are confirmed as released features. The team previewed work on Metal attention, further migrations from MPSGraph and faster decoding, but gave no firm delivery details in the supplied material.
Primary source: Hugging Face · via ThorstenMeyerAI.com