Pytorch 在M1 Mac上使用PyTorch:运行时错误-占位符存储在MPS设备上尚未分配
在本文中,我们将介绍在M1 Mac上使用PyTorch时可能遇到的一个常见错误:RuntimeError: Placeholder storage has not been allocated on MPS device。我们将探讨这个错误的原因,并提供解决方案和示例代码来解决这个问题。
阅读更多:Pytorch 教程
问题描述
在使用M1 Mac运行PyTorch代码时,可能会遇到以下错误信息:
RuntimeError: Placeholder storage has not been allocated on MPS device
这个错误通常发生在尝试使用MPS(Metal Performance Shaders)来加速计算时。MPS是苹果提供的一种高性能计算框架,用于利用M1芯片上的硬件加速器来加速神经网络计算。然而,由于某些原因,PyTorch无法正确地为占位符存储分配内存,导致运行时错误。
解决方案
要解决这个问题,有两种常见的解决方案可供选择。
解决方案一:更新PyTorch版本
首先,我们可以尝试将PyTorch升级到最新版本。PyTorch团队经常发布新版本,修复了一些已知的问题和错误。使用最新版本的PyTorch可能会解决占位符存储未分配的问题。您可以通过运行以下命令来升级PyTorch:
pip install --pre torch torchvision -f https://download.pytorch.org/whl/nightly/cpu/torch_nightly.html
请注意,这里我们使用了pre-release版本的PyTorch,因为它包含最新的修复和功能。如果您不希望使用pre-release版本,可以将上述命令中的--pre
选项去掉。
解决方案二:禁用MPS加速
如果升级PyTorch后仍然遇到相同的问题,我们可以尝试禁用MPS加速。虽然MPS可以提供性能的提升,但在某些情况下会引发错误。禁用MPS可能会降低性能,但可以解决占位符存储未分配的问题。
要禁用MPS加速,我们可以使用torch._C._jit_set_profiling_executor(False)
和torch._C._jit_set_profiling_mode(False)
两个函数。示例代码如下:
import torch
torch._C._jit_set_profiling_executor(False)
torch._C._jit_set_profiling_mode(False)
将这两行代码添加到您的PyTorch脚本中,即可禁用MPS加速。
示例代码
以下是一个示例代码,演示了如何禁用MPS加速来解决RuntimeError的问题:
import torch
# 禁用MPS加速
torch._C._jit_set_profiling_executor(False)
torch._C._jit_set_profiling_mode(False)
# 创建一个张量
x = torch.tensor([1, 2, 3])
# 打印张量
print(x)
通过在代码中添加上述两行禁用代码,即可解决RuntimeError,使代码在M1 Mac上正常运行。
请注意,解决方案可能因您的具体环境和使用的PyTorch版本而有所不同。如果上述方法无法解决您遇到的问题,请尝试查阅PyTorch官方文档或咨询PyTorch社区以获取更多帮助和支持。
总结
在本文中,我们介绍了在M1 Mac上使用PyTorch时可能遇到的错误:RuntimeError: Placeholder storage has not been allocated on MPS device。我们探讨了这个错误的原因,并提供了两种常见的解决方案:升级PyTorch版本和禁用MPS加速。我们还提供了示例代码来演示如何禁用MPS加速来解决这个问题。
总结起来,要在M1 Mac上使用PyTorch时避免RuntimeError: Placeholder storage has not been allocated on MPS device错误,您可以尝试以下解决方案:
- 升级PyTorch版本到最新版本。
- 如果升级PyTorch后仍然遇到相同的问题,可以尝试禁用MPS加速。
- 使用
torch._C._jit_set_profiling_executor(False)
和torch._C._jit_set_profiling_mode(False)
来禁用MPS加速。
- 使用
- 确保您的代码中没有其他可能导致该错误的问题。
通过采取这些步骤,您应该能够在M1 Mac上成功运行PyTorch代码,而避免RuntimeError: Placeholder storage has not been allocated on MPS device错误的发生。
请记住,解决方案可能因您的具体环境和使用的PyTorch版本而有所不同。如果您遇到其他问题或需要更多帮助,请查阅PyTorch官方文档或咨询PyTorch社区。祝您在M1 Mac上愉快地使用PyTorch!