您能否在 "cuda" 以外的任何项目上加速 torch DL 培训,例如 "hip" 或 "OpenCL"?

Can you accelerate torch DL training on anything other than "cuda" like "hip" or "OpenCL"?

我注意到 torch.device 可以接受一系列参数,准确地说是 cpucudamkldnnopenglopencl, ideep, hip, msnpu.

然而,在训练深度学习模型时,我只见过 cudacpu 被使用。通常代码看起来像这样

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

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

如果您想使用 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 这样的卡),没有 hip/rocm 支持 RDNA 设备(发布一年后),看起来不会很快,hip 也不支持 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/Plaid-ML
      • 就访问较低级别功能的能力而言,Keras 本身是一个弱得多的框架
      • PlaidML 性能仍然是优化 NVidia 的 cuDNN 和 AMD MIOpen-ROCM 的 1/2 到 1/3 - 在我做的测试中比 caffe OpenCL 更慢
      • keras 后端 non-TF 的未来尚不清楚,因为 2.4 需要 TF...

底线:

  1. 如果您有 GCN 独立 AMD GPU 并且 运行 Linux 您可以使用 ROCM+Hip。然而它不如 CUDA
  2. 稳定
  3. 您可以尝试 OpenCL Caffe 或 Keras-PlaidML - 它可能比其他解决方案更慢并且不如其他解决方案最佳,但更有可能使其发挥作用。

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

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

比 Caffe-OpenCL 和 Keras 都具有更好的性能 - 与 Keras/TF2 相比,它的训练性能约为 75%,但是它处于早期开发阶段并且在这一点上更加有限Caffe/Keras-PlaidML

的一组图层

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

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