🔍 Read the full analysis: How To Use 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 performance improvements to its Metal Performance Shaders backend for Apple silicon. Hugging Face’s PyTorch team reports faster decoding and lower memory use in specific tests, but results are workload-dependent; 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 the Metal Performance Shaders (MPS) backend used on Apple silicon Macs, as detailed in the original analysis. The PyTorch team at Hugging Face reports faster decoding for two tested language models and sharply lower peak memory in a video-decoding test, while warning that results depend on the workload and setup.
On an M3 Ultra running torch.compile, Hugging Face 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, the team reported 123.6 tokens per second, up from 23.6. Those figures apply to the named models and test configuration; they do not establish equivalent gains on other Macs or models.
The release routes eligible single-row linear layers through specialized matrix-vector kernels and fuses some bias additions, targeting the repeated operations involved in language-model token generation. Hugging Face reports a 1.23× geometric-mean speedup across 96 BF16 layer shapes sampled from real models, and says vocabulary softmax was about eight times faster in its measurements. A native grouped matrix multiplication path for mixture-of-experts models also reduces GPU-to-CPU synchronization and speeds up top-k routing, according to the team.
PyTorch 2.15 supports torch.float8_e4m3fn tensors on MPS. The one-byte format uses half the storage of BF16, and the scaled matrix multiplication operation supports tensorwise or rowwise scaling. Other reported additions include complex LU and triangular solves, QR decomposition, convolutions, padding, dropout, interpolation backward and reductions. The release requires macOS 15 or later and Python 3.11 or later.
Faster Local Models, Lower Memory
The changes could make some local AI and creative workloads more practical on Macs by reducing per-token latency or the memory required for a particular operation. Faster decoding can make responses arrive sooner, while FP8’s smaller storage footprint may help workloads fit within available memory. These are potential benefits, not guarantees: actual results depend on model architecture, chip, software configuration and generation settings.
Hugging Face also says tiled VAE decoding for Wan2.2 peaked at about 8 GiB in 2.15, compared with 270 GiB in its earlier test. It reports that an image-padding change addressed a Qwen-Image-2.1 VAE issue, with an encode-decode round trip reaching 29.95 dB PSNR, versus 10.06 dB in 2.14. Lower memory use and improved output fidelity can matter as much as speed, but each figure describes a specific test rather than a general result across video or image-generation workflows.
For developers, the update also signals work on MPS at the level of dedicated Metal kernels and backend operations. That can reduce reliance on less suitable execution paths for some workloads. Users should still test the models and tasks they actually run, checking speed, memory and output quality before relying on the reported gains.
Apple Silicon Mac compatible PyTorch GPU
As an affiliate, we earn on qualifying purchases.
As an affiliate, we earn on qualifying purchases.
How MPS Reached This Release
MPS is PyTorch’s backend for using 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 unexpectedly high memory use. The team describes its approach as testing models from the Hugging Face Hub and addressing gaps upstream, including by replacing some MPSGraph routes with dedicated Metal kernels.
PyTorch 2.15 builds on work in PyTorch 2.14, which had already introduced matrix-vector kernels for torch.mm. The newer release connects eligible F.linear calls to those kernels, aiming at single-row inputs common during language-model decoding. Hugging Face says it worked with PyTorch maintainers and community contributors on the MPS changes.
“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.
Benchmark Scope and Reproducibility
The published material does not give enough detail to independently reproduce every benchmark, including complete software versions, run counts and measurement conditions. The decoding results specify an M3 Ultra and torch.compile, but do not show how performance varies across other Apple silicon chips or configurations. The Wan2.2 memory result is also not broken down across video resolutions, settings or pipelines.
The Qwen-Image-2.1 result uses PSNR, a measure of image similarity, but the material does not report broader evaluations across images or workflows. FP8 tensor and scaled matrix multiplication support are described as release features; the practical accuracy and memory effects depend on how an application chooses quantization and scaling. The reported measurements should not be read as independently verified, general-purpose benchmarks.
As an affiliate, we earn on qualifying purchases.
Test Your Mac and Watch 2.16
Users considering an update should check that their environment meets the macOS 15 and Python 3.11 minimums, then compare PyTorch 2.15 against their current setup on the models they use. Useful checks include tokens per second, peak memory and output quality—not speed alone. The release material says MPS availability checks now give a reason when an older operating system or the absence of a Metal GPU prevents use.
Hugging Face’s team previews further MPS work for PyTorch 2.16, including moving attention more fully onto Metal, additional MPSGraph-to-Metal migrations and faster language-model decoding. These are planned items, not confirmed features of 2.15. Their availability and measured effects will need to be checked when the later release and its documentation are published.
As an affiliate, we earn on qualifying purchases.
Key Questions
What changed for MPS in PyTorch 2.15?
PyTorch 2.15 adds FP8 tensor support on MPS and new performance paths for operations including language-model decoding and mixture-of-experts routing. It also includes updates to other operations such as convolutions and QR decomposition.
Which Macs and software versions are supported?
The supplied release material sets requirements of macOS 15 or later and Python 3.11 or later. MPS is the backend for using Apple’s Metal GPU framework in PyTorch; check the release compatibility information for the full setup details.
Will every Apple silicon Mac get the reported decoding speeds?
No such guarantee is established by the reported tests. The figures were measured on an M3 Ultra with torch.compile for two named models. Results can vary with the Mac, model, software stack and generation settings.
What does FP8 support change?
The supported torch.float8_e4m3fn format stores values in one byte, half the storage of BF16. PyTorch’s scaled matrix multiplication can use tensorwise or rowwise scaling, but the practical accuracy and memory effects depend on an application’s implementation.
Are the planned PyTorch 2.16 improvements available now?
No. Hugging Face describes fuller Metal-based attention, further MPSGraph migrations and faster decoding as planned work for 2.16. They are not features confirmed as released in PyTorch 2.15.
Primary source: Hugging Face · via ThorstenMeyerAI.com
Fall Picks
fall essentials
As an affiliate, we earn on qualifying purchases.
