效率之战:CPU、GPU、TPU还是FPGA ?
本帖最后由 lcytms 于 2016-9-21 10:14 编辑效率之战:CPU、GPU、TPU还是FPGA ?
信息来源:http://ee.ofweek.com/2016-05/ART-8500-2801-29099895.html
导读: 对于任何运算来说,更换新硬件无非是为了两个目的:更快的速度和更低的能耗。而深度学习这个看起来玄乎的词语,究其本质也不过是大量的运算。我们都知道那句老话:万能工具的效率永远比不上专用工具。
在目前最为火热的深度学习&人工智能这个革命性战场上,究竟谁将最后胜出? CPU、GPU、TPU还是FPGA ?本文将结合谷歌的最新动作——TPU的发布,带您巡礼这场轰轰烈烈的效率之战。
本帖最后由 lcytms 于 2016-9-21 10:20 编辑
深度学习原理(以人脸识别为例)
学习:神经网络用百万计实例样本训练自己,开始识别出脸部(如图),直到神经网络能够从一群人或杂乱的风景中识别出个别人的脸部。
识别:将面部输入神经网络,逐层分析,知道神经网络正确识别出是谁的脸。
运算流程:输入层 →隐层(包含多层,逐层识别出更复杂的特征) → 输出层。 谷歌TPU登场亮相
谷歌前些天发布了专为其深度学习算法Tensor Flow设计的专用集成芯片,命名为张量处理单元(Tensor Processing Unit:TPU),我们都知道,相对于谷歌的软件产品来说,它自行设计的硬件产品的登场往往没有那么高调,偶尔会以雷声大雨点小的结局收尾。
但这次的新硬件涉及的领域是谷歌极为擅长和领先的深度学习。结合近期谷歌和各大科技巨头在AI方面的动向,不难猜到这块芯片对于谷歌和AI开发者来说意义重大,并且会对产业起到深远的影响。
但谷歌为什么要在通用硬件性能已经十分强大的现在仍然会为了深度学习算法专门开发一款硬件,而这块芯片对其他巨头来说又意味着什么,解释起来就不是一件那么容易的事了。
本帖最后由 lcytms 于 2016-9-21 10:54 编辑
更换新硬件的理由
对于任何运算来说,更换新硬件无非是为了两个目的:更快的速度和更低的能耗。而深度学习这个看起来玄乎的词语,究其本质也不过是大量的运算。
我们都知道那句老话:万能工具的效率永远比不上专用工具。无论是CPU、GPU还是FPGA,其属性都算是一种通用工具。因为它们都可以应付许多不同的任务。
而专用的TPU自然从道理上来说就应该会比前面几种硬件的效率都要高。这里的效率高,既是指速度更快,也是指能耗会更低。
但我们不能光讲道理,也要摆出一些数据。
本帖最后由 lcytms 于 2016-9-21 10:53 编辑
具体案例:
以在深度神经网络(DNN)上进行的图像识别为例,网络的整个结构大致是这样的:(如下图)
图中除输入层是用来将图像的特征提取为函数、输出层用来输出结果外,其他的隐层都是用来识别、分析图像的特征的。
当一幅图被输入时,第一层隐层会首先对其进行逐像素的分析。此时的分析会首先提取出图像的一些大致特征,如一些粗略的线条、色块等。如果输入的是一张人脸的图像,则首先获得的会是一些倾斜的颜色变换。
第一层的节点会根据自己对所得信号的分析结果决定是否要向下一层输出信号。而所谓的分析过程,从数学上来看就是每个隐层中的节点通过特定的函数来处理相邻节点传来的带权重值的数据。
并决定是否向下一层输出结果,通常每一层分析完成后便有些节点不会再向下一层输出数据,而当下一层接收到上一层的数据的时候,便能在此基础上识别出一些更复杂的特征,如眼睛、嘴巴和鼻子等,逐次增加辨识度之后。
在最高一层,算法会完成对面部所有特征的识别,并在输出层给出一个结果判断。基于不同的应用,这个结果可能有不同的表现。比如分辨出这是谁的脸。
力不从心的CPU
不难想象,由于每一层分析的时候都要对极大量的数据进行运算,因此对处理器的计算性能要求极高。这时CPU的短板就明显的体现出来了,在多年的演化中,CPU依据其定位需要不断强化了进行逻辑运算(If else之类)的能力。
相对的却没有提高多少纯粹的计算能力。因此CPU在面对如此大量的计算的时候难免会感到吃力。很自然的,人们就想到用GPU和FPGA去计算了。 霸气的FPGA,25倍,秒杀CPU
实际上,Xilinx曾经表示在特定的FPGA开发环境下深度学习的能效比会达到CPU/GPU架构的25倍,不是一倍两倍, 是25倍!
不甘示弱的GPU
实际的计算能力除了和硬件的计算速度有关,也同硬件能支持的指令有关。我们知道将某些较高阶的运算分解成低阶运算时会导致计算的效率下降。但如果硬件本身就支持这种高阶运算,就无需再将其分解了。可以节省很多时间和资源。
FPGA和GPU内都有大量的计算单元,因此它们的计算能力都很强。在进行神经网络运算的时候速度会比CPU快很多,但两者之间仍存在一些差别。GPU出厂后由于架构固定硬件原生支持的指令其实就固定了。
如果神经网络运算中有GPU不支持的指令,比如,如果一个GPU只支持加减乘除,而我们的算法需要其进行矩阵向量乘法或者卷积这样的运算,GPU就无法直接实现,就只能通过软件模拟的方法如用加法和乘法运算的循环来实现,速度会比编程后的FPGA慢一些。
而对于一块FPGA来说,如果FPGA没有标准的“卷积”指令,开发者可以在FPGA的硬件电路里“现场编程”出来。相当于通过改变FPGA的硬件结构让FPGA可以原生支持卷积运算,因此效率会比GPU更高。
本帖最后由 lcytms 于 2016-9-21 11:49 编辑
什么是TPU与深度学习语言Tensor Flow ?
其实讲到这里,我们已经比较接近谷歌开发TPU的原因了。TPU是一种ASIC,这是一种与FPGA类似,但不存在可定制性的专用芯片,如同谷歌描述的一样,是专为它的深度学习语言Tensor Flow开发的一种芯片。
因为TPU是专为Tensor Flow所准备,因此谷歌也不需要它拥有任何可定制性了,只要能完美支持Tensor Flow需要的所有指令即可。而同时,TPU运行Tensor Flow的效率无疑会是所有设备中最高的。这就是谷歌开发TPU的最显而易见的目的:追求极致的效率。 业界怎么看?
目前有许多厂商已经在AI领域投入了大量的精力并且显示出一些野心,在TPU发布之前,这个领域内的大多数厂商都在同时利用FPGA和GPU来改进训练自己的神经网络算法。
页:
[1]
2