随着大语言模型(LLM)和各种生成式 AI 的爆发,越来越多开发者开始用自己的 Mac 跑模型。如果你也是其中一员,你一定在代码里见过 device="mps" 这样的设置。

到底什么是 MPS?为什么跑 AI 模型时,Mac 用户一定要用它?M3、M4 这些新款芯片跑模型到底行不行?今天我们就来彻底讲透苹果的这个 AI 加速杀手锏。
在这里插入图片描述

1. MPS 到底是什么?

MPS 全称是 Metal Performance Shaders。简单来说,它是苹果在 macOS 和 iOS 上推出的 GPU 计算框架,建立在苹果自家的图形 API —— Metal 之上。

你可以把它和 NVIDIA 的 CUDA 对标理解。它们本质上做的是同一件事:让程序把庞大的矩阵运算任务,丢给算力更强的 GPU 去跑,而不是让 CPU 苦哈哈地单干。

我们可以这样类比三大平台的深度学习 GPU 后端:

  • CUDA ←→ NVIDIA GPU
  • ROCm ←→ AMD GPU
  • MPS ←→ Apple Silicon GPU (M1/M2/M3/M4 系列)

从 2022 年 5 月发布的 PyTorch 1.12 开始,官方正式内置了 MPS 后端。这意味着,PyTorch 能将张量运算直接“翻译”成 Metal Kernel,顺滑地跑在 Apple Silicon(M 系列芯片)的统一内存 GPU 上。

2. M4 支持 MPS 吗?

完全支持!

不仅是 M4,所有 Apple Silicon(包括 M1/M2/M3/M4,涵盖基础版、Pro、Max 和 Ultra 全系列)都原生支持 Metal,因此都能畅享 PyTorch 的 MPS 后端加速。

那么新款芯片有什么优势?
M4 相比前代,在 GPU 上不仅增加了硬件光追单元,整体浮点运算性能也有了肉眼可见的提升。如果你在 M4 上运行 LaMa(一种基于深度学习的图像修复/去水印卷积网络),其推理速度会明显甩开纯 CPU 几条街。

我们可以通过一段简单的代码来验证你的 Mac 环境是否已经就绪:

import torch

print(f"PyTorch Version: {torch.__version__}")
print(f"MPS available: {torch.backends.mps.is_available()}")
print(f"MPS built: {torch.backends.mps.is_built()}")

如果输出都是 True,恭喜你,你的 Mac 已经是一台合格的 AI 工作站了!

3. MPS 的三大核心细节与优势

为什么要在 Mac 上用 MPS?它到底强在哪?总结下来有三个关键点:

优势一:统一内存(Unified Memory)的“零拷贝”奇迹

这可能是 Apple Silicon 在 AI 推理上最独特的优势。
在传统的 PC 架构中(比如 Intel CPU + NVIDIA 显卡),CPU 和 GPU 有各自独立的内存(显存)。你要用 CUDA 计算,就必须把数据从 CPU 内存通过 PCIe 总线复制到 GPU 显存,算完再复制回来。这个传输开销非常大。

而在 Mac 的 M 系列芯片上,CPU 和 GPU 共享同一块物理内存。这就意味着,像 LaMa 模型这种做小 patch 推理(只有几十 KB 的输入),几乎是零拷贝开销,能把延迟压到极低。假设你的 Mac 是 16GB 统一内存,由于模型只有 ~200MB,对 LaMa 来说不仅内存绰绰有余,而且数据流转效率奇高!

注意事项:不是所有算子都支持

目前 PyTorch 的 MPS 后端算子覆盖率大约在 95% 左右。这意味着在极少数情况下,你会遇到个别不被支持的算子。
解决办法:如果遇到不支持的算子,你只需要设置一个环境变量,让它优雅地 Fallback(回退)到 CPU 计算:
export PYTORCH_ENABLE_MPS_FALLBACK=1

值得一提的是,像 LaMa 的核心网络 FFC 用到的 torch.fft(快速傅里叶变换),在较新的 PyTorch(≥ 2.1)版本中已经完美支持 MPS 了。

优势三:实打实的性能飞跃

为了让大家对性能有直观的感受,我们来看一组同一张 512×512 图片 LaMa 推理的经验数据对比:

  • M3/M4 CPU 端跑:约 600 ms
  • M3/M4 MPS 加速跑:约 80–150 ms (性能提速高达 5到8 倍!)
  • (作为参考) 顶配台式机 RTX 3090 CUDA:约 25 ms

如果你是在处理视频或长序列任务(比如 175×65 的小尺寸 Patch 修复,总计 10177 帧),MPS 单帧只需要 30-80 毫秒,大概 6到14分钟就能跑完全片!如果没有 MPS 加速,这个时间恐怕要按小时计算了。

总结

苹果通过 Apple Silicon 的统一内存架构和不断完善的 Metal/MPS 生态,已经把 Mac 打造成了一台非常优秀的轻量级 AI 开发与推理终端。

下次在 Mac 上跑大模型或运行各种开源 AI 工具时,别忘了检查一下是否开启了 device="mps",让你的 M 系列芯片彻底火力全开吧!

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐