除了“cuda”之外,你能在“hip”或“OpenCL”等其他任何东西上加速 torch DL 训练吗?

问题描述 投票:0回答:1

我注意到

torch.device
可以接受一系列参数,确切地说是
cpu
cuda
mkldnn
opengl
opencl
ideep
hip
msnpu

但是,在训练深度学习模型时,我只见过使用

cuda
cpu
。很多时候,代码看起来像这样

if torch.cuda.is_available():
    device = torch.device("cuda")
else:
    device = torch.device("cpu")

我从未见过其他任何一个被使用,并且想知道它们是否可以使用以及如何使用。我相信配备 AMD 显卡的最新 MacBook 应该能够使用

"hip"
,但这是真的吗?训练速度会与使用一个 CUDA GPU 相似吗?如果不是,那么
torch.device
如果实际上无法使用它们,那么接受这么多选项有什么意义呢?

deep-learning pytorch gpu opencl
1个回答
13
投票

如果你想使用 GPU 进行深度学习,可以在 CUDA 和 CUDA 之间进行选择...

更广泛的答案,是的,有 AMD 的臀部和一些 OpenCL 实现:

  1. AMD 很时髦 - 类似 CUDA 的接口,带有 PyTorch、hipCaffe、TensorFlow 的端口,但是
    • AMD 的 hip/rocm 仅在 Linux 上受支持 - rocm 不提供 Windows 或 Mac OS 支持
    • 即使您想使用带有 AMD GPU + ROCM 的 Linux,您也必须坚持使用 GCN desrete 设备(即 rx 580、Vega 56/64 或 Radeon VII 等卡),RDNA 设备没有 hip/rocm 支持(a自发布以来一年)并且看起来不会很快,APU 也不受臀部支持。
  2. 支持 OpenCL 的流行框架只有 Caffe 和 Keras+PlaidML 之一。但
    • Caffe 的问题:
      • Caffe 似乎不再积极开发,以今天的标准来看有些过时了
      • Caffe OpenCL 实现的性能大约是 nVidia 的 cuDNN 和 AMD 的 MIOpen 提供的性能的 1/2,但它工作得很好,我在很多情况下都使用它。
      • 最新版本的性能受到了更大的影响https://github.com/BVLC/caffe/issues/6585但至少你可以运行一个可以在后面进行多次更改的版本
      • Caffe/OpenCL 也可以工作,但我仍然手动修复了一些针对 OpenCL 而不是 AMD 的错误。 https://github.com/BVLC/caffe/issues/6239
    • Keras/格子-ML
      • Keras 本身在访问较低级别功能的能力方面要弱得多
      • PlaidML 性能仍然是优化的 NVidia cuDNN 和 AMD 的 MIOpen-ROCM 的 1/2 - 1/3 - 并且在我所做的测试中比 caffe OpenCL 更慢
      • keras 的非 TF 后端的未来尚不清楚,因为 2.4 需要 TF...

底线:

  1. 如果您有 GCN 独立 AMD GPU 并且运行 Linux,则可以使用 ROCM+Hip。但它不如 CUDA 稳定
  2. 您可以尝试 OpenCL Caffe 或 Keras-PlaidML - 它可能速度较慢,并且不如其他解决方案那么理想,但有更高的机会使其发挥作用。

编辑2021-09-14:有一个新项目dlprimitives:

https://github.com/artyom-beilis/dlprimitives

它比 Caffe-OpenCL 和 Keras 都有更好的性能 - 与 Keras/TF2 相比,它的训练性能约为 75%,但它正处于早期开发阶段,目前的层集比 Caffe/Keras 更有限 -格子ML

与 pytorch 的连接正在进行中,并取得了一些初步结果:https://github.com/artyom-beilis/pytorch_dlprim

免责声明:我是这个项目的作者

© www.soinside.com 2019 - 2024. All rights reserved.