Google一直以来都走在人工智能开发浪潮的最前沿,目前引领着人工智能技术的应用。可以说,谷歌的核心技术就是AI的机器学习和神经网络。那么为什么Google是人工智能发展的主要动力?主要是由于谷歌投资了大量资金在云平台能够高效运作的硬件开发上。下面我们来详细分析Google在人工智能开发上做出的努力和贡献。
谷歌的云平台正在不断努力,利用这个日益流行的计算领域。但是,这个新领域需要新的硬件才能更高效的运行,而且谷歌自己在硬件开发上也投入了大量的资金,并且将其命名为Cloud TPU。那么它是如何运作的呢?谷歌在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性能与效率与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进行了测试,更深入的了解硬件特性。
谷歌在硬件上的努力让它在云计算领域有了一个良好的开始,但并不是所有的人工智能技术都能很好地将数据传输到如此遥远的距离。一些应用实例,比如自动驾驶汽车,需要几乎即时计算,因此不能依赖于互联网上的高延迟数据传输,即使云计算的计算能力非常快。相反这些类型的应用程序需要在设备上本地完成,同样的道理适用于许多智能手机应用程序,比如摄像头对图像的处理。
最近一段年时间,英特尔收购了多家人工智能公司,比如2016年的Nervana Systems、去年9月的Movidius、今年3月的Mobile。我们也知道英特尔有自己的神经网络处理器,位于它的神经网络之下。这一产品是英特尔收购Nervana公司的结果。我们对这种处理器不太了解,但它是为服务器设计的,使用一种称为Flexpoint的低精度数字格式,,并且以每秒8兆的速度进行内存访问。并且将与谷歌的TPU竞争。
第一眼看上去,Pixel的硬件与谷歌的硬件设计完全不同,考虑到不同的预算,这也并不让人感到意外。尽管我们对谷Coud TPU Visual Core架构并不了解,但我们可以发现一些类似的功能。设计中的每个图像处理单元都提供512个算术逻辑单元,总共有4096个。
同样,这意味着一个高度并行的设计,能够同时处理大量的数据,即使是经过缩减的设计,也可以每秒执行3万亿次操作。很明显,这个芯片的数字单元比谷歌的TPU要少得多,但毫无疑问它的不同之处在于主要是为了增强图像的功能而设计,不是谷歌在云计算中运行的各种神经网络。然而它是一种类似的、高度并行的设计,能够执行特定的操作。谷歌未来是否坚持这一设计,并继续与英特尔合作,以获得边缘计算能力,还是依赖于其他公司开发的硬件,还有待观察。
为什么Google是人工智能发展的主要动力?一方面是由于谷歌研发的TPU提供了大型云平台计算能力,另一方面是因为Google在人工智能的硬件开发领域也是同样成绩斐然。因此Google不愧为推动人工智能的发展的主要动力。