Mac M1 MPS GPU无法解决CUDA反序列化RuntimeError问题求助
解决MPS设备读取CUDA保存的Pickle文件报错问题
问题原因
同事用NVIDIA GPU保存的pickle文件中,PyTorch张量的设备信息被标记为CUDA。直接用pickle.load读取时,张量会尝试自动加载到CUDA设备,但你的Mac没有CUDA环境,因此触发报错。即使改用torch.load,如果使用方式不正确也会继续报错。
解决方案
1. 正确使用torch.load处理设备映射
必须通过torch.load而非pickle.load加载文件,同时指定map_location参数将张量映射到CPU或MPS设备:
import torch import pickle # 映射到CPU加载 with open('patient_notes_agg.pickle', 'rb') as f: patient_notes_agg = torch.load(f, map_location=torch.device('cpu')) # 验证加载结果 patient_notes_agg.head()
如果需要将张量加载到MPS设备(确保torch.backends.mps.is_available()返回True),可以修改map_location:
patient_notes_agg = torch.load(f, map_location=torch.device('mps'))
2. 排查报错残留问题
- 确认文件路径正确,避免加载了错误的旧文件
- 若同事是直接用
pickle.dump保存的包含CUDA张量的对象,torch.load依然能正确处理设备映射,无需额外修改
3. 验证环境兼容性
确认你的PyTorch版本支持MPS:
import torch print(torch.backends.mps.is_available()) # 应返回True print(torch.__version__) # 你的版本是1.13.0,符合要求
内容的提问来源于stack exchange,提问作者LCheng
相关产品推荐
相关产品推荐

