Pytorch 在M1 Mac上使用PyTorch:运行时错误-占位符存储在MPS设备上尚未分配

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错误,您可以尝试以下解决方案:

  1. 升级PyTorch版本到最新版本。
  2. 如果升级PyTorch后仍然遇到相同的问题,可以尝试禁用MPS加速。
    • 使用torch._C._jit_set_profiling_executor(False)torch._C._jit_set_profiling_mode(False)来禁用MPS加速。
  3. 确保您的代码中没有其他可能导致该错误的问题。

通过采取这些步骤,您应该能够在M1 Mac上成功运行PyTorch代码,而避免RuntimeError: Placeholder storage has not been allocated on MPS device错误的发生。

请记住,解决方案可能因您的具体环境和使用的PyTorch版本而有所不同。如果您遇到其他问题或需要更多帮助,请查阅PyTorch官方文档或咨询PyTorch社区。祝您在M1 Mac上愉快地使用PyTorch!

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程