OpenCL / AMD:深度学习 [关闭]
Posted
技术标签:
【中文标题】OpenCL / AMD:深度学习 [关闭]【英文标题】:OpenCL / AMD: Deep Learning [closed] 【发布时间】:2015-08-17 19:45:13 【问题描述】:在“谷歌搜索”和做一些研究时,我无法在 上找到 任何 用于科学 GPGPU 计算和 OpenCL 的严肃/流行框架/sdk >AMD 硬件。有没有我错过的文献和/或软件?
我尤其对深度学习感兴趣。
据我所知,deeplearning.net 推荐 NVIDIA 硬件和 CUDA 框架。此外,我所知道的所有大型深度学习框架,例如 Caffe、Theano、Torch、DL4J、...专注于CUDA,不打算支持OpenCL/AMD。
此外,人们可以找到大量关于基于 CUDA 的深度学习任务的科学论文和相应的文献,但对于基于 OpenCL/AMD 的解决方案几乎没有。
是否有可能在 2015/16 年为基于 OpenCL/AMD 的解决方案出现新的或现有的科学框架?
深度学习与 OpenCL/AMD 的良好开端是什么?有文献吗?教程?其他来源?
【问题讨论】:
深度学习框架使用 CUDA 而不是 OpenCL 是有原因的——其中之一就是性能。为像 Nvidia 这样的单一供应商调整它更容易。虽然我不知道确切的答案,但几乎没有机会为 AMD 找到那种软件。 感谢您的意见。这或多或少是我迄今为止所期望和发现的。正如我已经提到的,即使是谷歌也没有提供很多结果:(真的没有官方来源,没有文献,没有教程,没有尝试吗? Theano 似乎有某种可用的 OpenCL 支持,通过GpuArray
: deeplearning.net/software/theano/tutorial/…
另见Comparison of deep learning software***页面。
【参考方案1】:
编辑 1 请参阅 Mikael Rousson's 答案 - 亚马逊现在是前进的方向,因为您可以从他们那里“租用”计算能力。
编辑 2 我创建了一个 series of guides,介绍如何使用 theano
为深度学习设置 Amazon EC2 实例。这比在个人机器上运行方便很多。
编辑 3 看来 TensorFlow 现在比 theano
更被广泛接受,所以我相应地更新了指南。
我的情况和你一样,因为我有一台配备 Intel Iris 显卡的 MacBook Pro。我花了一周的大部分时间研究所有可能的解决方法,我非常欢迎我提供的替代方法。
我目前最好的解决方案是:
-
安装
python
库 tensorflow
并利用现有的 GPU 支持并继续更新到最新的开发版本。
使用theano
- 并使用existing GPU support,类似于tensorflow
购买 NVIDIA 显卡并在 PC 上使用
如果您绝对需要 OpenCL 中的解决方案,并且愿意以高水平的理解(无教程)编写所有内容,请查看 DeepCL 和可能的 pyOpenCl。
我发现任何使用 OpenCL 的解决方案,例如pyOpenCl,还没有用于深度学习的用户友好界面,也就是说,用另一种方法编写代码比快速编写代码并在 CPU 上运行需要更长的时间。尽管如此,以下是深度学习的最佳替代 OpenCL 库:
Python - DeepCL Jonathan's Torch7 Utility Library - C++开发中
tensorflow
是 adding OpenCL 支持,一旦改进 Eigen
和其他依赖项是 finished
theano
是 adding support 通过 clBLAS
到 OpenCL
Caffe
在添加 OpenCL 支持的 development stages 中,但有点落后于 theano
正在进行中,似乎
【讨论】:
感谢您的回答并点赞,谢谢!但是,我会等待几天的赏金,也许会有更广泛的答案,有更多的官方来源,甚至是关于该主题的科学论文/文献。 我意识到我实际上并没有列出我在原始编辑中提到的使用 OpenCL 的库 - 现在更新了。我还添加了更多关于开发阶段库的信息。同样,我希望有人能提供一个解决我所有 OpenCL 问题的答案,因为我目前正在考虑将我的笔记本电脑换成 NVIDIA 图形版本,这将是费力且昂贵的! 谢谢!我也有同样的情况。台式机基于 AMD,笔记本电脑基于 Intel,而 NVIDIA 硬件并不以便宜或在 GPU 计算方面具有良好的性价比而闻名,尤其是在双精度运算方面:/ 更新:关于 OpenCL 与 Theano 一起使用的两个声明:here 和 here 我没有检查,因为我对我的论文项目很感兴趣,但如果其他人有时间,我就离开这里。 official github issue 声明 OpenCL 当前不可用,并且问题堆栈支持这一点 更新:目前许多库和框架通过其 GPU 开放计划支持 AMD 硬件。那里正在发生很酷的事情,例如就像在 AMD 和 Nvidia 上运行的跨平台代码,没有任何深刻的变化。在链接***.com/a/33330306/2442649中查看我的答案【参考方案2】:--- 2017 年 8 月更新 AMD 方面发生了很酷的新事情 ---
现在实际上可以在大多数 AMD 硬件上运行任何库 Check Here
截至 2015 年 10 月 25 日
似乎 AMD 和其他公司已经在开发几个用于深度学习的 OpenCL 加速框架方面伸出了手。所以是的,深度学习现在已经存在 OpenCL 支持 :)
这是一个 OpenCL 加速框架或工具的列表,这些框架或工具的开发主要考虑了深度学习。我希望他们会在未来几年得到更新
我们知道现在(2015 年 10 月 25 日)有三个深度学习框架非常受研究人员欢迎,并且已经看到了一些商业产品
Theano
咖啡
手电筒
caffe 有很好的 OpenCL 支持,因为 amd 开发了一个完整的 caffe 版本,几乎支持 caffe 的所有功能,并且正在积极开发中。它被命名为 OpenCL Caffe。这是存储库
OpenCL Caffe
如果您正在考虑性能,那么根据该站点(我自己没有对其进行基准测试),它在 AMD R9 Fury 硬件(培训)中每秒提供大约 261 张图像或每天 2250 万张图像。与 nvidia K40 相比,它一天可以处理 4000 万张图像。所以根据该网站的说法,它可以以六分之一的钱提供一半的性能。(考虑到 k40 是 3000 美元的卡,而 r9 fury 大约是 600 美元)。但是,使用任何消费卡都会给您带来关于内存(vram)的问题,这在深度学习中非常重要。
Torch 最近几天似乎也有不错的 OpenCL 支持。然而,它由一个人维护。它声称完全支持torch的所有功能。但是,它并没有给出关于性能的想法。这是存储库。它得到积极维护。
cltorch
目前,theano 框架似乎没有像样的 opencl 后端,但工作正在进行中。简单的程序都可以用当前版本完成。
还有一些其他用于深度学习的 opencl 框架。需要一些时间来整理它们,看看它们是否正常工作。
【讨论】:
【参考方案3】:另一种方法是在 Amazon Web Services 上使用 GPU 实例。 您可以找到已安装常用深度学习包的 AMI。例如:
火炬:https://github.com/torch/torch7/wiki/Cheatsheet#ec2-public-ami Theano+Caffe:https://www.kaggle.com/forums/f/208/getting-started/t/11505/an-aws-ami-mainly-for-deep-learning提示:使用 Spot 实例可以获得更便宜的价格(g2.2xlarge 大约 10 美分/小时)。
【讨论】:
这是目前最好的解决方案!我自己目前正在使用它,因为您可以正常安装所有软件并使用它们的计算能力。我认为他们也有折扣。我将编辑我的答案以链接到您的答案,因为人们可能在获得更多投票之前不会阅读【参考方案4】:PlaidML (https://github.com/plaidml/plaidml) 是一个完全开源的深度学习运行时,它在 OpenCL 之上运行并与 Keras 集成以提供熟悉的面向用户的 API。 repo 中的 README 有更详细的状态,目前 Linux 上的 convnet 推理得到很好的支持,但我们 (http://vertex.ai) 正在努力尽快扩展完整性和平台支持。我们的持续集成机器包括各种 AMD 和 NVIDIA GPU,目前都是 Linux,但我们也在努力添加 Mac 和 Windows。
【讨论】:
嗨@Choong Ng!是否可以为armv7-a
平台交叉编译PlaidML
?使用PlaidML
是否需要任何最低 OpenCL 版本?
@Akhilesh 是的,我们 (Vertex.AI) 在 armv7-a 平台 (Cortex A15) 上测试 PlaidML,OpenCL 1.2 是最低要求,尽管我认为我们过去已经使 1.1 工作。
感谢您的回复。我访问了您的 (vertex.AI) 网站和 PlaidML (github.com/plaidml/plaidml),看起来很有希望。实际上,大多数深度学习框架都需要最低 OpenCL 1.2。但我有 OpenCL 1.1 EP。请确认是否可以为 OpenCL 1.1 EP 交叉编译 PlaidML。
@Akhilesh 谢谢,我看到你的票提到了 1.1 EP 和 GC2000 GPU(link 后面的人)。我希望您能够使其工作,但它可能需要对 PlaidML 进行一些小的修改以支持 EP 和该芯片的任何怪癖,以及如果您在他们的驱动程序中发现重大错误,请与 Vivante 合作。
@ChoongNg,感谢您的回复。在查看下面的帖子时,来自 PlaidML 团队的github.com/plaidml/plaidml/issues/137 flaub 声称他们尝试了 GC2000 Vivante,但由于驱动程序问题而失败。还值得我们尝试吗?【参考方案5】:
我正在为 Tensorflow 编写 opencl 1.2 支持。 https://github.com/hughperkins/tensorflow-cl 目前支持:
blas 矩阵乘法 渐变 特征运算,例如:归约、argmin/argmax、每元素运算(二元和一元)【讨论】:
【参考方案6】:TensorFlow 现在在 roadmap 上支持 OpenCL。
请参阅:Github issue。
希望与工作版本相距不远。
【讨论】:
【参考方案7】:请查看https://01.org/intel-deep-learning-framework - 英特尔® 深度学习框架 (IDLF) 为加速深度卷积神经网络的英特尔® 平台提供了一个统一框架。它是开源的,因此您也可以将其移植到 AMD 硬件上。很酷的事情:它可以在配备 Intel Iris 显卡的 MacBook Pro 上运行。
【讨论】:
当您说 英特尔® 平台时,您是指具有英特尔® 编译器的平台、具有英特尔® GPU 的平台,还是两者都需要? 英特尔(R) 平台是指带有或不带有英特尔(R) 处理器图形和英特尔(R) 加速器(如英特尔(R) Xeon Phi)的英特尔(R) 处理器。【参考方案8】:查看由 AMD 驱动的ROCm platform。这是第一个独立于编程语言的 GPU 计算开源 HPC/超大规模级平台。
具体来说:
有关深度学习,请参阅https://rocm.github.io/dl.html
对于 OpenCL,请参阅:
https://rocm.github.io/QuickStartOCL.html https://gpuopen.com/opencl-rocm1-6/有用的教程可以在这里找到:https://rocm.github.io/tutorials.html
【讨论】:
以上是关于OpenCL / AMD:深度学习 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章