深度学习的黄金搭档:GPU正重塑计算方式

随着神经网络和深度学习研究的不断深入——尤其是语音识别和自然语言处理、图像与模式识别、文本和数据分析,以及其他复杂领域——研究者们不断在寻找新的更好的方法来延伸和扩展计算能力。

几十年来,这一领域的黄金标准一直是高性能计算(HCP)集群,它解决了大量处理能力的问题,虽然成本有点过高。但这种方法已经帮助推动了多个领域的进步,包括天气预测、金融服务,以及能源勘探。

Synced (272).jpg

然而,2012 年,一种新的方法出现了。伊利诺伊大学的研究者之前已经研究过在台式超级计算机中使用 GPUs 来加速处理任务(如图像重建)的可能性,现在多伦多大学的一组计算机科学家和工程师证明了一种在 GPUs 上运行深度神经网络来极大推进计算机视觉技术的方法。插上 GPUs(之前主要用在图形中)后,计算神经网络的性能会立即获得巨大提升,这种提升反映在了计算机视觉效果的明显改善上。

这是一次革命性进步!

「仅仅在几年之后,GPUs 已经出现在深度学习的核心位置,」加州大学伯克利分校电子工程和计算机科学系教授 Kurt Keutzer 说到。「GPUs 的使用正在成为主流,通过在一个应用程序中使用几十到数百个处理器,GUP 正在从根本上改变计算。」

伊利诺伊大学厄巴纳-香槟分校电子与计算机工程 Walter J. Sanders III–Advanced Micro Device 的名誉主席 Wen-Mei W. Hwu 也说过,「GPU 是卓越的吞吐量计算设备。如果你只有一项任务,就没必要用到 GPUs,因为速度也快不到哪去。但是,如果你有大量的相互之间独立的任务,用 GPUs 就对了。」

一个深度视角

GPU 架构起源于基础的图形渲染操作,比如给图形加阴影。1999 年,Nvida 推出了 GeForce 256,这是世界上第一个 GPU。简单来说,这个专用的电路——-可内置在视频卡或主板中——主导并优化了计算机内存以加快显示器的渲染速度。今天,GPUs 用在更加广泛的设备中,包括个人计算机、平板电脑、手机、工作站、电子标示、游戏机,以及嵌入式系统。

然而,「计算机视觉和深度学习中很多新应用的内存都是有限带宽,」Keutzer 解释道,「在这些应用中,应用程序的速度往往最终取决于它从内存中提取数据以及流入和通过处理器要花多少时间。」

部署 GPU 的一个常常被忽视的巨大优势是其 processor-to-memory 的超级带宽。Keutzer points 指出,这样的结果是,「在带宽有限的应用中,这个 processor-to-memory 带宽的相对优势直接转化成超级应用性能。」关键是 GPUs 用更少的电力提供了更快的浮点运算(FLOPs,每秒浮点运算次数)通过支持 16 位的浮点数扩大了能效优势,比单精度(32 位)或双精度(64 位)浮点数的能效更高。

多核 GPU 要依赖更大量的 32 位到 64 位这样更简单的处理器内核的大量部署。相比之下,使用更小的传统的微处理器,通常是 2 位到 4 位到 8 位时,效果如何会呢?

「使用微处理器的 GPUs 实现了更优越的性能,并为深度神经网络提供了更好的架构支持。GPUs 在深度神经网络上表现出的性能优势逐渐被转化到更多种类的应用中。」Keutzer 说。

今天,一个典型的 GPU 集群包含了 8 到 16 个 GPU,而像 Keutzer 这样的研究人员正在尝试使用数百个 GPU 在超大数据集上同时训练多个深度神经网络,否则将需要几周的训练时间。这个训练需要运行大量数据通过该系统以让它达到能解决问题的状态。那时,它或许就可以在一个 GPU 或者混合处理器中运行了。「这不是一次学术训练。」Keutzer 指出。「我们训练用于像自动驾驶汽车这种新应用的神经网络时,就需要这样的速度。」

使用 GPU 正在成为主流,通过在单个应用中使用多个处理器,能从根本上改变计算。

GPU 技术现在的进展速度远比传统的 CPU 快,凭借强劲的浮点马力和较低的能耗,GPU 的可扩展性能让深度学习和机器学习任务的效率得到飞速提升,效果堪比给汽车装上涡轮增压发动机,百度高级研究员 Bryan Catanzaro 说到。「深度学习不是新鲜事物。GPUs 也不是。但是这个领域在计算能力得到极大提升和有丰富数据可供使用之后,才开始真正起航。」

大部分进展来自 Nvidia,这家公司不断推出更加复杂的 GPUs,包括刚推出的专为解决训练和推理这类特殊任务的 Pascal 架构。在这款最新的 GPU 系统中,Tesla P100 芯片实现了在一片硅片上封包 150 亿个晶体管,数量是之前处理器的两倍。

另一个例子,百度正在推进语言识别研究的新前沿。它的「Deep Speech」项目,依赖一个端到端的神经网络,在英语和汉语的短音频剪辑中使语音识别的精确度达到了人类水平。这家公司还在探索自动驾驶汽车中的 GPU 技术;它一直在研发能在北京大街上自动导航的自动驾驶汽车,并做了改变车道、超车、停车和启动的演习。

同时,微软亚洲的研究员使用 GPUs 和一种深度神经网络的变体——深度残差网络,来在计算机视觉中的对象分类和识别的任务中实现更高精确度。

谷歌,也在使用这些技术来持续改进图像识别算法。前谷歌人工智能研究员,现 Open AI 研究室主任 Ilya Sutskever 说到:「神经网络正在复兴。神经网络和深度学习的核心理念已经被讨论和思考多年了,但是正是通用 GPU 的研发才是神经网络和深度学习成功的关键。」

一步超越

「虽然 GPU 技术正在深度学习领域推进到新的前沿,但很多计算性的挑战仍然存在。首先,像 GPU 这样的独立程序化多核设备的高效实现仍然很困难;并且,这种困难会随着多 GPU 并行的加剧而恶化。」Keutzer 说道。

不幸的是,他补充道,「这些设备的许多高效程序化的专业技术都被限制在公司内部,许多已被开发的技术细节仍未被广泛地应用。」

同样地,Keutzer 认为,关于深度神经网络的设计仍被广泛地描述为「黑科技」,构建一种新型的深度神经网络架构同构建一种新型的微处理器架构一样复杂。更糟糕的是,一旦这种深度神经网络架构被构建,「就会产生很多类似超参数的 knobs,在应用在训练中时,只有当这些 knobs 被合理设置时才会产生应有的精确度。所有的这些造成了这些已知和未知间的知识鸿沟」

「不论是在深度神经网络领域还是 GPU 编程领域,拥有专业知识的个人都是十分匮乏的,而那些对两方面都了如指掌的人才则是更为罕见。」

另一大挑战则是理解如何最高效地使用 GPU。举个例子,百度需要 8-16 个 GPU 去训练一个模型,从而在整个应用中达到 40%-50% 的浮点峰值。「这就意味着表现得效果十分有限。」Catanzaro 说道,「现实是我们需要更大规模地使用 GPU,8 个或 16 个远远不够,我们可能需要的是 128 个 GPU 并行。」这就需要更好的连接,以及支持由 32 位浮点支持到 16 位浮点支持的能力。Nvidia 的下一代 GPU——Pascal 有可能可以解决这些问题。

此外,还有一大障碍在于让 GPU 更好地同其他 GPU 和 CPU 集成。Hwu 指出,这两种类型的处理器并不常会集成在一起,并且他们之间也很少拥有足够高的带宽。这就最终转化成了有限数量的应用和系统运行的能力。

「你十分需要让你的 GPU 具备运行大数据任务的能力;同时,你的 GPU 还能适时暂停使卸载进程比较合算。」Catanzaro 解释道。

现在的 Nvidia GPU 存在于不同的芯片上,他们通常通过一个 I/O bus (PCIe) 连接到 CPU 上。这就是它们能够向 GPU 发送大量任务的一个原因。未来的系统会将 GPU 和 CPU 集成在一个统一的包里,并且它能承担更高带宽和更小的风险,以及通过 GPU 和 CPU 来保持共享的一致性。

Keutzer 希望随着时间的推移,CPU 和 GPU 能够得到更好的集成,这两者间更强的一致性与同步性也随之能够实现。事实上,Nvidia 和 Intel 也都在关注着这一领域。Keutzer 注意到一种名为 Knight's Landing (KNL) 的新型 Intel 芯片在 Xeon Phi 72-core super-computing 处理器中提供了前所未有的计算能力,并且,它同时集成了 CPU 和 GPU 的特性。同时,这款芯片还提供了每秒 500 GB processor-to-memory 的带宽需求,这也将侵蚀 GPU 在这一领域的优势。

Hwu 注意到 KNL 的 72 个核彼此都能执行「一个宽泛的向量指令(512 字节)。当转化到双重精度(8 字节)和单一精度(4 字节)的时候,向量宽带就将会是 64 和 128。在这个层面上,它和 GPU 有着类似的执行模型。」

Keutzer 希望随着时间的推移,CPU 和 GPU 能够得到更好的集成,这两者间更强的一致性与同步性也随之能够实现。

KNL chip 的编程模型是传统的 x86 模型,所以,Hwu 认为,程序员们「需要通过 Intel C Compiler 编写代码来使得芯片变得可向量化,或是使用 Intel AVX 向量的本质库函数。」他补充道,GPU 的编程模型需要依托于一个核心的编程模型。

此外,X86 的内核对所以高速缓存的层次结构具有高速缓存的一致性,Hwu 说道,「但是,GPU 的第一层缓存并不清晰一致,它会伴随着一些减少的储存带宽。」然而,他补充道,「就深度学习的应用来说,高速缓存的一致性对大多数算法的第一层缓存并没有那么重要。」

未来十年,所有这些的通用性在于大的行业环境如何发展。Hwu 表示,他坚信摩尔定律能够在超过三代的时间内继续发挥作用,设计师和程序员也能够从几乎离散的 CPU 和 GPU 系统过渡到集成的设计上。

「如果摩尔定律停止运转,它也将显著地影响未来的这些系统,以及人们在深度学习和其他任务上使用硬件和软件的方式。」Hwu 指出,「但是,即使我们解决了硬件层面的问题,特定深度学习方面的任务仍需要大量的标签化数据。在某些层面,我们需要在标签化数据方面取得突破,从而让我们能够具备从事必要领域训练的能力,尤其是在自动驾驶领域。」

在未来几年,Sutskever 说道,机器学习将会广泛地应用到 GPU。「随着机器学习的方法不断提升,它们会被应用到远超今天使用范围的领域并影响到其他所有方面,从医疗保健、机器人到金融服务和用户体验。这些进步依托于更快 GPU 的发展,这也将会使机器学习具备研究的能力。」

Adds Catanzaro 说:GPU 是通往未来计算之门。深度学习令人兴奋是因为当你增加更多数据时,它可以规模化。在这一点上,我们会永不满足的追求更多的数据和计算资源来解决复杂问题。在拓展计算极限方面,GPU 技术是非常重要的一部分。


参考文献

Raina, R., Madhavan, A, and Ng. A.Y.
Large-scale Deep Unsupervised Learning using Graphics Processors, Proceedings of the 26thInternational Conference on Machine Learning, Montreal, Canada, 2009.http://www.machinelearning.org/archive/icml2009/papers/218.pdf

Wu, G., Greathouse, J.L., Lyashevsky, A., Jayasena, N., and Chiou, D.
GPGPU Performance and Power Estimation Using Machine Learning. Electrical and Computer Engineering, The University of Texas at Austin, 21st IEEE International Symposium on High Performance Architecture, 2015. http://hgpu.org/?p=13726

Coates, A., Huval, B., Wang, T., Wu, D.J., Ng, A.Y., and Catanzaro, B.
Deep learning with COTS HPC systems. Proceedings of the 30th International Conference on Machine Learning, Atlanta, Georgia, USA, 2013. JMLR: W&CP volume 28.http://cs.stanford.edu/~acoates/papers/CoatesHuvalWangWuNgCatanzaro_icml2013.pdf

Chen, X., Chang, L., Rodrigues, C.I., Lv, J., Wang, Z., and Hwu, W.
Adaptive Cache Management for Energy-Efficient GPU Computing, MICRO-47 Proceedings of the 47th Annual IEEE/ACM International Symposium on Microarchitecture, 343–355, IEEE Computer Society, 2014. http://dl.acm.org/citation.cfm?id=2742190

入门
暂无评论
暂无评论~
返回顶部