新型软件平台:结合GPU和FPGA训练深度学习

选自 nextplatform

机器之心编译

参与:Quantum Cheese、微胖

过去几年,很多文章都 道了GPU在深度学习训练方面的用处,影响程度较小的定制 ASIC 和 FPGA也有用。但是,对它们进行编程向来是个挑战。现在圣巴巴拉加利福尼亚大学的研究团队提出了一种新型中间软件平台,能把 GPU 和FPGA 这两种加速器组合起来,放在一个能为它们提供足够硬件抽象的普通编程环境中,这样卷积神经 络就能轻松地平衡两种器件。

过去几年,很多文章都 道了GPU在深度学习训练方面的用处,影响程度较小的定制 ASIC 和 FPGA也有用。与传统只用CPU的方法相比,这种方式的性能表现更优越,效率更高,但是,对它们进行编程向来是个挑战。撇开编程上的障碍不谈,目前标准的模式就是在加速器上训练深度学习,但这种方法只局限于一种选择——GPU或者更低端的扩展,FPGA。

现在,一个来自圣巴巴拉加利福尼亚大学的团队提出了一种新型中间软件平台,能把这两种加速器组合起来,放在一个能为它们提供足够硬件抽象的普通编程环境中,这样卷积神经 络就能轻松地平衡两种器件。

把 FPGA 这样的可编程器件与GPU结合就能使编程工作变得轻松,这听起来有点牵强附会。但是,该研究团队已经用一块 Altera DE5 型 FPGA 和一个英伟达 K40 型 GPU 的组合取得了很不错的成效,他们表示,这种方法可以「在不增加程序员负担的前提下,为各种应用提供一个通用框架和有效支持。」

「 与 GPU 加速器相比, FPGAs 和 ASIC 这样的硬件加速器能用更低功耗完成最低要求的任务。然而, FPGAs 和 ASIC 的计算资源、内存和 I/O带宽都相对有限。因此,在硬件加速器上发展复杂和庞大的深度神经 络是很麻烦的。直到现在,为不同架构提供有效中间软件支持的问题始终没有真正解决。」

他们也从能耗、吞吐量、性能密度及其他因素方面考虑了两者的相对差异和各自的优劣。他们发现可以通过在某部分工作中更多使用某方面性能更好的器件来平衡整个架构。

API向主代码中的调度中间件发送请求,卸掉 CUDA 或 OpenCL核心的部分执行线程。这些核心有一个共享的内存空间。从程序员视图中抽象出了进程安排和运行时间支持,送入API中处理,对于任何一个器件的应用,它都相当于中间桥梁。

CNNLab 用 CUDA 把应用绘制到核心,OpenCL 用该团队开发的中间件作为神经 络和加速器间的桥梁。这种架构很灵活,可以把任务分配给任一个器件,而且两种架构采用了共同的运行时间。

在开发这个中间件框架的过程中,该团队为理解不同深度学习方式下GPUs 与 FPGAs之间的相对差异,用英伟达和 Altera 的零件构造了一个原型硬件,把它作为基准去对比 GPUs 和 FPGAs在执行时间、吞吐量、功率、能耗以及性能密度方面的差异。单单这个结果就很值得研究了。

他们的结果显示「 GPU的加速率(100x) 和吞吐量(100x) 更高,但FPGA节约的功耗(50x) 更多 。」他们也注意到,两种器件上运行卷积神经 络的能耗很接近。在性能密度方面,二者相差也不大,FPGA每瓦100亿次浮点运算而GPU是每瓦140亿次。不过,他们发现GPU的运作效率更高。

对卷积神经 络,GPU 和 FPGA在一系列指标上的对比

虽然该团队已经在他们的平台上实现了加速,他们也意识到有些方面还有待提高。如果用更好的压缩 络模型,两种器件都能进一步提速。他们也考虑到了用Spark 或TensorFlow作数据处理主干的情况下如何配对这些加速器的问题。

这是一项很有意义的工作,他们创造出了一个能为FPGA 和GPU这两种器件工作的双向软件层,使性能和效率得到提升。而且通过一点努力,就能把两种器件都集成在带有低功耗处理器的电路板上,并把它们捆绑起来支撑卷积神经 络的运行。但如果FPGA真的这么容易对话,OpenCL/CUDA界面也真的这么容易结合的话,你可能会奇怪为什么之前没有人尝试这么做呢,而事实上,以前确实没有过。

在这个团队开发的中间件框架之外,更大的问题是两种加速器的特性(上面图标中显示的那些指标)如何才能堆叠起来。Microsoft 的Catapult 和其他的系统都在用FPGA做深度学习,堆叠问题对于这个领域来说并不会经常被吹捧。由于Intel收购了Altera,并且主要方向集中在了机器学习上,我们期望在未来一两年内这个领域能取得更多进展。

?————————————————

投稿或寻求 道:editor@almosthuman.cn

广告&商务合作:bd@almosthuman.cn

点击「阅读原文」,浏览原英文文章↓↓↓

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2016年6月3日
下一篇 2016年6月4日

相关推荐