除了“cuda”之外,您能否在“hip”或“OpenCL”等其他内容上加速 torch DL 训练?

and*_*rea 9 gpu opencl deep-learning pytorch

我注意到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")
Run Code Online (Sandbox Code Playgroud)

我从未见过其他任何人被使用,并且想知道它们是否可以使用以及如何使用。我相信配备 AMD 显卡的最新 MacBook 应该可以使用"hip",但这是真的吗?训练速度会与使用一个 CUDA GPU 相似吗?torch.device如果不是,那么如果实际上无法使用这些选项,那么接受这些选项又有什么意义呢?

Art*_*yom 12

如果你想使用 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 支持(一年)自发布以来)并且看起来不会很快,APU 也不受臀部支持。
  2. 只有 Caffe 和 Keras+PlaidML 是支持 OpenCL 的流行框架之一。但
    • Caffe的问题:
      • Caffe 似乎不再被积极开发,并且以今天的标准来看有些过时了
      • Caffe OpenCL 实现的性能大约是 nVidia 的 cuDNN 和 AMD 的 MIOpen 提供的性能的 1/2,但它工作得相当不错,我在很多情况下都使用它。
      • 最新版本的性能甚至更高https://github.com/BVLC/caffe/issues/6585但至少你可以运行一个可以在后面进行多次更改的版本
      • Caffe/OpenCL 也可以工作,但我仍然手动修复了一些针对 AMD 的 OpenCL 的错误。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-beil​​is/dlprimitives

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

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

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