What changed
On October 20, 2026, the Hugging Face team contributing to PyTorch's Metal Performance Shaders (MPS) backend documented changes in PyTorch 2.15. The PyTorch release team made the final 2.15.0 release candidate available October 21, with general availability scheduled for October 28; it is not a stable release yet. The RC adds torch.float8_e4m3fn support and scaled matrix multiplication on MPS, native grouped matrix multiplication and decoding kernels for mixture-of-experts models, optimized softmax and linear layers, more GPU linear algebra, public MPS stream control, and fixes to padding and image-editing correctness. In the authors' Wan2.2 tiled-video VAE workload, total driver-memory peak fell from 270.135 GiB to 8.108 GiB after constant padding moved from MPSGraph to Metal. Requirements rise to macOS 15 and Python 3.11.
Why it matters
For builders running local language, image and video models on Apple-silicon Macs, backend bottlenecks and unsupported operations can determine whether a workload is usable at all. FP8 can halve per-value storage relative to BF16, subject to model and operator support. GPU-side grouped matmul removes a CPU round-trip in MoE decoding. The dramatic video-driver-memory fix could turn a failing workflow into one that fits the available machine. But no general 6.5x speedup should be assumed: the numbers come from the contributing team, use specified M3 Ultra models/configurations, and the same technical post describes roughly 1.3x throughput improvement in a more narrowly controlled compiled comparison. Production users should benchmark their own models after the stable release.
Final release candidate, not the October 28 stable build
PyTorch announced its final 2.15 RC on October 21 for testing via the pytorch-test package channel. The official release schedule lists October 28 for GA. Teams should test separately from production, record their torch, macOS, Python, model and compilation versions, and confirm framework integrations. PyTorch 2.15 requires Python 3.11+; the MPS backend now requires macOS 15+.
FP8 and MoE changes remove practical Apple-silicon bottlenecks
The RC supports FP8 E4M3 tensors on MPS and F.scaled_mm with tensorwise or rowwise scaling, enabling one-byte values where operators and models support them. A native F.grouped_mm path and dedicated decoding kernels replace earlier CPU-side group-offset handling. Specialized F.linear and softmax kernels accelerate selected decode shapes; the authors report a 1.23x geometric-mean F.linear improvement across 96 BF16 shapes and about 8x faster softmax for a specified 128,256-logit row.
Do not conflate the 5–6.5x headline with universal throughput
Hugging Face reports Qwen3.6-35B-A3B on M3 Ultra rising from 9.4 to 61.3 tokens/s and LFM2.5-8B-A1B from 23.6 to 123.6 tokens/s in its headline comparison. Elsewhere the same post says the new grouped matmul path yields about 1.3x more tokens/s in a compiled comparison. These comparisons differ in what is held constant; independent reproduction across hardware, model precision, graph compilation and prompts is not yet available. Avoid extrapolating headline speedups to every Mac or model.
Video memory and correctness may matter more than peak tokens
In Wan-AI/Wan2.2-TI2V-5B-Diffusers tiled VAE decoding, moving 8,764 padding calls to Metal reduced total driver-memory peak from 270.135 GiB to 8.108 GiB, while allocator-reserved peak remained about 8.07 GiB. The team also says a related padding fix resolves a Qwen-Image-2.1 MPS encode-decode corruption issue previously reported in ComfyUI. Other new GPU paths cover complex LU, QR, dropout, convolution, padding and reduction workloads.