如何在 Macbook pro (M1) GPU 上运行 Pytorch?

pes*_*ehr 23 gpu pytorch apple-m1

我尝试在 Macbook pro 上使用 PyTorch 训练模型。它采用新一代苹果M1 CPU。但是,PyTorch 无法识别我的 GPU。

GPU available: False, used: False
TPU available: False, using: 0 TPU cores
IPU available: False, using: 0 IPUs
Run Code Online (Sandbox Code Playgroud)

有谁知道有什么解决办法吗?

我已将所有库更新到最新版本。

dom*_*nic 28

自 2022 年 5 月 18 日起,PyTorch 在 Nightly 版本中添加了对 M1 GPU 的支持。在他们的博客文章中了解更多相关信息。

只需每晚安装: conda install pytorch -c pytorch-nightly --force-reinstall

更新:它在稳定版本中可用:

  • 康达:conda install pytorch torchvision torchaudio -c pytorch
  • 点:pip3 install torch torchvision torchaudio

使用(来源):

mps_device = torch.device("mps")

# Create a Tensor directly on the mps device
x = torch.ones(5, device=mps_device)
# Or
x = torch.ones(5, device="mps")

# Any operation happens on the GPU
y = x * 2

# Move your model to mps just like any other device
model = YourFavoriteNet()
model.to(mps_device)

# Now every call runs on the GPU
pred = model(x)
Run Code Online (Sandbox Code Playgroud)


小智 17

看起来 PyTorch 对 M1 GPU 的支持正在进行中,但尚未完成。

来自GitHub 上的@soumith

所以,这是一个更新。我们计划支持 M1 GPU。@albanD、@ezyang 和一些核心开发人员一直在研究它。我现在无法确认/否认任何其他人的参与。

所以,到目前为止,我们已经有了一个还不错的原型。我们采用了错误的方法(更多的是图形匹配),并且用户体验并不好——有些操作非常快,有些操作非常慢,总体上没有流畅的体验。人们必须猜测他们的哪一个工作流程会很快。

因此,我们正在使用一种新方法完全重写它,我认为这更接近您的旧 PyTorch,但这需要一些时间。我认为我们不会在接下来的 4 个月内达到公开 alpha 版本。

我们将尽快开放该后端的开发。

那篇文章: https://github.com/pytorch/pytorch/issues/47702#issuecomment-965625139

TL;DR:公开测试版至少还有 4 个月时间。

  • 这事有进一步更新吗? (3认同)

Bik*_*ram 8

conda对于那些像我一样无法安装的人,请使用pip以下方法:-

\n

要求:

\n
    \n
  • 任何配备苹果硅芯片的 Macbook
  • \n
  • macOS 版本 12.3+
  • \n
\n

安装:

\n

pip3 install --pre torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/nightly/cpu

\n
\n

更新:

\n

不需要夜间版本。Pytorch 1.12 版本现在支持 Apple Silicon 中的 GPU 加速。只需使用以下命令安装:-

\n

pip3 install torch torchvision torchaudio

\n

您可以按照在 Apple Silicon 中使用 pytorch 并获取基准的其他说明进行操作。

\n
\n

用法:

\n

确保您使用mps以下设备:

\n
device = torch.device(\'mps\')\n\n# Send you tensor to GPU\nmy_tensor = my_tensor.to(device)\n
Run Code Online (Sandbox Code Playgroud)\n

基准测试(在 M1 Max、10 核 CPU、24 核 GPU 上):

\n
    \n
  1. 不使用GPU
  2. \n
\n
import torch\ndevice = torch.device(\'cpu\')\nx = torch.rand((10000, 10000), dtype=torch.float32)\ny = torch.rand((10000, 10000), dtype=torch.float32)\nx = x.to(device)\ny = y.to(device)\n
Run Code Online (Sandbox Code Playgroud)\n
%%timeit\nx * y\n
Run Code Online (Sandbox Code Playgroud)\n
17.9 ms \xc2\xb1 390 \xc2\xb5s per loop (mean \xc2\xb1 std. dev. of 7 runs, 100 loops each)\n
Run Code Online (Sandbox Code Playgroud)\n
    \n
  1. 使用 GPU (快 5 倍)
  2. \n
\n
import torch\ndevice = torch.device(\'mps\')\nx = torch.rand((10000, 10000), dtype=torch.float32)\ny = torch.rand((10000, 10000), dtype=torch.float32)\nx = x.to(device)\ny = y.to(device)\n
Run Code Online (Sandbox Code Playgroud)\n
%%timeit\nx * y\n
Run Code Online (Sandbox Code Playgroud)\n
3.43 ms \xc2\xb1 57.1 \xc2\xb5s per loop (mean \xc2\xb1 std. dev. of 7 runs, 100 loops each)\n
Run Code Online (Sandbox Code Playgroud)\n

  • 使用相同的 Mac 和代码,我发现“mps”比“cpu”慢。这可能是因为计算量不够大。 (2认同)