---
title: "MPS in PyTorch 2.15"
description: "PyTorch 2.15 brings FP8 support to MPS, storing float8_e4m3fn values in half the space of BF16 and enabling scaled matrix multiplication directly on the GPU with tensorwise or rowwise scaling. Language-model decoding accelerates significantly: mixture-of-experts models decode 5–6.5× faster thanks to a native grouped matmul with a dedicated decoding path—on an M3 Ultra with torch.compile, Qwen3.6-35B-A3B reaches 61.3 tokens/s, up from 9.4. Dense models benefit from specialized matrix-vector kernels for single-row linear layers, and softmax over the vocabulary is about 8× faster. Video generation memory usage drops dramatically: Wan2.2’s VAE decode now peaks at 8 GiB instead of 270 GiB. The Hugging Face team runs real models to find and fix MPS shortcomings. The release also adds complex LU and triangular solves, faster small-matrix inverses and QR decomposition, public MPS streams, and requires macOS 15 or later, with many operations moved from MPSGraph to dedicated Metal kernels."
---

# MPS in PyTorch 2.15

[Hugging Face](https://yomu.fyi/company/hugging-face) · Irakli Salia, Khushi Agrawal · Oct 20, 2026

**Type:** Announcement

## Summary

PyTorch 2.15 brings FP8 support to MPS, storing float8\_e4m3fn values in half the space of BF16 and enabling scaled matrix multiplication directly on the GPU with tensorwise or rowwise scaling. Language-model decoding accelerates significantly: mixture-of-experts models decode 5–6.5× faster thanks to a native grouped matmul with a dedicated decoding path—on an M3 Ultra with torch.compile, Qwen3.6-35B-A3B reaches 61.3 tokens/s, up from 9.4. Dense models benefit from specialized matrix-vector kernels for single-row linear layers, and softmax over the vocabulary is about 8× faster. Video generation memory usage drops dramatically: Wan2.2’s VAE decode now peaks at 8 GiB instead of 270 GiB. The Hugging Face team runs real models to find and fix MPS shortcomings. The release also adds complex LU and triangular solves, faster small-matrix inverses and QR decomposition, public MPS streams, and requires macOS 15 or later, with many operations moved from MPSGraph to dedicated Metal kernels.

## Context

The post is by the PyTorch team at Hugging Face, detailing improvements to the MPS backend in PyTorch 2.15. They run real models from the Hugging Face Hub, find where MPS falls short, and fix it upstream by replacing MPSGraph with dedicated Metal kernels.

## Approach / What changed

Replacing MPSGraph with dedicated Metal kernels for operations like grouped matmul, matrix-vector multiplication, softmax, convolutions, padding, dropout, interpolation backward, and reductions, and adding FP8 support with scaled matrix multiplication.

## Takeaways

- FP8 support on MPS stores float8\_e4m3fn values in half the space of BF16 and enables scaled matrix multiplication with tensorwise or rowwise scaling.
- MoE models decode 5–6.5× faster in PyTorch 2.15 due to a native grouped matmul with a dedicated decoding path, reducing GPU-CPU syncs.
- Softmax over the vocabulary is about 8× faster, and video VAE decode memory drops from 270 GiB to 8 GiB for Wan2.2.

## FAQ

### What macOS version is required for PyTorch 2.15 MPS?

PyTorch 2.15 requires macOS 15 or later. If the OS is too old or no Metal GPU is available, the MPS availability check now tells you why.

### How much faster are MoE models on MPS in 2.15?

Mixture-of-experts models decode 5–6.5× faster than in 2.14. For example, Qwen3.6-35B-A3B goes from 9.4 to 61.3 tokens/s on an M3 Ultra with torch.compile.

### What memory improvement does Wan2.2 video VAE decode see?

Decoding a video with Wan2.2's tiled VAE used to push driver memory to 270 GiB; it now peaks at about 8 GiB.

**Tags:** [FP8](https://yomu.fyi/topic/fp8), [LLMs](https://yomu.fyi/topic/llm), [macOS](https://yomu.fyi/topic/macos), [MPS](https://yomu.fyi/topic/mps), [PyTorch](https://yomu.fyi/topic/pytorch)

- Source: [Hugging Face](https://huggingface.co/blog/mps-pytorch-2-15)
- Source URL: https://huggingface.co/blog/mps-pytorch-2-15
- Ingested by Yomu: 2026-10-20T12:00:15.451Z

[Read original post](https://huggingface.co/blog/mps-pytorch-2-15)
