你能在“臀部”或“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
可以接受一系列参数,确切地说是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
接受这么多选项,如果它们实际上无法使用,又有什么意义?
【问题讨论】:
【参考方案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