我开始学习Keras,我认为它是Tensorflow和Theano之上的一层。但是,我只能访问AMD GPU,例如AMD R9 280X。
如何设置Python环境,以便可以通过对OpenCL的Keras / Tensorflow支持来使用我的AMD GPU?
我在OSX上运行。
我开始学习Keras,我认为它是Tensorflow和Theano之上的一层。但是,我只能访问AMD GPU,例如AMD R9 280X。
如何设置Python环境,以便可以通过对OpenCL的Keras / Tensorflow支持来使用我的AMD GPU?
我在OSX上运行。
Answers:
我正在https://github.com/hughperkins/tensorflow-cl为Tensorflow写一个OpenCL 1.2后端
用于OpenCL的tensorflow分支具有以下特征:
这不是Tensorflow唯一可用的OpenCL分支。Codeplay https://www.codeplay.com还使用Computecpp,https: //www.codeplay.com/products/computesuite/computecpp开发了一个fork ,据我所知,他们对fork的要求比我强。知道,它在哪些特定GPU设备上工作。您需要查看平台支持说明(在htecomputecpp页面底部),以确定是否支持您的设备。编解码分叉实际上是Google的官方分叉,位于此处:https : //github.com/benoitsteiner/tensorflow-opencl
这篇文章的最初问题是:如何使Keras和Tensorflow与AMD GPU一起运行。
这个问题的答案如下:
1.)如果您可以使Tensorflow正常工作(可选地在您的虚拟/ conda环境中),则Keras将正常工作。
2.)如其他人所述,要使Tensorflow在AMD GPU上运行,可行的一种方法是编译Tensorflow以使用OpenCl。为此,请阅读下面的链接。为了简洁起见,我将在此处总结所需的步骤:
您将需要AMD专有驱动程序。这些当前仅在Ubuntu 14.04(Ubuntu决定更改UI呈现方式之前的版本)上可用。在撰写本文时,对Ubuntu 16.04的支持仅限于通过AMDProDrivers的一些GPU。想要在AMD GPU上进行深度学习的读者应该意识到这一点!
使用OpenCl支持编译Tensorflow还需要您获取并安装以下先决条件:OpenCl标头,ComputeCpp。
满足先决条件后,配置构建。请注意,有3种编译Tensorflow的选项:Std Tensorflow(stable),Benoits Steiner的Tensorflow-opencl(正在开发)和Luke Iwanski的Tensorflow-opencl(正在试验),您可以从github中提取它们。另请注意,如果您决定从任何opencl版本进行构建,则将丢失使用opencl的问题,因为假定您正在使用它。相反,这意味着,如果您从标准tensorflow配置,则在配置脚本要求您对CUDA使用opencl和“否”时,需要选择“是”。
然后像这样运行测试:
$ bazel test --config = sycl -k --test_timeout 1600-// tensorflow / ...-// tensorflow / contrib / ...-// tensorflow / java / ...-// tensorflow / compiler / ...
更新:在我的设置上执行此操作会花费很长时间。需要很长时间的部分是所有测试都在运行。我不确定这意味着什么,但是我的许多测试都在1600秒后超时。可以缩短测试时间,但要花更多的时间进行超时。另外,您可以只构建张量流而无需测试。在撰写本文时,测试已经进行了2天。
或者只是像这样构建pip包:
bazel build --local_resources 2048,.5,1.0 -c opt --config=sycl //tensorflow/tools/pip_package:build_pip_package
请实际阅读Codeplay上的博客文章:Lukas Iwansky于2017年3月30日发布了有关如何使Tensorflow与OpenCl一起使用的综合教程文章。因此,这是最近的文章。还有一些细节,我在这里没有写。
如以上许多文章所述,很少的信息散布在整个网络中。Lukas的文章在价值方面增加的是,所有信息都集中在一个地方,这应该使得设置Tensforflow和OpenCl的艰巨程度有所减轻。我只会在这里提供一个链接:
https://www.codeplay.com/portal/03-30-17-setting-up-tensorflow-with-opencl-using-sycl
这里发布了更完整的演练:
http://deep-beta.co.uk/setting-up-tensorflow-with-opencl-using-sycl/
它的主要区别在于,明确告知用户他/她需要:
注意上面提到了使用tensorflow-cl的替代方法:
https://github.com/hughperkins/tensorflow-cl
尽管目前看来这种方法不太活跃,但我无法确定哪种方法更好。发布的问题更少,而解决这些问题的对话也越来越少。去年有很大的推动。自2016年11月以来,更多的推动力减弱了,尽管在撰写本文时,休(Hugh)似乎在几天前已经推动了一些更新。(更新:如果您阅读了一些文档自述文件,那么此版本的tensorflowo现在仅依靠社区支持,因为主要开发人员忙于生活。)
更新(2017-04-25):我有一些基于下面测试tensorflow-opencl的注释。
以下是一些数字,用于使用“我的设置”(带有iGPU的A10-7850)的CIFAR10数据集来计算1个历元。您的里程几乎肯定会有所不同!
您可以看到在这种特殊情况下,性能会更差。我将其归因于以下因素:
如果您使用具有更多VRAM和更多流处理器的AMD GPU,则可以肯定会获得更好的性能。我想读一下人们正在取得的成就,以了解可能的成就。
如果/当更新被推送时,我将继续保持这个答案。
3.)目前正在暗示一种替代方法,那就是使用AMD的RocM计划和miOpen(等效于cuDNN)库。这些是/将是启用深度学习的开源库。需要注意的是RocM支持目前仅适用于Linux,并且miOpen尚未发布,但是Raja(AMD GPU负责人)在AMA中表示,使用上述内容,应该可以在Linux上进行深度学习。 AMD GPU。实际上,不仅计划为Tensorflow提供支持,而且还为Cafe2,Cafe,Torch7和MxNet提供支持。
可以通过PlaidML Keras后端使用AMD GPU。
最快:PlaidML通常比流行的平台(如TensorFlow CPU)快10倍(或更多),因为它支持所有GPU,独立于品牌和型号。PlaidML加速了AMD,Intel,NVIDIA,ARM和嵌入式GPU上的深度学习。
最简单:PlaidML安装简单,并支持多个前端(当前为Keras和ONNX)
免费:PlaidML是完全开源的,并且不依赖具有专有和限制性许可证的任何供应商库。
对于大多数平台,开始加速深度学习就像运行一些命令一样容易(假设您已安装Python(v2或v3)):
virtualenv plaidml
source plaidml/bin/activate
pip install plaidml-keras plaidbench
选择您要使用的加速器(许多计算机,尤其是笔记本电脑,有多个):
plaidml-setup
接下来,尝试对MobileNet推理性能进行基准测试:
plaidbench keras mobilenet
或者,尝试培训MobileNet:
plaidbench --batch-size 16 keras --train mobilenet
与keras套装一起使用
os.environ["KERAS_BACKEND"] = "plaidml.keras.backend"
欲获得更多信息
https://github.com/plaidml/plaidml
https://github.com/rstudio/keras/issues/205#issuecomment-348336284
import plaidml.keras
plaidml.keras.import_backend()
from keras import backend as K
这是一个古老的问题,但是由于我花了过去的几周时间自行解决:
现在,终于,经过3-4个星期的尝试弄清OpenCL等之后,我发现本教程可以帮助您快速入门。这是使hipCaffe正常运行的分步步骤。但是与nVidia不同,请确保您已支持硬件!https://rocm.github.io/hardware.html。认为没有他们支持的硬件就可以使它工作吗?祝好运。您已被警告。一旦您启动并运行了ROCM(并运行验证测试),这就是hipCaffe教程-如果您启动了ROCM,那么您将在10分钟内进行MNIST验证测试-甜! https://rocm.github.io/ROCmHipCaffeQuickstart.html
AMD ROCm堆栈已支持Tensorflow 1.3:
预先构建的docker镜像也已公开发布:
如果您可以访问其他AMD GPU,请参阅此处:https : //github.com/ROCmSoftwarePlatform/hiptensorflow/tree/hip/rocm_docs
这应该使您朝着ROCm平台上的tensorflow的正确方向前进,但是Selly关于https://rocm.github.io/hardware.html的帖子就是解决此问题的方法。该页面并不是一个详尽的列表,我自己发现Xeon E5 v2 Ivy Bridge与ROCm可以很好地工作,即使它们列出了v3或更高版本,但是显卡也有些挑剔。gfx8或更高版本,但随着时间的推移会出现一些小小的例外,例如北极星和其他。
更新-看起来hiptensorflow在配置过程中具有支持opencl的选项。我会说,即使您没有gfx8 +或Polaris gpu(如果opencl实现也可以),请调查链接。这是一个漫长的过程,但是遵循一个编写良好的指令一到三个小时(取决于硬件)并不会造成太多损失。