这些结果有一部份来自于使用DeepBench测试。DeepBench是使用32位浮点数学训练神经网络的开放来源基准。号称“中国Google”的百度于2016年9月发布DeepBench,并在去年6月进行了更新,使其涵盖推论工作以及使用16位数学运算。
DeepBench利用神经网络库测试不同硬件的基本运算效能(来源:Baidu)
百度硅谷人工智能实验室(Silicon Valley AI Lab)资深研究员Greg Daimos解释。在一些像矩阵乘法这样的底层作业中,具有专用硬件的芯片(例如Nvidia Volta GPU的张量核心)能够提供“数百TeraFlops (每秒1兆次浮点运算)…比前一代的5-10TFLOPS更快几个数量级。”
然而,他说:“在实际应用中所使用的一些底层作业并没有足够的(数据)区域性,让这些专用处理器充份发挥效能,所以我们必须为其适度地加速,或者改变算法。”
百度研究小组目前正探索两种方式使用新芯片获得更大回报。一方面,研究人员在其算法中开启控制功能,以便同时接收馈入数据,期望能提高10倍的资料平行性。
另一条途径是让所有的模型看起来更像一般用于成像应用的卷积神经网络(CNN)。Daimos说,CNN比一般用于文本或音频应用(app)等循序数据的递归神经网络(RNN)具有更多区域性。
GregDiamosBaiduwcap
研究人员在从文本产生音频的百度模型中,“以CNN层取代RNN层堆栈”,使得“运算密度提高了40倍”,从而带来了更好的新硬件利用率。他强调,“我们必须透过编写的所有应用程序来检视是否可以普遍使用这种方法,或只是将其用于语音合成。”
目前尚不清楚这两种方法的研究成果何时可用于生产系统。同时,Daimos也分享了硬件测试的其它观察结果。
编程、内存与灵活性
虽然百度取得将近90%的Nvidia Volta最佳利用率,但编程GPU并非易事。Diamos说,该芯片“有着成千上万个线程,你必须在一个问题上进行协调和同步……编写这样的程序代码并不容易,而当面对的是像张量核心这样的对象时就更困难了。”
的确,Diamos表示,“让这些任务变得更易于编程,正是我们面临的最大挑战……而其中最大的问题就出在内存。我们想要执行更大的神经网络,但内存比预期地更快耗尽,这并不是透过打造更好的处理器就能解决的问题。”
他补充说,该问题的一部份答案在于寻找能与新兴内存搭配作业的技术,例如许多最新加速器所使用的高带宽内存(HBM)芯片堆栈等。
在百度的测试中,英特尔(Intel)多核心x86处理器Xeon Phi的利用率甚至高于Nvidia Volta。然而,英特尔的芯片还没有任何张量专用核心,因此该芯片在神经网络作业上的性能不若Volta。
Volta配备640个Tensor核心,每秒提供超过100TFLOPS的深度学习效能(来源:Nvidia)
直接进行比较并不容易,因为不同的芯片通常使用不同的运算格式。例如,Xeon Phi采用定点数学,而Volta则混合使用16位和32位浮点运算。
Diamos说:“英特尔芯片的测试结果显示,对于一些CNN来说,定点数学运算没问题。然而Nvidia发布的结果显示在影像和语音应用上表现良好,所以我们取得了一些数据,但还需要进行更多研究。”
他称赞AMD最新的GPU及其新的机器学习开放软件是正确的发展方向,但指出他们也缺乏张量核心。他表示,对于英特尔Nirvana和Graphcore Colossus等芯片“没啥可分享的消息”,也许是因为百度可能还在测试其预先发布的样片。
拥有大量的矩阵乘法单元通常是一件好事。但是,Volta、Nervana和Colossus处理器则以充满矩阵乘法数组的芯片将其性能指针推进到或接近其工艺节点所能实现的极限。
他说:“最终你的收益会递减……让你不得不放弃灵活度,以便为更多不同的工作负载进行更精密的运算。因此,我们应该找到曲线的转折点,让芯片不仅在CNN上运作良好,在其它方面也表现出色。”
神经网络软件架构各执一端
除了底层数学之外,加速器还可能缺少优化,因为它们并不完全了解深度学习应用的所有范围。
当今用于设计神经网络的竞争软件架构各执一端,可能会让情况变得复杂。遗憾的是,跨不同架构建立标准规格的努力也是各自为政,Diamos指出他的团队注意到目前有11种开发中规格分别处于不同的完善阶段。
他说,由Facebook和微软(Microsoft)发起的开放神经网络交换格式(ONNX)“正朝着正确的方向发展,但仍缺乏一些像是如何表达控制流程和反向传播的特性。”
最近有20多家厂商(主要是半导体供应商)宣布了神经网络交换格式(Neural Network Exchange Format),他们认为该格式对芯片厂商来说更好。Diamos说:“要搞清这些格式中是否有些能成功实施可能还为时过早,但我们正踏上一条更好的发展道路,确实也需要其中某一种规格胜出。”
他补充说:“在2014年,我当时认为未来将会看到人工智能(AI)架构的融合,就像如今在绘图API中所看到的,但人们仍然在发明新的神经网络类型,有时还会创造新的原型,所以它可能会像编程语言的多样性一样不断地与时俱进。”
也就是说,Daimos仍然看好深度学习。在今年稍早时,他的团队发表研究指出,这一领域尚未成熟,预计接下来将会看到更多的突破。