Mac用户狂喜!一文带你读懂PyTorch在Apple Silicon上的MPS加速引擎
随着大语言模型(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 环境是否已经就绪:
importtorchprint(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 系列芯片彻底火力全开吧!
