你能在“臀部”或“OpenCL”等“cuda”以外的任何东西上加速 Torch DL 训练吗?

Posted

技术标签:

【中文标题】你能在“臀部”或“OpenCL”等“cuda”以外的任何东西上加速 Torch DL 训练吗?【英文标题】:Can you accelerate torch DL training on anything other than "cuda" like "hip" or "OpenCL"? 【发布时间】:2021-02-07 21:44:08 【问题描述】:

我注意到torch.device 可以接受一系列参数,确切地说是cpucudamkldnnopenglopenclideephipmsnpu .

但是,在训练深度学习模型时,我只见过cudacpu 被使用。很多时候代码看起来像这样

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

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

【问题讨论】:

【参考方案1】:

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

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

    AMD 很时髦 - 类似于 CUDA 的接口,带有 pytorch、hipCaffe、tensorflow 端口,但是 AMD 的 hip/rocm 仅在 Linux 上受支持 - rocm 不提供 Windows 或 Mac OS 支持 即使您想使用带有 AMD GPU + ROCM 的 Linux,您也必须坚持使用 GCN derete 设备(即像 rx 580、Vega 56/64 或 Radeon VII 这样的卡),RDNA 设备不支持 hip/rocm (发布一年后)而且看起来不会很快,APU 也不受臀部支持。 支持 OpenCL 的流行框架只有 Caffe 和 Keras+PlaidML。但 Caffe 的问题: Caffe 似乎没有得到积极开发,而且按照今天的标准已经有些过时了 Caffe OpenCL 实现的性能大约是 nVidia 的 cuDNN 和 AMD 的 MIOpen 提供的性能的 1/2,但它工作得很好,我在很多情况下都使用它。 最新版本的性能甚至更高 https://github.com/BVLC/caffe/issues/6585,但至少您可以运行一个支持多个更改的版本 Caffe/OpenCL 也可以工作,但我仍然为 OpenCL over 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...

底线:

    如果您有 GCN 独立 AMD GPU 并且运行 Linux,则可以使用 ROCM+Hip。但它不如 CUDA 稳定 您可以尝试 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

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

【讨论】:

以上是关于你能在“臀部”或“OpenCL”等“cuda”以外的任何东西上加速 Torch DL 训练吗?的主要内容,如果未能解决你的问题,请参考以下文章

无法在 GeForce 540M 上运行 CUDA 或 OpenCL

用于光线追踪器的 OpenGL 或 CUDA/OpenCL? [关闭]

将 OpenCL/CUDA 转换为金属

OpenCL双边滤波实现美颜功能

OpenCL

以前听老人说在n卡上想跑起来opencl程序必须先安装cuda,我没装cuda只安装了nvidia的显卡驱动,结果配置