🔍 Read the full analysis: A Closer Look At MPS In PyTorch 2.15 on ThorstenMeyerAI.com
Get business pricing on tech for your team
- Business-only prices and quantity discounts
- Tax-exempt purchasing
- Multiple users, one account, clear invoices
TL;DR
PyTorch 2.15 adds FP8 tensor support and new performance paths to its Metal Performance Shaders backend for Apple silicon. Hugging Face’s PyTorch team reports large decoding gains on two tested models and a major memory reduction in one video-decoding workload, but results are workload-specific and not independently detailed enough to generalize.
PyTorch 2.15 adds FP8 tensor support and new performance paths to Metal Performance Shaders (MPS), the backend PyTorch uses to run workloads on Apple silicon GPUs. The PyTorch team at Hugging Face reports faster decoding for two tested language models and lower peak memory in a video-decoding test, but says results depend on the model and setup.
On an M3 Ultra using torch.compile, the Hugging Face team measured Qwen3.6-35B-A3B decoding at 61.3 tokens per second in PyTorch 2.15, compared with 9.4 in 2.14. For LFM2.5-8B-A1B, it reported 123.6 tokens per second, up from 23.6. These figures apply to the named models and test configuration; they do not establish comparable gains across other chips, models or software setups.
The update routes eligible single-row linear layers through specialized matrix-vector kernels and combines some bias additions. The team reports a 1.23× geometric-mean speedup across 96 BF16 layer shapes from real models, as well as vocabulary softmax running about eight times faster in its measurements. A native grouped matrix multiplication path for mixture-of-experts models is also intended to reduce GPU-to-CPU synchronization and speed up top-k routing.
PyTorch 2.15 supports torch.float8_e4m3fn tensors on MPS. FP8 values use one byte each, half the storage of BF16 values; scaled matrix multiplication can use tensorwise or rowwise scaling. The team also lists changes to complex LU and triangular solves, QR decomposition, convolutions, padding, dropout, interpolation backward and reductions.
Where MPS Gains Could Help
The changes target two limits that can affect local model use on Macs: memory consumption and per-token decoding speed. FP8’s smaller storage footprint may help fit workloads into available memory, while matrix-vector kernels address repeated operations during language-model decoding. Whether either benefit appears in a user’s application depends on its model, settings and hardware.
Hugging Face also reports that Wan2.2 tiled VAE decoding peaked at about 8 GiB in 2.15, compared with 270 GiB in its earlier test. If comparable results hold for other configurations, lower memory pressure could make some video-generation workloads more practical on a Mac. That single reported test does not show how the change performs across resolutions or pipelines.
Performance is not the only measure. The team says an image-padding change corrected a Qwen-Image-2.1 VAE issue: an encode-decode round trip scored 29.95 dB PSNR in 2.15, compared with 10.06 dB in 2.14. This is evidence from the stated test, not a broad assessment of image quality across tasks.
Apple Silicon Mac compatible external GPU
As an affiliate, we earn on qualifying purchases.
As an affiliate, we earn on qualifying purchases.
MPS Work Builds on 2.14
MPS connects PyTorch workloads to Apple’s Metal GPU framework. Hugging Face’s PyTorch team says that, at the start of 2026, some models on MPS could encounter unsupported operations, performance drops or unexpected memory growth. The team says it has tested models from the Hugging Face Hub and worked with PyTorch maintainers and community contributors to address gaps, including by replacing some MPSGraph paths with dedicated Metal kernels.
The new work builds on PyTorch 2.14, which had already added matrix-vector kernels for torch.mm. Version 2.15 connects eligible F.linear calls to those kernels, targeting single-row inputs commonly encountered during decoding. The release material also says MPS availability checks now explain when an older operating system or the lack of a Metal GPU prevents use.
The minimum requirements are macOS 15 or later for MPS and Python 3.11 or later for PyTorch 2.15. Those requirements may affect users planning an upgrade, even if their hardware supports Apple’s Metal framework.
“The goal is to make your Mac a first-class place to run and train PyTorch models.”
— PyTorch team at Hugging Face
As an affiliate, we earn on qualifying purchases.
Limits of the Published Tests
The reported benchmarks do not include enough detail in the supplied material to reproduce every result independently, including complete software versions, run counts and measurement conditions. The language-model figures specify an M3 Ultra and torch.compile, but should not be treated as representative of all Apple silicon Macs.
It is also unclear how widely the Wan2.2 memory result applies across video resolutions, settings and pipelines. The Qwen-Image-2.1 result uses PSNR for an encode-decode round trip; broader image or workflow evaluations are not provided. FP8 support is part of the release, but practical accuracy and memory effects depend on the application’s scaling and quantization choices.
The reported speedups are not guarantees for every model architecture or workload. Users will need to check their own output quality, memory use and throughput before relying on the new paths in a production workflow.
As an affiliate, we earn on qualifying purchases.
Testing on Your Mac
Users considering an upgrade should first check the macOS 15 and Python 3.11 requirements, then benchmark the models and workflows they actually use. Comparing the same inputs and generation settings across versions can help distinguish a genuine improvement from differences in configuration; output quality and peak memory should be checked alongside speed.
The Hugging Face team has previewed work for PyTorch 2.16, including moving attention more fully onto Metal, further MPSGraph-to-Metal migrations and additional decoding improvements. Those items are planned work, not features confirmed as released in 2.15. The next evidence to watch for is the implementation and performance documentation for that later version.
MacBook Pro M3 Ultra GPU accessories
As an affiliate, we earn on qualifying purchases.
As an affiliate, we earn on qualifying purchases.
Key Questions
What changed in PyTorch 2.15 for Apple silicon?
It adds FP8 tensor support on MPS and new performance paths, including specialized matrix-vector kernels for eligible decoding operations and a grouped matrix multiplication path for mixture-of-experts models.
How much faster are the reported language-model tests?
On an M3 Ultra with torch.compile, Hugging Face reported Qwen3.6-35B-A3B at 61.3 tokens per second, compared with 9.4 in PyTorch 2.14, and LFM2.5-8B-A1B at 123.6, compared with 23.6. These are results for those test configurations, not expected performance on every Mac.
What are the MPS requirements?
The supplied release material lists macOS 15 or later for MPS and Python 3.11 or later for PyTorch 2.15.
Does FP8 guarantee lower memory use or better accuracy?
No. FP8 values use half the storage of BF16 values, but the practical memory and accuracy effects depend on the model, scaling choices and application. The release confirms support for FP8 tensors and scaled matrix multiplication, not a universal accuracy or performance result.
Are the announced 2.16 changes available now?
No. The material describes fuller Metal attention support, additional MPSGraph migrations and further decoding work as planned for 2.16. They are not confirmed features of PyTorch 2.15.
Primary source: Hugging Face · via ThorstenMeyerAI.com
Fall Picks
fall essentials
As an affiliate, we earn on qualifying purchases.
