How PyTorch 2.15 Handles MPS For AI
AIThis post was created with the assistance of artificial intelligence (AI).

🔍 Read the full analysis: How PyTorch 2.15 Handles MPS For AI on ThorstenMeyerAI.com

Buying for a business?Offer from Amazon

Get business pricing on tech for your team

  • Business-only prices and quantity discounts
  • Tax-exempt purchasing
  • Multiple users, one account, clear invoices
As an affiliate, we earn on qualifying purchases.

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 faster decoding and lower memory use in specific tests, but results are setup-dependent and not guaranteed across Macs or models.

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, as detailed in the original analysis. The Hugging Face PyTorch team reports much faster decoding in tests of two mixture-of-experts language models and sharply lower peak memory in one video-decoding workload, while stressing that results depend on the model and setup.

On an M3 Ultra using 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 version 2.14. For LFM2.5-8B-A1B, the team reported 123.6 tokens per second, up from 23.6. These figures apply to the named models and test configuration; they are not benchmarks for every Apple silicon Mac or PyTorch workload.

The release routes eligible single-row linear layers through specialized matrix-vector kernels and combines some bias additions. The team reports a 1.23-times geometric-mean speedup across 96 BF16 layer shapes drawn from real models, and says vocabulary softmax ran about eight times faster in its measurements. For mixture-of-experts decoding, PyTorch 2.15 adds native grouped matrix multiplication, alongside changes intended to reduce GPU-to-CPU synchronization and speed up top-k routing.

PyTorch 2.15 also supports torch.float8_e4m3fn tensors on MPS. FP8 values use one byte each, half the storage of BF16 values, and the release supports scaled matrix multiplication with tensorwise or rowwise scaling. Other changes cited by the team cover operations including complex LU and triangular solves, QR decomposition, convolutions, padding, dropout, interpolation backward, and reductions.

At a glance
updateWhen: PyTorch 2.15 release; the supplied mate…
The developmentPyTorch 2.15 adds FP8 support and MPS performance changes, with Hugging Face reporting gains in selected Apple silicon workloads.
At a glance
announcementWhen: PyTorch 2.15; requirements and reported…
The developmentPyTorch 2.15 expands the MPS backend for Apple silicon with FP8 support, faster language-model decoding paths and lower peak memory use in a video VAE workload.

What Changes for Mac Model Runs

The update targets two constraints that can limit local AI work on Macs: decoding speed and GPU memory use. Faster single-token processing can make interactive language-model responses feel quicker, while FP8 storage may help some applications fit more data or model weights into available memory. Actual savings and model quality depend on how an application uses the format and its scaling choices.

Hugging Face also reports that tiled VAE decoding for Wan2.2 peaked at about 8 GiB in version 2.15, versus 270 GiB in its earlier test. If comparable results hold in other setups, the change could make some video workflows less demanding on memory. That one reported test does not establish the same reduction across resolutions, pipelines, or Mac configurations.

Correct output matters alongside speed. The team says an image-padding change addressed an issue in Qwen-Image-2.1’s VAE encode-decode round trip: its reported PSNR was 29.95 dB in 2.15, compared with 10.06 dB in 2.14. This is a result for the cited metric and test, not a broad assessment of image quality across tasks.

Products Worth Considering

Apple AirPods Pro 3 Wireless Earbuds with Active Noise Cancellation

Apple AirPods Pro 3 Wireless Earbuds with Active Noise Cancellation

LG UltraGear 27-inch QHD OLED Gaming Monitor, 240Hz, 0.03ms, G-SYNC Compatible, FreeSync Premium Pro, HDMI 2.1, DisplayPort 1.4, Black

LG UltraGear 27-inch QHD OLED Gaming Monitor, 240Hz, 0.03ms, G-SYNC Compatible, FreeSync Premium Pro, HDMI 2.1, DisplayPort 1.4, Black

As an affiliate, we earn on qualifying purchases.

How MPS Reached This Release

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 encountered unsupported operations, performance drops, or unexpected memory growth. The team describes its approach as testing models from the Hugging Face Hub and addressing gaps upstream, including replacing some MPSGraph paths with dedicated Metal kernels.

PyTorch 2.15 builds on work in version 2.14, which had already added matrix-vector kernels for torch.mm. The new release connects eligible F.linear calls to those kernels, targeting single-row inputs common during language-model decoding. The team says it worked with PyTorch maintainers and community contributors on the MPS changes.

The release material also previews possible work for PyTorch 2.16, including moving attention more fully onto Metal and further MPSGraph-to-Metal migrations. Those items are future plans, not features confirmed as released in 2.15.

“The goal is to make your Mac a first-class place to run and train PyTorch models.”

— PyTorch team at Hugging Face

What the Benchmarks Do Not Show

The supplied release material does not include enough detail to independently reproduce every benchmark, including full software versions, run counts, and measurement conditions. The decoding figures specify an M3 Ultra and torch.compile, but it is unclear how results compare across other Apple silicon chips, models, or software configurations.

The reported Wan2.2 memory figure is from one test; the material does not establish how it varies by resolution, generation settings, or video pipeline. The Qwen-Image-2.1 result uses PSNR, but broader evaluations across images and workflows are not provided. FP8 support is confirmed, while the practical balance of memory savings, accuracy, and output quality depends on each application’s implementation.

Check Requirements and Test Workloads

Users considering the update should check compatibility first: the supplied material lists macOS 15 or later for MPS and Python 3.11 or later for PyTorch 2.15. It says MPS availability checks now give a reason when an older operating system or a missing Metal GPU prevents use.

The practical next step is to compare speed, peak memory, and output quality on the models and Mac configurations users rely on, rather than assuming the published figures will transfer directly. Hugging Face says work planned for 2.16 may include attention running more fully on Metal, additional MPSGraph migrations, and faster LLM decoding. Those plans remain prospective; no delivery details are confirmed in the supplied material.

Key Questions

What is new for MPS in PyTorch 2.15?

It adds FP8 tensor support and performance changes including specialized matrix-vector kernels for eligible linear layers, grouped matrix multiplication for mixture-of-experts decoding, and work on other operations.

How much faster is decoding in the reported tests?

On an M3 Ultra with torch.compile, Hugging Face reports Qwen3.6-35B-A3B at 61.3 tokens per second, versus 9.4 in PyTorch 2.14, and LFM2.5-8B-A1B at 123.6, versus 23.6. The figures are specific to those models and that test setup.

Does FP8 mean every model will use half as much memory?

No. FP8 values use half the storage of BF16 values, but an application’s total memory use depends on how it stores and processes data. Accuracy and memory results also depend on scaling choices and implementation.

What are the stated system requirements?

The source material lists macOS 15 or later for MPS and Python 3.11 or later for PyTorch 2.15. Users should check the release’s compatibility information before updating.

Are the planned PyTorch 2.16 changes available now?

No. More Metal-based attention, further MPSGraph migrations, and additional decoding improvements are described as planned work, not features confirmed in PyTorch 2.15.

Primary source: Hugging Face · via ThorstenMeyerAI.com

You May Also Like

Import AI 466: The Bitter Lesson For Robotics, AIs Complete Week-long Programming Tasks; And OpenAI’s Accidental AI Hacker

AI systems successfully completed a week-long robotics programming task, highlighting key lessons and raising questions about AI capabilities and safety.

Transformers Explained Visually

Search interest in visual explanations of Transformers has surged, driven by rising curiosity and online content, though official details remain unconfirmed.

How AI Contributed To 26% Of Next-Generation Claude Development, According To Anthropic’s Internal Analysis

A headline-only report says AI contributed to 26% of next-generation Claude development, but provides no methodology or further details.

Codex

OpenAI has launched the Codex API, enabling developers to integrate AI coding tools into applications. The release is confirmed and aims to enhance programming workflows.