PyTorch在Apple Silicon MPS设备运行报错的解决咨询
解决PyTorch MPS在Jupyter中报错的问题
问题描述
在CPU上运行PyTorch一切正常,切换到MPS设备时,控制台执行测试代码正常,但Jupyter中出现报错:
RuntimeError: Failed to create indexing library, error: Error Domain=MTLLibraryErrorDomain Code=3 "program_source:168:1: error: type 'const constant ulong3 *' is not valid for attribute 'buffer'
环境说明:
- 使用osx-arm64版本的miniconda
- 尝试过Python 3.8、3.11版本,PyTorch稳定版和nightly版
torch.backends.mps.is_available()返回True
测试代码:
import torch mps_device = torch.device("mps") float_32_tensor1 = torch.tensor([3.0, 6.0, 9.0], dtype=torch.float32, device=mps_device, requires_grad=False) float_32_tensor2 = torch.tensor([3.0, 6.0, 9.0], dtype=torch.float32, device=mps_device, requires_grad=False) print(float_32_tensor1.mul(float_32_tensor2))
解决方案
确认Jupyter内核与PyTorch环境一致
在Jupyter中执行以下代码,查看当前使用的Python解释器路径:import sys print(sys.executable)打开控制台,激活安装PyTorch的conda环境,执行
which python,对比两个路径是否相同。如果不一致,说明Jupyter使用了错误的内核,需要切换到对应环境的内核。重新安装对应环境的Jupyter内核
- 激活安装PyTorch的conda环境:
conda activate your_env_name - 安装ipykernel:
pip install ipykernel - 将当前环境注册为Jupyter内核:
python -m ipykernel install --user --name your_env_name --display-name "Python (your_env_name)" - 重启Jupyter,在新建Notebook时选择刚刚注册的内核。
- 激活安装PyTorch的conda环境:
清除Jupyter缓存
关闭所有Jupyter窗口,删除~/.jupyter目录下的缓存文件(或直接删除整个目录,重启后会自动重建),然后重新启动Jupyter。检查macOS版本兼容性
确保你的macOS版本在12.0(Monterey)及以上,MPS加速需要该版本及更高的Metal框架支持。可通过左上角苹果图标→关于本机查看系统版本。确保PyTorch安装正确
激活conda环境后,重新安装适配osx-arm64的PyTorch:conda install pytorch torchvision torchaudio -c pytorch若尝试nightly版本:
pip3 install --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/cpu
内容的提问来源于stack exchange,提问作者tristan
相关产品推荐
相关产品推荐

