OpenCL / AMD:深度学习

67

在进行一些调查和“谷歌”搜索后,我无法找到任何适用于科学GPGPU计算和AMD硬件上的OpenCL的严肃/流行框架/ SDK。是否有我错过的文献和/或软件?

特别是我对深度学习非常感兴趣。

据我所知,deeplearning.net推荐NVIDIA硬件和CUDA框架。此外,我所知道的所有大型深度学习框架,如Caffe、Theano、Torch、DL4J等都专注于CUDA,并不打算支持OpenCL / AMD。

此外,可以找到大量的科学论文以及针对基于CUDA的深度学习任务的相应文献,但几乎没有关于基于OpenCL / AMD的解决方案的内容。

是否有任何可能会出现新的或现有的科学框架,以支持基于OpenCL / AMD的解决方案在2015/16年?

使用OpenCL / AMD进行深度学习的好方法是什么?有哪些文献?教程?其他来源?


3
深度学习框架使用CUDA而不是OpenCL的原因之一是性能问题。它更容易为像Nvidia这样的单一供应商进行调整。虽然我不知道确切的答案,但很难找到适用于AMD的类似软件。 - Roman Arzumanyan
感谢您的输入。这多少是我现在为止所预期和发现的。正如我先前提到的,即使是谷歌也没有提供很多结果:( 真的没有官方来源、文献、教程或尝试吗? - daniel451
Theano似乎有一些OpenCL支持可用,通过GpuArray:http://deeplearning.net/software/theano/tutorial/using_gpu.html#gpuarray - jprice
3
请参阅维基百科的“深度学习软件比较”页面。 - HelloGoodbye
8个回答

40

编辑1 请查看Mikael Rousson's的回答-亚马逊现在是未来的发展方向,因为你可以从他们那里“租”计算能力。

编辑2 我已经创建了一个系列指南,详细介绍如何使用theano设置Amazon EC2实例进行深度学习。这比在个人机器上运行方便得多。

编辑3 看起来TensorFlow现在比theano更广泛地被接受,所以我已经相应更新了指南。

我曾处于与您相同的情况,因为我有一台带有Intel Iris图形的MacBook Pro。我花了大部分时间寻找所有可能的解决方法,欢迎提供我没有提到过的替代方案。

我目前最好的解决方案是:

  1. 安装tensorflow Python库,并利用GPU支持,不断更新到最新的开发版本。
  2. 使用theano - 并类似于tensorflow使用现有的GPU支持
  3. 购买NVIDIA显卡并在PC上使用它
  4. 如果您绝对需要OpenCL解决方案,并且愿意从高水平理解(没有教程)编写所有内容,请查看DeepCL和可能的pyOpenCl
我发现使用OpenCL的任何解决方案,例如pyOpenCl,目前都没有面向深度学习的用户友好界面。也就是说,用另一种方法编写代码需要更长的时间,而仅仅在CPU上快速编写并运行代码要更快。尽管如此,以下是一些最佳替代OpenCL库,可用于深度学习:

正在开发中


1
我感谢你的回答并点赞,谢谢!不过,我会等待一些时间再发放悬赏,也许会有更详细的答案,提供更多官方来源或者关于这个主题的科学论文/文献。 - daniel451
我意识到我实际上没有列出我在原始编辑中提到的使用OpenCL的库 - 现在已更新。我还添加了更多关于处于开发阶段的库的信息。同样,希望有人能够提供一个解决我所有OpenCL问题的答案,因为我目前正在考虑将我的笔记本电脑升级为NVIDIA图形版本,这将需要付出很大的努力和成本! - Alexander McFarlane
2
谢谢!我处于同样的情况。我的台式机是基于AMD的,笔记本电脑是基于Intel的,而NVIDIA硬件并不以廉价或在GPU计算方面具有良好的性价比而闻名,特别是涉及双精度运算时:/ - daniel451
更新:有两个声称OpenCL与Theano兼容的声明:这里这里。由于我正在进行我的论文项目,所以我还没有检查过,但是我在这里留下了这些信息,以防其他人有时间。官方github问题指出OpenCL目前不可用,并且问题堆栈支持此结论。 - Alexander McFarlane
更新:目前许多库和框架通过其GPU开放计划支持AMD硬件。很酷的事情正在发生,例如跨平台代码可以在AMD和Nvidia上运行而无需进行任何深入更改。请查看我在以下链接中的答案:https://dev59.com/Fl0a5IYBdhLWcg3wLWGx#33330306 - Yeasin Ar Rahman
@AlexanderMcFarlane,非常棒的回复。不知道您是否知道这些框架中有哪些与OpenCL 1.1 EP兼容? - Whoami

17

--- 2017年8月更新,AMD方面出现了一些新的亮点 ---

现在,实际上可以在大多数AMD硬件上运行任何库 点击此处

截至2015年10月25日

看起来AMD和其他公司已经开始开发了几个用于深度学习的OpenCL加速框架。所以,是的,OpenCL支持现在在深度学习中已经存在 :)

这是一个针对开发深度学习主要考虑OpenCL加速框架或工具的列表。我希望它们会在未来几年得到更新。

我们知道现在(2015年10月25日)有三种深度学习框架非常受研究人员欢迎,并已经出现了一些商业产品

  1. Theano

  2. Caffe

  3. Torch


Caffe拥有相当不错的OpenCL支持,因为AMD开发了一个完整版的Caffe,支持几乎所有Caffe的功能,并且正在积极开发中。它被称为OpenCL Caffe。这里是代码库

OpenCL Caffe

如果您正在考虑性能,则根据该网站(我自己没有进行过基准测试)它在AMD R9 Fury硬件上可以提供约261张图片/秒或每天2250万张图片的训练速度。与可以处理4000万张图片/天的nvidia K40相比,根据该网站,它可以以六分之一的价格提供一半的性能(考虑到K40是3000美元的显卡,R9 Fury约为600美元)。但是,使用任何消费级别的显卡都会给您带来关于内存(VRAM)的问题,这在深度学习中非常重要。


最近Torch似乎也有不错的OpenCL支持。但它只由一个人维护。它声称对Torch的所有功能都有完全支持。但是它并没有给出关于性能的想法。这里是代码库,而且它被积极维护。

cltorch


目前似乎没有一个像样的Theano框架的OpenCL后端,但正在进行中。当前版本可以完成简单程序。


还有其他一些针对深度学习的OpenCL框架。需要一些时间来确定它们是否正常工作。


10

这绝对是目前最好的解决方案!我自己正在使用它,因为你可以像平常一样安装所有软件并利用它们的计算能力。我认为他们也会提供折扣。我将编辑我的答案并链接到你的答案,因为人们可能不会在它获得更多赞之前阅读它。 - Alexander McFarlane

7
PlaidML(https://github.com/plaidml/plaidml)是一个完全开源的深度学习运行时,运行在OpenCL之上,并与Keras集成,提供熟悉的用户界面API。存储库中的README有更详细的状态说明,目前Linux上的卷积神经网络推理得到了良好支持,但我们(http://vertex.ai)正在尽快扩展完整性和平台支持。我们的持续集成机器包括各种AMD和NVIDIA GPU,目前仅支持Linux,但我们也正在努力添加Mac和Windows支持。

嗨,@Choong Ng!是否有可能为armv7-a平台交叉编译PlaidML?并且使用PlaidML是否需要最低的OpenCL版本要求? - Akhilesh
@Akhilesh 是的,我们(Vertex.AI)确实在armv7-a平台(Cortex A15)上测试了PlaidML,并且OpenCL 1.2是最低要求,尽管我认为我们过去也曾经使用过1.1。 - Choong Ng
感谢您的回复。我访问了您(vertex.AI)的网站和PlaidML(https://github.com/plaidml/plaidml),它看起来非常有前途。实际上,大多数深度学习框架都需要至少OpenCL 1.2。但是我只有OpenCL 1.1 EP。请问您能否确认是否可以交叉编译PlaidML以支持OpenCL 1.1 EP? - Akhilesh
@Akhilesh 谢谢,我看到你的工单提到了1.1 EP和GC2000 GPU(链接)。我相信你能够让它正常工作,但这可能需要对PlaidML进行小修改以支持EP和该芯片的任何特殊问题,并且如果你发现Vivante驱动程序存在重大错误,还需要与他们合作解决。 - Choong Ng
@ChoongNg,感谢您的回复。在查看以下线程时,https://github.com/plaidml/plaidml/issues/137,来自PlaidML团队的flaub声称他们尝试了GC2000 Vivante,但由于驱动程序问题失败了。我们还值得一试吗? - Whoami
@ChoongNg,此外在这个链接中https://groups.google.com/forum/#!topic/plaidml-dev/Kqqexk6OzdM Alfredo声称:“GC2000不会工作,它不是FP而是EP,大多数内核不会编译,因为EP不支持许多所需的功能。” - Whoami

5
我正在为Tensorflow编写OpenCL 1.2支持。目前支持以下内容:
  • BLAS矩阵乘法
  • 梯度
  • Eigen操作,如:约减、argmin/argmax和逐元素操作(二元和一元)
https://github.com/hughperkins/tensorflow-cl

4

TensorFlow现在在路线图上支持OpenCL。

查看:Github问题

希望很快就能推出可用版本。


1
请查看https://01.org/intel-deep-learning-framework - Intel®深度学习框架(IDLF)提供了一个统一的框架,用于加速基于Intel®平台的深度卷积神经网络。它是开源的,因此您也可以将其移植到AMD硬件上。很酷的是:它可以在带有Intel Iris图形的MacBook Pro上运行。

当您说Intel®平台时,是指具有Intel®编译器的平台,具有Intel® GPU的平台还是两者都需要? - Alexander McFarlane
Intel(R)平台指的是搭载有或没有Intel(R)处理器图形和Intel(R)加速器(例如Intel(R) Xeon Phi)的Intel(R)处理器。 - Robert Ioffe

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接