11月28日消息,据AndroidAuthority报道,在利用搜索和Android帮助定义了现代互联网时代之后,谷歌又走在计算研究和开发的下一波浪潮——人工智能(AI)的前沿。许多人认为AI和神经网络计算机是计算的下个阶段,它们将会发展出新的用途,并用更快的计算速度解决目前无法解决的问题。自称为“AI优先(AI first)”公司的谷歌,正以多种方式引领着这些新技术的应用。
神经网络算法和机器学习已经成为谷歌诸多服务的核心。它们过滤Gmail的垃圾邮件,优化目标广告;当你与谷歌智能助理Google Assistant或智能音箱Google Home交谈时,它们会分析你的声音;在智能手机内部,像Google Lens和三星Bixby类似的应用凸显了AI视觉处理的力量;甚至像Spotify和Netflix这样的公司也在使用谷歌的云服务器,来为用户量身定制内容。
谷歌的“云平台”(Cloud Platform)是其(以及第三方)努力的核心,它们希望更好地利用这个日益流行的计算领域。然而,这个新领域需要新的硬件支持才能高效运行,谷歌已经投入巨资研究自己的处理硬件,它将其称为张量处理单元(TPU)。这种自定义硬件被打包到谷歌的服务器上,已经为当前和扩展的AI生态系统提供动力。但它到底是如何工作的呢?
1.TPU VS CPU——搜索效率更高
在今年早些时候的I/O开发者大会上,谷歌发布了第二代TPU,为更大芯片集群提供更高的性能和更好的扩展。TPU是个应用集成电路,它是专门为特定用例设计的定制硅芯片,而不是像CPU那样的普通处理单元。TPU被设计用于处理普通机器学习和神经网络计算的训练和推理任务。具体来说,就是矩阵乘法(matrix multiply)、点积(dot product)和量化变换(quantization transform),通常精度为8位。
虽然这些计算也可以在CPU上进行,有时甚至在GPU上进行计算更高效,但在跨操作类型的扩展时,这些架构在性能和能源效率方面都会受到限制。例如,与16位浮点优化设计相比,IEEE 754 8位整数乘法优化设计能源效率会提高5.5倍,而面积效率会增加6倍。与32位浮点优化设计相比,IEEE 754 8位整数乘法优化设计的能量效率提高18.5倍,面积效率会提高27倍。IEEE 754正成为所有使用浮点计算的现代CPU技术标准。
此外,从用户角度来看,许多神经网络用例需要低延迟甚至是即时处理。这有利于使用专用硬件执行特定任务,而不是试图将通常较高的延迟图形架构与新的用例结合起来。访问外部RAM的内存延迟也可能带来高昂的代价。在大型数据中心,当在CPU或GPU上执行神经网络功能时,电源和面积效率低下会导致巨大的成本开支。不仅在硅和设备方面开支激增,能源账单在很长一段时间内都会居高不下。谷歌知道,如果机器学习能够以一种有意义的方式取得成功,它需要的硬件不仅性能要高,而且还能提供比领先CPU和GPU更高的能源效率。
为了解决这个问题,谷歌开始设计它的TPU,以提供比现成GPU性价比高10倍的改进。最终的设计是个协同处理器,可以连接到普通的PCIe总线上,允许它与普通CPU共同工作,并通过它下达指令和处理流量,同时通过设计一个附加组件来加速部署时间。因此,这种设计在概念提出15个月后,就开始在谷歌的数据中心部署和运行。
2.TPU深析
今年早些时候,谷歌发布报告,将其TPU与英特尔HaswellCPU和Nvidia的Tesla K80 GPU在性能和效率上进行全面比较,让我们更深入地了解其处理器的设计。谷歌TPU的核心是矩阵乘法单元(Matrix Multiply Unit)。该单元包含65538个8位的乘数累加器(MAC),即专门设计用于计算点积的硬件单元,并将其添加到累加器中。当使用浮点数计算时,它被称为熔加运算(Fused Multiply-Add,简称FMA)。这是ARM为优化其最新的Cortex-A75和A55 CPU以及Mali-G72 GPU而做出的努力。
与CPU或GPU不同的是,当发送数据到算术逻辑单元(ALU)和从ALU发送数据时,它可以访问多个寄存器的每个操作,这个MAC实现了一个收缩设计,它每次读取一个寄存器上的操作,并在整个漫长的计算过程中重新使用这个值。这在TPU中是可能的,因为它的简化设计让我们看到ALU在adjoining ALU上执行乘法和添加固定模式,而不需要任何内存访问。这限制了设计的功能扩展,但极大地提高了它的性能和效率。
从数字上看,在每个循环中,谷歌的TPU可以处理8位整数的65536个乘数累加。鉴于TPU在700兆赫功率上运行,它可以计算65536×700000000 = 46×1012个乘数累加操作或92 TeraOps(每秒万亿次操作)的矩阵单元。谷歌宣称,它的第二代TPU可以传输高达180万亿次浮点运算。这比典型的标量RISC处理器的性能要高得多,后者通常需要多个指令传递一个操作。
矩阵乘法单元下的16位产品被收集在32位累加器的4 MiB中。还有一个24MB的SRAM作为统一缓冲区,充当寄存器。控制处理器的指令通过PCIe总线从一个CPU发送到TPU上。这些是复杂的CISC类型指令,以便运行复杂的任务,这些任务是每个指令,例如无数的乘数累加运算。这些指令通过一个4阶管道传递。对于TPU来说,总共只有12条指令,其中最重要的5条是简单地在内存中读取和写入结果和权重,并开始一个数据和权重的矩阵乘法/卷积。
总的来说,谷歌的TPU更像浮点协作处理器,而不是GPU。它是一个令人惊讶的流线型硬件,由一个主要的处理单元和一个小的简化控制方案组成。这里没有缓存、分支预测器、多处理互连,或者其他在普通CPU中可以找到的微架构特性。这有助于大大节省硅面积和能源消耗量。
在性能方面,谷歌表示,与CPU相比,其TPU设计的性能-功率比提高了83倍,比GPU运行性能高29倍。芯片设计不仅提高能源效率,而且能带来更高的性能。在六种常见的参考神经网络工作负载中,TPU在所有测试中都具有显著的性能优势,通常比GPU快20倍,或者比CPU快71倍。当然,这些结果会因CPU和GPU的测试种类不同而有差别,但是谷歌对高端英特尔Haswell E5-2699 v3和Nvidia K80进行了测试,以对其硬件加强了解。
3.与英特尔联手研究边缘计算
谷歌的硬件努力使它在云计算领域中有了一个重要的开端,但并不是所有AI应用都适合如此远距离地传输数据。有些应用几乎需要即时计算,例如无人驾驶汽车,因此不能依赖于互联网上更高延迟的数据传输,即使云端的计算能力非常快。相反,这些类型的应用需要在设备上完成,同样的应用也适用于许多智能手机应用,比如在RAW上处理图像数据。
在Pixel 2的基础上,谷歌首次尝试将神经网络功能引入专用的硬件中,以适应更低功率的移动形式因子——Pixel Visual Core。有趣的是,谷歌与英特尔联手推出了这种芯片,这表明它并非完全是谷歌内部设计的。我们不知道这种合作到底意味着什么,它可能只是与架构或与制造连接有关。
英特尔已经收购了多家AI硬件公司、包括Nervana Systems(2016年)、Movidius(2016年9月)以及Mobileye(2017年3月)。我们也知道,英特尔有自己的神经网络处理器,代号Lake Crest,它属于Nervana Systems。这是英特尔收购同名公司后推出的处理器,我们还不太了解它的细节,但它是为服务器设计的,使用一种名为Flexpoint的低精度数字格式,并且拥有每秒8万亿次的快速内存访问速度。它将与谷歌的TPU竞争。
尽管如此,英特尔和谷歌硬件的设计存在许多相似之处。具体来说,它们都采用多核心配置,使用PCIe和伴随控制器,管理CPU,并紧密集成到快速内存上。乍一看,Pixel的硬件看起来与谷歌的云设计有很大不同,考虑到不同的电力预算,这并不奇怪。虽然我们不像了解谷歌Cloud TPU那样了解Visual Core架构,但我们可以发现一些类似的功能。设计中的每个图像处理单元(IPU)提供512个算术逻辑单元,总共有4096个。
同样,这意味着高度并行化的设计能够同时处理大量数据,这样的设计可以每秒执行3万亿次操作。显然,Lake Crest芯片数量比谷歌TPU要少得多,而且毫无疑问,其他的不同之处在于它主要是为成像增强设计的,而不是在云端运行各种神经网络。然而,它们依然是类似的、高度并行的设计,只是具体操作不同。
谷歌是否坚持这一设计并继续与英特尔合作以获得未来边缘计算能力,或者依赖其他公司开发的硬件以获取回报,还有待观察。然而,可以肯定的是,谷歌在神经网络硬件方面的努力依然会继续。
总结
谷歌最出名的地方可能是它的软件,但当它为新一代AI计算提供动力时,谷歌同样加入到硬件开发和部署的行列。在大型云计算平台上大规模部署机器学习时,该公司的TPU可节省大量能源。它也为这些特定任务提供了比通用CPU和GPU硬件更高的性能。我们在移动领域也看到了类似的趋势,SoC制造越来越多地转向专用的DSP硬件,以便高效地运行这些数学密集型算法。谷歌也可以成为这个市场的主要硬件厂商。
我们还在等待,看谷歌为其第一代智能手机AI硬件(Pixel Visual Core)提供什么样的性能。该芯片很快将被转换为更快的HDR处理,它无疑将在该公司推出的更多AI测试和产品中扮演重要角色。目前,谷歌正利用Cloud TPU AI硬件和TensorFlow软件获得领先优势。值得注意的是,英特尔、微软、Facebook、亚马逊和其他公司都在争夺这个快速发展的市场。随着机器学习和神经网络越来越多应用在云端和像智能手机这样的边缘设备上,谷歌的早期硬件开发将使其成为下一代计算领域的领导者。