2018-07-04 10:35 数码Bear
【未来科技范 报道】7月4日消息,在用搜索引擎和安卓系统重新定义了现代互联网之后,谷歌又走在了下一代计算机研究和开发浪潮的最前沿:人工智能。许多人认为人工智能和神经网络计算机是计算机的下一步,通过使用新的用例和更快的计算来解决目前无法解决的问题。这家搜索巨头现在自称是“人工智能优先”的公司,并且在很多方面都引领着这项技术的应用。
神经网络算法和机器学习技术已经成为了谷歌很多服务的核心。谷歌在Gmail中过滤垃圾邮件、优化目标广告、并且在用户与Google Assistant交谈的时候分析声音。在智能手机的内部,就像谷歌眼镜和三星Bixby这样的想法都展示了人工智能的视觉处理能力,就连Spotify和Netflix这样的公司都在使用谷歌的云服务来为用户量身定制内容。
谷歌的云平台正在不断努力,利用这个日益流行的计算领域。但是,这个新领域需要新的硬件才能更高效的运行,而且谷歌自己在硬件开发上也投入了大量的资金,并且将其命名为Cloud TPU。这种定制的硬件被塞进了谷歌的服务器,并且已经开始为当前和扩展后的人工智能生态系统提供了动力。
那么它是如何运作的呢?
TPU vs CPU:寻找更高的效率
今年早些时候,谷歌在I/O开发者大会上推出了第二代TPU,为更强的集群提供了更高的性能和更好的扩展能力。TPU是一种特定于应用程序的集成电路,它是专门为特定用例设计的自定义集成电路,而不是像CPU那样一般的处理单元。该单元的设计目的是处理常见的机器学习和神经网络计算,用于训练和推理,特别是矩阵相乘、点积和量子化的变换,通常只有8位的精度。
虽然这些计算同样可以在CPU上完成,有时甚至在GPU上效率更高,但是在夸操作类型的扩展时,这些架构在性能和能源效率方面非常有限。例如IEEE 754 8位证书相乘优化设计可以比16位浮点优化设计性能高出5.5倍,具有6倍的预期效率。它们在能量方面的效率缩小了27倍,IEEE 754是用于所有现代CPU浮点计算的技术标准。
此外,许多神经网络用例需要从用户的角度来进行低延迟和几乎瞬时的处理。这支持特定任务的专用硬件,而不是试图将典型的高延迟图形架构适用于新的用例。而访问外部RAM内存延迟也非常昂贵。
在大型数据中心,用CPU或GPU执行神经网络功能时,电力和区域的低效率可能导致出现巨大的成本支出。不仅仅是在硅和设备上,而且还会长时间浪费能源。谷歌知道,如果机器学习能以一种有意义的方式发挥作用,它需要的硬件不仅能提高性能,而且还能提供比CPU和GPU更好的能源效率。
为了解决这一问题,谷歌着手专门设计了TPU,以提供比现有GPU更好的10本成本性能改进。最终的设计是一个可以附加到通用PCIe总线上的协同处理器。它可以与普通的CPU一起工作,可以通过它的指令和处理流量,以及通过设计成为一种附加组件来加速时间部署。结果在进行5个月的研发之后,这项设计就被使用在了谷歌的数据中心。
TPU
今年早些时候,谷歌发布了一个全面的对比,将TPU性能与效率与Haswell架构CPU和NVIDIA Tesla K80 GPU进行对比,让我们更加深入的了解了处理器的设计。
谷歌TPU的核心是一个矩阵相乘单元,该单元包含了65538八位倍增器硬件单元,专门用于计算两个数字的乘积,并将其添加到一个累加器中。当使用浮点数进行操作的时候,这被称作FMA。也许你还记得,这是ARM为优化其最新的Cortex A75和A55CPU以及Mali-G72努力的结果。
与CPU或GPU不同,在将数据发送到算数逻辑单元时,每个操作都可以访问多个寄存器,这个Mac实现了一种收缩设计,它可以读取一次寄存器,并在长时间的计算中重新使用该价值。在TPU中,这是可能的结果,因为它的简化设计可以让我们看到在相邻的连接中,ALU执行乘法和加法,而不需要任何内存访问。折现值了设计在可能的功率上表现,但是极大的提高了它们的性能和效率。
在数字方面,谷歌的TPU可以除了65536个多数据,并且为每个周期添加8位证书。考虑到TPU运行在700MHz的情况下可以计算65536×7亿次或者在矩阵单元中每秒92兆(万亿次操作)。谷歌表示,它的第二代TPU可以提供最多180兆浮点性能。与典型的标量RISC处理器相比,它的并行吞吐量要高得多,后者通常只在一二时钟周期或更多的指令下传递一个操作。
矩阵相乘单元的16位产品在矩阵单元下的32位累积器收集。还有一个24MB的SRAM的统一缓冲区,它作为寄存器工作。控制处理器的指令通过PCIe总线从一个CPU发送到TPU。这些都是非常复杂的CISC类型指令,专门用来运行每个指令的复杂任务,例如大量的多添加计算。这些指令被传递到一个4阶段的管道中。TPU总共只有12条指令,其中最重要的5条是简单的读写结果。
总体来说,谷歌的TPU更现实浮点协处理器的原始想法,而并非GPU。它是一个让人意外的精简版硬件,只包含了一个主要的处理元素和一个简单的简化控制方案。没有缓存、分支预测器、多处理连接,或者将一个普通CPU中找到的其他微架构特性,这也有助于在硅和电力消耗上节省大量的能源。
性能方面,谷歌表示自己的TPU设计通常比CPU能提供更好的性能与瓦特比,比在GPU上运行的性能高出29倍。这种芯片设计不仅能提高能源效率,而且还能提供更好的性能。在六种常见的参考神经网络工作负载中,TPU在所有测试中都提供了显著的性能优势,通常比GPU快20倍或更多,比CPU处理快了71倍。当然,这些结果会根据CPU和GPU的类型而有所不同,但都经过了谷歌的测试。谷歌还专门对高端的英特尔Haswell e5-2699 v3和NVIDIA K80进行了测试,更深入的了解硬件特性。
与英特尔合作的边缘计算
谷歌在硬件上的努力让它在云计算领域有了一个良好的开始,但并不是所有的人工智能技术都能很好地将数据传输到如此遥远的距离。一些应用实例,比如自动驾驶汽车,需要几乎即时计算,因此不能依赖于互联网上的高延迟数据传输,即使云计算的计算能力非常快。相反这些类型的应用程序需要在设备上本地完成,同样的道理适用于许多智能手机应用程序,比如摄像头对图像的处理。
在Pixel 2智能手机上,谷歌悄悄的进行了第一次尝试,将神经网络功能引入专门的硬件,以适应低功耗的移动版本:Pixel Visual Core。有趣的是,谷歌与英特尔合作开发了这枚芯片,这表明它并不完全是一种谷歌内部完成的设计。我们不知道这种伙伴关系双方都付出了什么,但可能只是制造与更多的连接性有关。
最近一段年时间,英特尔收购了多家人工智能公司,比如2016年的Nervana Systems、去年9月的Movidius、今年3月的Mobile。我们也知道英特尔有自己的神经网络处理器,位于它的神经网络之下。这一产品是英特尔收购Nervana公司的结果。我们对这种处理器不太了解,但它是为服务器设计的,使用一种称为Flexpoint的低精度数字格式,,并且以每秒8兆的速度进行内存访问。并且将与谷歌的TPU竞争。
第一眼看上去,Pixel的硬件与谷歌的硬件设计完全不同,考虑到不同的预算,这也并不让人感到意外。尽管我们对谷Coud TPU Visual Core架构并不了解,但我们可以发现一些类似的功能。设计中的每个图像处理单元都提供512个算术逻辑单元,总共有4096个。
同样,这意味着一个高度并行的设计,能够同时处理大量的数据,即使是经过缩减的设计,也可以每秒执行3万亿次操作。很明显,这个芯片的数字单元比谷歌的TPU要少得多,但毫无疑问它的不同之处在于主要是为了增强图像的功能而设计,不是谷歌在云计算中运行的各种神经网络。然而它是一种类似的、高度并行的设计,能够执行特定的操作。
谷歌未来是否坚持这一设计,并继续与英特尔合作,以获得边缘计算能力,还是依赖于其他公司开发的硬件,还有待观察。
总结
也许谷歌最出名的产品是它的软件,但是当需要为新一代的人工智能计算提供动力的时候,谷歌同样在硬件开发和部署方面颇有心得。
谷歌定制的TPU提供了大型云平台计算能力,能够部署机器学习技术,提供必要的能源效率。相对于通用的CPU和GPU硬件,它还为特定的硬件带来了显著的性能提升。我们在移动领域也看到了类似的趋势,集成芯片厂商正越来越多的开始选择专用的DSP硬件,用来高效的执行密集型算法。谷歌也将成为这个市场的主要硬件厂商。
我们还在等待谷歌的第一代人工智能智能手机硬件出现,包括Pxiel Visual Core在内。这枚芯片很快就会被用于更快的HDR处理器,并且毫无疑问将在未来人工智能测试和产品中扮演重要的角色,比如现在的Pixel 2智能手机。目前,谷歌正引领者云平台的硬件软件支持。值得注意的是,英特尔、微软、Facebook、亚马逊和其它竞争对手都已经开始在这一领域发展。
随着机器学习和神经网络技术在云计算和智能手机等设备上的应用越来越多,谷歌早期在硬件方面的努力已经使自己成为了下一代计算机领域的领导者。