谷歌TPU芯片会威胁到FPGA在AI领域的地位吗

谷歌TPU芯片会威胁到FPGA在AI领域的地位吗,第1张

(文章来源:OFweek)

对于任何运算来说,更换新硬件无非是为了两个目的:更快的速度和更低的能耗。而深度学习这个看起来玄乎的词语,究其本质也不过是大量的运算。我们都知道那句老话:万能工具的效率永远比不上专用工具。无论是CPUGPU还是FPGA,其属性都算是一种通用工具。因为它们都可以应付许多不同的任务。而专用的TPU自然从道理上来说就应该会比前面几种硬件的效率都要高。这里的效率高,既是指速度更快,也是指能耗会更低。

但我们不能光讲道理,也要摆出一些数据。实际上,Xilinx曾经表示在特定的FPGA开发环境下深度学习的能效比会达到CPU/GPU架构的25倍,不是一倍两倍, 是25倍!同学们可以拿出纸和笔了,让我们举一个实际的例子来讲讲这种效率提升的原因:以在深度神经网络(DNN)上进行的图像识别为例子,网络的整个结构大致是这样的:

其中除输入层是用来将图像的特征提取为函数、输出层用来输出结果外,其他的隐层都是用来识别、分析图像的特征的。当一幅图被输入时,第一层隐层会首先对其进行逐像素的分析。此时的分析会首先提取出图像的一些大致特征,如一些粗略的线条、色块等。如果输入的是一张人脸的图像,则首先获得的会是一些倾斜的颜色变换。

第一层的节点会根据自己对所得信号的分析结果决定是否要向下一层输出信号。而所谓的分析过程,从数学上来看就是每个隐层中的节点通过特定的函数来处理相邻节点传来的带权重值的数据。并决定是否向下一层输出结果,通常每一层分析完成后便有些节点不会再向下一层输出数据,而当下一层接收到上一层的数据的时候,便能在此基础上识别出一些更复杂的特征,如眼睛、嘴巴和鼻子等,逐次增加辨识度之后,在最高一层,算法会完成对面部所有特征的识别,并在输出层给出一个结果判断。基于不同的应用,这个结果可能有不同的表现。比如分辨出这是谁的脸。

不难想象,由于每一层分析的时候都要对极大量的数据进行运算,因此对处理器的计算性能要求极高。这时CPU的短板就明显的体现出来了,在多年的演化中,CPU依据其定位需要不断强化了进行逻辑运算(If else之类)的能力。相对的却没有提高多少纯粹的计算能力。因此CPU在面对如此大量的计算的时候难免会感到吃力。很自然的,人们就想到用GPU和FPGA去计算了。

实际的计算能力除了和硬件的计算速度有关,也同硬件能支持的指令有关。我们知道将某些较高阶的运算分解成低阶运算时会导致计算的效率下降。但如果硬件本身就支持这种高阶运算,就无需再将其分解了。可以节省很多时间和资源。

FPGA和GPU内都有大量的计算单元,因此它们的计算能力都很强。在进行神经网络运算的时候速度会比CPU快很多,但两者之间仍存在一些差别。GPU出厂后由于架构固定硬件原生支持的指令其实就固定了。如果神经网络运算中有GPU不支持的指令。

比如,如果一个GPU只支持加减乘除,而我们的算法需要其进行矩阵向量乘法或者卷积这样的运算,GPU就无法直接实现,就只能通过软件模拟的方法如用加法和乘法运算的循环来实现,速度会比编程后的FPGA慢一些。而对于一块FPGA来说,如果FPGA没有标准的“卷积”指令,开发者可以在FPGA的硬件电路里“现场编程”出来。相当于通过改变FPGA的硬件结构让FPGA可以原生支持卷积运算,因此效率会比GPU更高。

其实讲到这里,我们已经比较接近谷歌开发TPU的原因了。TPU是一种ASIC,这是一种与FPGA类似,但不存在可定制性的专用芯片,如同谷歌描述的一样,是专为它的深度学习语言Tensor Flow开发的一种芯片。因为是专为Tensor Flow所准备,因此谷歌也不需要它拥有任何可定制性了,只要能完美支持Tensor Flow需要的所有指令即可。而同时,TPU运行Tensor Flow的效率无疑会是所有设备中最高的。这就是谷歌开发TPU的最显而易见的目的:追求极致的效率。
        (责任编辑:fqj)

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/2510921.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-05
下一篇 2022-08-05

发表评论

登录后才能评论

评论列表(0条)

保存