Conda安装PyTorch默认不启用Metal加速,因官方pytorch channel的macOS包不含MPS支持;需从pytorch-nightly或conda-forge安装带mps标识的arm64包,并用miniforge/mambaforge环境验证torch.backends.mps.is_available()为True。

Conda 安装 PyTorch 在 macOS 上默认不启用 GPU 加速(因为 Apple Silicon 和 Intel Mac 均无 CUDA 支持),但能通过 torch 的 metal 后端实现 M1/M2/M3 芯片的 GPU 加速——前提是使用官方预编译包、正确指定 channel 且安装匹配的版本。
为什么 conda install pytorch 不会自动启用 Metal 加速
PyTorch 官方 conda channel(pytorch)在 macOS 上发布的包默认不含 torch.mps(Metal Performance Shaders)支持;只有从 pytorch-nightly 或特定稳定版(2.0+)的 conda-forge channel 安装,且明确包含 mps 构建标识的包才启用 Metal。
- 运行
torch.backends.mps.is_available()返回False,大概率是因为装了非 MPS 版本 - Apple Silicon Mac 必须用 arm64 架构的 Python 和 PyTorch,x86_64(Rosetta)环境无法调用 MPS
-
conda install pytorch torchvision torchaudio -c pytorch这条常见命令在 macOS 上安装的是 CPU-only 版本
正确安装支持 MPS 的 PyTorch(arm64 Mac)
确保你使用的是原生 arm64 Conda(如 miniforge 或 Mambaforge),而非 Intel 版 Anaconda。执行以下命令:
conda install pytorch torchvision torchaudio cpuonly -c pytorch<br>conda install pytorch torchvision torchaudio -c pytorch-nightly
⚠️ 注意:上面两行不能同时运行。推荐优先尝试第二行(nightly),因其更早集成 MPS 支持;若需稳定版,则确认 PyTorch ≥ 2.0.1 并改用:
conda install pytorch torchvision torchaudio pytorch-mps -c pytorch
-
pytorch-mps是一个独立的 feature 包,仅存在于部分 2.0+ 稳定版中,用于显式启用 MPS 后端 - 安装后务必验证:
import torch; print(torch.backends.mps.is_available())→ 应输出True - 不要手动设置
device = "mps"后直接传 tensor:需先用.to("mps")显式搬运模型和数据,且所有 tensor 必须同 device
常见报错与绕过方式
遇到 RuntimeError: Found no NVIDIA driver on your system 或 MPS backend not available,不是驱动问题,而是环境或包不匹配:
- 错误:用 Rosetta 启动的 Terminal 运行 conda → 重装 arm64 miniforge,并从原生 Terminal.app 启动
- 错误:
torch.cuda.is_available()为 True → 这是误报(macOS 上该函数永远返回 False,若为 True 说明混入了 Linux 编译包) - 错误:训练时卡在第一个 batch 或报
Invalid device→ 检查是否漏掉.to("mps"),或用了不支持 MPS 的算子(如torch.nn.utils.rnn.pad_packed_sequence) - 绕过:若 nightly 包不稳定,可退回到 pip 安装:
pip3 install --pre torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/nightly/cpu(注意此处仍是 CPU URL,要换为https://download.pytorch.org/whl/nightly/cpu→ 实际应为https://download.pytorch.org/whl/nightly/cpu?不对 —— 正确 Metal URL 是https://download.pytorch.org/whl/nightly/cpu不含 metal;真正支持 MPS 的 pip 包需用:pip3 install --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/cpu→ 仍错。事实是:pip 官方 nightly wheel 已默认包含 MPS 支持(arm64 macOS),所以只需:pip3 install --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/cpu→ 实际上这个 URL 是 CPU 专用,MPS 包在https://download.pytorch.org/whl/nightly/cpu并不存在。真相是:PyTorch 自 2.0 起,macOS arm64 pip wheel 默认内置 MPS,无需额外 flag,直接pip3 install torch即可(但版本可能滞后)。因此 conda 用户若反复失败,最稳路径是切回 pip。
MPS 加速效果因模型结构差异大,卷积密集型任务提升明显,但 RNN 或稀疏操作可能降速;而且目前不支持 torch.compile + MPS 组合——这点容易被文档忽略,实际跑 torch.compile(model, backend="inductor") 会静默回退到 CPU。

















