TL;DR
Get business pricing on tech for your team
- Business-only prices and quantity discounts
- Tax-exempt purchasing
- Multiple users, one account, clear invoices
PyTorch 2.15 adds FP8 tensor support to its Metal Performance Shaders backend and reports substantial decoding and memory improvements on Apple silicon. Hugging Face’s PyTorch team says results vary by workload; the release requires macOS 15 or later and Python 3.11 or later.
The headline results come from tests shared by the Hugging Face PyTorch team, which says it worked with PyTorch maintainers and community contributors on MPS improvements. On an M3 Ultra with torch.compile, the team measured Qwen3.6-35B-A3B decoding at 61.3 tokens per second in 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 are results for the named models and setup, not a guarantee for every Mac or model.
For language-model decoding, 2.15 routes eligible single-row linear layers through specialized matrix-vector kernels and fuses some bias additions. The team reports a 1.23× geometric-mean speedup across 96 BF16 layer shapes drawn from real models. It also says vocabulary softmax is about eight times faster in its measurements. Mixture-of-experts decoding receives a native grouped matrix multiplication path, with fewer GPU-to-CPU synchronizations and faster top-k routing.
The release supports torch.float8_e4m3fn tensors on MPS. The one-byte values use half the storage of BF16, and PyTorch’s scaled matrix multiplication operation can multiply them with tensorwise or rowwise scaling. Other reported work includes complex LU and triangular solves, QR decomposition, convolutions, padding, dropout, interpolation backward, and reductions. Hugging Face says Wan2.2 tiled VAE decoding peaked at about 8 GiB in 2.15, compared with 270 GiB previously in its test. The team also reports that an image-padding change corrected a Qwen-Image-2.1 VAE issue: its encode-decode round trip reached 29.95 dB PSNR, versus 10.06 dB on 2.14.
Apple Silicon · Backend Update · PyTorch 2.15
MPS in PyTorch 2.15
FP8 tensors, faster decoding paths and a dramatic memory reduction in one video workload expand what Apple silicon Macs can do with PyTorch. The figures are promising—and specific to the tested setups.
01 / Performance report
Decoding gains, on the tested setup
On an M3 Ultra with torch.compile, Hugging Face’s PyTorch team measured higher decoding throughput in two named models. The bars compare reported tokens per second; each model uses its own scale.
02 / What changed
New paths through the Metal backend
MPS connects PyTorch to Apple’s Metal GPU framework. Version 2.15 adds specialized routes for common inference work and broadens operation coverage.
01 · Language models
Single-row linear layers
Eligible F.linear calls can use matrix-vector kernels, with some bias additions fused. The team reports a 1.23× geometric-mean speedup across 96 BF16 layer shapes.
02 · MoE decoding
Grouped matrix multiplication
A native grouped path, fewer GPU-to-CPU synchronizations and faster top-k routing target mixture-of-experts decoding. The team reports 5–6.5× gains in its tests.
03 · Data format
FP8 tensors on MPS
torch.float8_e4m3fn uses one byte per value—half the storage of BF16. Scaled matrix multiplication supports tensorwise or rowwise scaling.
04 · Operations
Wider coverage
Reported additions include complex LU and triangular solves, QR decomposition, convolutions, padding, dropout, interpolation backward and reductions.
05 · Softmax
Faster vocabulary step
The team says vocabulary softmax ran about eight times faster in its measurements. Actual impact depends on the model and workload.
06 · Memory path
Lower video peak
Wan2.2 tiled VAE decoding reportedly peaked around 8 GiB, compared with 270 GiB in the earlier test.
03 / The memory and quality story
A smaller peak—and a corrected image path
Performance only helps when a workflow fits and its outputs remain sound. The announcement pairs a large memory result with an image round-trip quality comparison.
“Wan2.2’s video VAE decode now peaks at 8 GiB of memory instead of 270 GiB.”
PyTorch team at Hugging Face
Image padding · Qwen-Image-2.1
29.95 dB PSNR
Reported encode-decode round trip in 2.15, versus 10.06 dB in 2.14 after an image-padding change addressed an issue.
Interpretation
Useful signal, limited scope
Comparable results across resolutions, settings and image workflows are not established by the supplied figures.
04 / How the backend is evolving
From workarounds to dedicated kernels
Hugging Face says its team tests models from the Hub and works with PyTorch maintainers and community contributors to address MPS gaps upstream.
Find the gap
Some models encountered unsupported operations, slow paths or unexpected memory growth.
Test real models
Model workloads reveal where backend behavior limits local inference and training.
Move closer to Metal
Dedicated Metal kernels replace selected MPSGraph paths; 2.14 already introduced matrix-vector kernels for torch.mm.
Measure the result
Check speed, memory and output quality on the hardware and workflows that matter.
05 / Compatibility & evidence
Check your environment; verify your workload
Minimum requirements
Apple silicon + current runtimes
MPS requires an Apple silicon Mac with macOS 15 or later. PyTorch 2.15 requires Python 3.11 or later. Availability checks now explain when an older OS or missing Metal GPU prevents MPS use.
Evidence limits
Benchmark details are incomplete
The supplied material does not include enough run counts, full software versions or measurement conditions to independently reproduce every result. Wan2.2’s behavior across resolutions and pipelines is also unclear.
| Measure | Reported in 2.15 | What it tells you |
|---|---|---|
| Qwen3.6-35B-A3B | 61.3 tokens/sec | M3 Ultra with torch.compile; model-specific comparison |
| LFM2.5-8B-A1B | 123.6 tokens/sec | M3 Ultra with torch.compile; model-specific comparison |
| Wan2.2 tiled VAE | ~8 GiB peak | One reported video-decoding workload |
| FP8 values | ½ BF16 storage/value | Whole-application memory also includes other data |
| Broader results | Not established | Validate speed, memory and output quality locally |
FP8’s storage size does not guarantee a complete model or application will use half the memory. Accuracy and practical gains depend on quantization, scaling and workload choices.
06 / Key questions
What to know before updating
What is new for MPS?
FP8 tensor support and new or faster paths for language-model decoding, linear algebra, image and video operations, and training workloads.
How fast are the reported LLM results?
On an M3 Ultra with torch.compile, the team reports Qwen3.6 at 61.3 tokens/sec versus 9.4, and LFM2.5 at 123.6 versus 23.6. Results vary by model and hardware.
What Mac and Python versions are required?
An Apple silicon Mac with macOS 15 or later, and Python 3.11 or later for PyTorch 2.15.
Does FP8 halve model memory?
Each FP8 value uses half the storage of BF16. Total model memory depends on activations and other data too.
Mac Model Runs Gain New Headroom
The changes could make a Mac more practical for local inference and creative workflows, especially when memory or per-token latency limits which models users can run. FP8 stores values in less space than BF16, while faster decoding kernels target the repeated single-token work that shapes how quickly an LLM responds. The Wan2.2 result, if reproducible in comparable setups, could also reduce a memory barrier for video generation.
These figures are backend and workload specific. The reported speedups do not establish equivalent gains across all model architectures, Mac chips, software stacks or generation settings. The image-quality result also matters because backend performance is useful only when operations preserve correct outputs. Users evaluating an upgrade should compare their own models and workflows, including output quality and memory use.
Apple Silicon Mac compatible GPU accelerators
As an affiliate, we earn on qualifying purchases.
As an affiliate, we earn on qualifying purchases.
From MPS Workarounds to Metal Kernels
MPS is PyTorch’s backend for using Apple’s Metal GPU framework. Hugging Face’s team says that at the start of 2026, running some models on MPS could involve unsupported operations, performance drops and unexpected memory growth. Its stated approach has been to test models from the Hugging Face Hub and address gaps upstream, including by replacing some MPSGraph paths with dedicated Metal kernels.
PyTorch 2.15 continues changes made in 2.14, which had already introduced matrix-vector kernels for torch.mm. The new release connects eligible F.linear calls to those kernels, targeting the single-row inputs common during decoding. The published material also previews work planned for 2.16, including moving attention more fully onto Metal and further MPSGraph-to-Metal migrations; those are future plans, not features confirmed here as released.
““The goal is to make your Mac a first-class place to run and train PyTorch models.””
— PyTorch team at Hugging Face
PyTorch compatible external GPUs for Mac
As an affiliate, we earn on qualifying purchases.
As an affiliate, we earn on qualifying purchases.
Results Depend on the Setup
The supplied release material does not provide enough detail to independently reproduce every benchmark, including full software versions, run counts and measurement conditions. The tokens-per-second figures identify an M3 Ultra and torch.compile, but should not be treated as representative of all Apple silicon Macs. It is also unclear how broadly the reported Wan2.2 memory reduction applies to different resolutions, settings or video pipelines.
The material describes Qwen-Image-2.1 image quality using PSNR, but does not provide broader evaluation results across images or workflows. Support for FP8 tensors and scaled matrix multiplication is confirmed in the announcement; the practical accuracy and memory gains in a particular application depend on its quantization and scaling choices.
macOS 15 compatible AI development tools
As an affiliate, we earn on qualifying purchases.
As an affiliate, we earn on qualifying purchases.
Check Compatibility Before Updating
Users need an Apple silicon Mac with macOS 15 or later to use MPS, and PyTorch 2.15 requires Python 3.11 or later. The release material says MPS availability checks now give a reason when an older operating system or missing Metal GPU prevents use. Developers can check the PyTorch 2.15 compatibility information before changing environments.
The Hugging Face team says work for 2.16 is expected to include attention running fully on Metal, additional migrations from MPSGraph, and faster LLM decoding. Those items remain a preview. For 2.15, the practical next step for users is to measure speed, memory use and output quality on the models and Mac configurations they actually rely on.
high-performance AI model decoding hardware
As an affiliate, we earn on qualifying purchases.
As an affiliate, we earn on qualifying purchases.
Where I land
I see PyTorch 2.15 as a meaningful MPS update because it addresses both speed and cases where a Mac workload was reportedly consuming extreme memory or producing corrupted image results. The strongest evidence in the announcement is the specificity of the model and hardware comparisons; the breadth of the gains remains less certain because the supplied figures do not establish performance across a wide range of Macs and settings.
The counterargument is that impressive benchmark improvements may not translate to a user’s own pipeline, and backend changes can bring new compatibility or numerical tradeoffs. I would raise my assessment if independent, reproducible tests across several Apple silicon generations confirmed the speed and memory gains while checking output quality. I would lower it if common models still hit unsupported operations, regressions or large differences from the reported results.
Key Questions
What is new for MPS in PyTorch 2.15?
It adds FP8 tensor support and new or faster paths for language-model decoding, linear algebra, image and video operations, and training workloads.
How much faster are the reported LLM results?
On an M3 Ultra with torch.compile, the Hugging Face team reports Qwen3.6-35B-A3B at 61.3 tokens per second, up from 9.4 in PyTorch 2.14. It reports LFM2.5-8B-A1B at 123.6, up from 23.6. Results can differ by model and hardware.
What Mac and Python versions are required?
MPS requires an Apple silicon Mac running macOS 15 or later. PyTorch 2.15 requires Python 3.11 or later.
Does FP8 cut model memory in half?
FP8 values use half the storage per value compared with BF16. The memory use of a complete model or application depends on more than its stored weight values, including activations and other data.
Source: Hugging Face
Halloween Picks
halloween
As an affiliate, we earn on qualifying purchases.
