如何在无GPU的MacBook Pro M2上运行含CUDA设备参数的PyTorch代码?
在MacBook Pro M2上运行指定CUDA的PyTorch代码解决方案
错误原因
MacBook Pro M2采用Apple Silicon芯片,PyTorch针对该平台提供的是**MPS(Metal Performance Shaders)**加速后端,而非NVIDIA的CUDA。原代码中硬指定cuda设备,而Apple Silicon版本的PyTorch未编译CUDA支持,因此抛出AssertionError: Torch not compiled with CUDA enabled错误。
无需修改原代码的解决方法
1. 安装适配MPS的PyTorch版本
先卸载旧版本,重新安装支持Apple Silicon的PyTorch:
pip3 uninstall torch torchvision torchaudio -y pip3 install torch torchvision torchaudio
2. 创建设备映射补丁脚本
新建一个名为fix_device.py的脚本,内容如下:
import torch # 保存原始的torch.device方法 original_device = torch.device def patched_device(device_spec, *args, **kwargs): # 自动将cuda设备请求替换为mps if isinstance(device_spec, str) and device_spec.startswith("cuda"): return original_device("mps") return original_device(device_spec, *args, **kwargs) # 替换torch.device实现 torch.device = patched_device
3. 运行原代码
执行原代码时通过预加载补丁脚本,无需修改原代码内容:
python3 -m fix_device 你的CVPR论文脚本.py
这样原代码中所有torch.device("cuda")的调用都会自动映射到MPS设备,既能保留原代码逻辑,又能在M2芯片上正常运行。
内容的提问来源于stack exchange,提问作者Jason Rich Darmawan
相关产品推荐
相关产品推荐

