时间:2026年10月20日,Hugging Face 的 PyTorch 团队发布 PyTorch 2.15 的 MPS 后端详解博客,公布面向苹果芯片的一系列性能与功能更新;当晚至 10 月 21 日凌晨,多家英文科技媒体与 AI 资讯站跟进解读。
地点:美国与全球开发者社区。更新通过 PyTorch 官方测试索引以候选版形式发布(torch 2.15.0 release candidate),全球使用苹果芯片 Mac 的开发者可安装体验。
人物:Hugging Face PyTorch 团队的 Irakli Salia 与 Khushi Agrawal 是本篇技术说明的主要作者;该团队长期在 PyTorch 项目中贡献 MPS 后端,目标是让 Mac 成为运行与训练模型的一等平台。PyTorch 维护者与社区贡献者共同参与了本次改动。
事件详情:PyTorch 2.15 的核心变化集中在 MPS 后端。首先是 FP8 落地,新版本在 MPS 上支持 torch.float8_e4m3fn 张量,每值占 1 字节,存储占用为 FP16 或 BF16 的一半,并可直接在 GPU 上使用 F.scaled_mm 做缩放矩阵乘,支持 tensorwise 与 rowwise 两种缩放方式,把只在 CUDA 和 CPU 上可用的 FP8 运算补齐到苹果芯片。其次是大模型解码提速两条路径:其一是线性层,MPS 从 2.14 起为 torch.mm 提供了矩阵向量乘(GEMV)内核,2.15 把这些内核接到 F.linear 上,解码阶段常见的单行输入可直接走 GPU 路径,符合条件的 bias 相加被融合进来,在 96 组来自真实模型的 BF16 层形状上报告 1.23 倍几何平均加速,增益主要出现在 MoE 门控这类小投影上;其二是混合专家(MoE)层,2.14 的分组矩阵乘需要把分组偏移拷到 CPU 再逐组循环,2.15 提供了原生 Metal 实现,新内核直接在 GPU 上读取偏移,可用时调用 Metal Performance Primitives,小分组走专门内核,配合更少的 GPU 与 CPU 同步以及更快的 top-k 路由,官方报告 MoE 模型解码速度较 2.14 提升 5 至 6.5 倍。在 M3 Ultra 加 torch.compile 的测试环境下,Qwen3.6-35B-A3B 从 9.4 提升到 61.3 tokens/s,LFM2.5-8B-A1B 从 23.6 提升到 123.6 tokens/s。此外 softmax 与 log_softmax 改用专门的 Metal 内核,对一行 128256 个 logits 的 FP32 softmax 从 57 微秒降到 7 微秒,约 8 倍加速。线性代数方面新增 complex64 的 LU 分解、LU 求解与三角求解,4×4 以内的 FP32 矩阵批量求逆由单个 Metal 内核完成因子分解与求解,QR 分解改用分块更新。卷积、padding、dropout、插值反向与归约等大量路径从 MPSGraph 迁到专用 Metal 内核,constant padding 下沉到 Metal 之后,Wan2.2 分块 VAE 解码的驱动内存峰值从 270.135 GiB 降到 8.108 GiB,同时修复了 2.14 上 Qwen-Image-2.1 的 VAE 编码器在 MPS 上静默损坏图像的问题,编码解码往返的 PSNR 从 10.06 dB 提升到 29.95 dB。Python 侧开放了 torch.mps.Stream、改进事件计时并新增多项算子。环境要求有变化:MPS 现在需要 macOS 15 及以上,PyTorch 2.15 需要 Python 3.11 及以上。官方还提前透露了 2.16 的方向,包括注意力计算完全跑在 Metal 上、更多 MPSGraph 路径迁移、编译期解码再快 4% 至 19%,以及 libtorch_cpu.dylib 体积缩减约 25%。
背景:2026 年初开始,在 MPS 上跑哪怕是较小的模型也要绕开不支持的算子、性能断崖和异常内存增长,这是 Mac 端本地推理体验不佳的核心原因。Hugging Face 的 PyTorch 团队的工作方式是直接用 Hub 上的真实模型跑语言、图像与视频任务,定位 MPS 的短板后直接向上游修复,并且越来越多地用手写 Metal 内核替代通用的 MPSGraph 路径。这次 2.15 的更新延续了同一条路线,把大量通用图形路径换成专用内核。同时,Mac 本地跑 MoE 模型此前基本不可用,2.15 之后这一限制被明显放宽。
影响:对使用 Mac 做本地推理与训练的用户,这是一次体验级别而非版本号级别的更新。dense 模型受益于更快的线性层与约 8 倍的采样 softmax,MoE 模型则首次在苹果芯片上进入可用区间,61.3 与 123.6 tokens/s 意味着部分中小模型可以脱离云端常驻运行。视频生成侧的内存降幅更为直观,Wan2.2 的 VAE 解码从 270 GiB 级别降到 8 GiB,让长视频工作流在显存受控的 Mac 上变得可行。Qwen-Image-2.1 的图像损坏修复则直接修好了 ComfyUI 用户遇到的图像编辑链路问题。需要提醒的是,所有性能数字均为 Hugging Face 团队在 M3 Ultra 与特定配置下的自测结果,未提供跨芯片与跨工作负载的对比,也未给出标准化的公开准确率基准;大型线性层与语言模型输出头因已接近带宽瓶颈,加速幅度接近 1 倍。版本门槛也提高了,macOS 15 与 Python 3.11 以下的设备被排除在外。
总结:PyTorch 2.15 把苹果芯片从能跑模型的备选项,推到接近一等平台的门槛上。FP8 上 Mac、MoE 解码快 5 至 6.5 倍、视频 VAE 内存从 270 GiB 降到 8 GiB,这三条数字背后是同一条工程路线:不再依赖通用的 MPSGraph,而是为解码、矩阵乘、卷积、归约这些具体负载手写 Metal 内核。它对行业的意义在于,当模型开源权重越来越便宜、推理越来越像水电煤一样被商品化,谁掌握了终端侧的执行效率,谁就掌握了把云端推理成本转移回用户设备的话语权。
参考来源:
1. Hugging Face《MPS in PyTorch 2.15》(一手技术说明) https://huggingface.co/blog/mps-pytorch-2-15
2. Tech Beat《PyTorch 2.15 Brings FP8 and Major MPS Performance Gains to Apple Silicon》 https://techbeat.co/story/pytorch-2-15-brings-fp8-and-major-mps-performance-gains-to-apple-silicon
3. AI Digest《PyTorch 2.15 brings FP8, faster MoE decoding and Metal kernels to Apple MPS》 https://www.ai-digest-1.com/news/pytorch-2-15-brings-fp8-faster-moe-decoding-and-metal-kernels-to-apple-mps-18429
4. AI Breaking Wire《PyTorch 2.15 Adds FP8 on Mac, Speeds MoE Decoding 5-6.5x》 https://www.aibreakingwire.com/news/pytorch-2-15-adds-fp8-on-mac-speeds-moe-decoding-56-5x
5. Thorsten Meyer AI《MPS in PyTorch 2.15》 https://thorstenmeyerai.com/ai-tools-automation/mps-in-pytorch-2-15
6. TLDRocket《MPS in PyTorch 2.15》 https://tldrocket.com/story/mps-in-pytorch-215
7. PyTorch 官方博客 https://pytorch.org/blog/







