今天一早满眼看到的是谷歌的一篇TPU的文章,立马让我想起谷歌的深度学习框架tensorflow:深度学习的框架的三个基本要素,tensor,tensor操作和流程,因此tensor操作成为计算的基本形式。从CPU、GPU到TPU反映了当前计算任务的转移,也反映了深度神经网络学习的突出地位。
第二个感悟,谷歌在争取深度学习的标准,借机拓展它的云计算、芯片,必然在多个市场上挑起更为残酷的竞争!!!
文章来源:wired、google 翻译:黄玮博士 东南大学崇志宏转
在那时,Google只是在深度神经网络领域的声音识别上刚刚起步,深度神经网络的复杂数学算法系统只能在海量的数据上特殊的分析任务。近年来,由于这种机器学习的形式获得了飞速的发展,其应用超过了声音识别的范畴,覆盖到包括图像识别、机器翻译、网络搜索在内的更丰富功能,并层出不穷。在深度学习的帮助下,Google降低了25%的错误率。
Google没有从加倍修建数据中心的方向来改善自己的数据存储能力,而是开发了专门用来进行深度神经网络的计算机芯片,名叫TensorProcessing Unit, 缩写是TPU。“这样的解决方案更加有效率,”从事此项芯片开发的70个工程之的代表Norm Jouppi说道,实际上,TPU在TOPS/Watt测度上是标准处理器的30到80倍,使处理速度更加有效。
TensorProcessing Unit地址: https://www.wired.com/2016/05/googles-making-chips-now-time-intel-freak/
Google在去年5月公开了其定制化的处理器,但是只透露了有限的细节。现在,Jouppi和其他团队成员发表了一篇讲述此项目细节的论文,论文题目:数据中心的 TPU 性能分析(In-DatacenterPerformance Analysis of a Tensor Processing Unit),该论文解释了芯片如何工作和解决特定问题。Google目前只使用该芯片来执行神经网络的工作,例如用户对安卓手机输入命令的行为,该芯片没有用于训练神经网络。但Jouppi解释说尽管这样,芯片还是提高了公司存储数据的效率,使得公司不必再修建15个新的数据中心。
此项芯片的问世也大大改变了世界计算机处理器市场的格局,Google、Facebook、Microsoft和其他互联网巨头近年来纷纷进行深度神经网络的开发。中国的互联网巨头百度也在使用特定的芯片运行它的模型。不同的是,Google自己搭建了自己的数据构架,从服务器到网络,如今又向个人处理器推进一步。例如Amazon、Facebook、Microsoft,这些最大的芯片购买客户都会成为潜在客户,而芯片的巨型生产商Intel也将向这个方向迈进。
Jouppi的团队从2013年就开始从事这项TPU的工作,他提到公司正在考虑向FPGA,一种Microsoft使用的编程芯片进发。最终,团队决定开发ASIC,一种执行特殊任务的芯片,Jouppi透露说此项芯片会被Google用于特定的神经网络工作,它会比同类厂商生产的芯片快15-30倍。据说此芯片兼容于神经网络的很多工作,包括卷积神经网络、图像识别、声音识别等多种多样。这也是聚焦但是多样化的体现。
论文和技术实现
数据中心的 TPU 性能分析(In-Datacenter Performance Analysis of a Tensor Processing Unit)
摘要
论文评估了一款自 2015 年以来就被应用于数据中心的定制化 ASIC,亦即张量处理器(TPU),这款产品可用来加速神经网络(NN)的推理阶段。TPU 的中心是一个 65,536 的 8 位 MAC 矩阵乘法单元,可提供 92 万亿次运算/秒(TOPS)的速度和一个大的(28 MiB)的可用软件管理的片上内存。相对于 CPU 和 GPU 的随时间变化的优化方法(高速缓存、无序执行、多线程、多处理、预取……),这种 TPU 的确定性的执行模型(deterministic execution model)能更好地匹配我们的神经网络应用的 99% 的响应时间需求,因为 CPU 和 GPU 更多的是帮助对吞吐量(throughout)进行平均,而非确保延迟性能。这些特性的缺失有助于解释为什么尽管 TPU 有极大的 MAC 和大内存,但却相对小和低功耗。我们将 TPU 和服务器级的英特尔 Haswell CPU 与现在同样也会在数据中心使用的英伟达 K80 GPU 进行了比较。我们的负载是用高级的 TensorFlow 框架编写的,并是用了生产级的神经网络应用(多层感知器、卷积神经网络和 LSTM),这些应用占到了我们的数据中心的神经网络推理计算需求的 95%。TPU 大约 15-30 倍快于当前的 GPU 或者 CPU,速度/功率比(TOPS/Watt)大约高 30-80 倍。此外,如果在 TPU 中使用 GPU 的 GDDR5 内存,那么速度(TOPS)还会翻三倍,速度/功率比(TOPS/Watt)能达到 GPU 的 70 倍以及 CPU 的 200 倍。
6 种神经网络应用(每种神经网络类型各 2 种)占据了 TPU 负载的 95%。表中的列依次是各种神经网络、代码的行数、神经网络中层的类型和数量(FC 是全连接层、Conv 是卷积层,Vector 是向量层,Pool 是池化层)以及 TPU 在 2016 年 7 月的应用普及程度。RankBrain [Cla15] 使用了 DNN,谷歌神经机器翻译 [Wu16] 中用到了 LSTM,Inception 用到了 CNN,DeepMind AlphaGo [Sil16][Jou15] 也用到了 CNN。
TPU 各模块的框图。主要计算部分是右上方的黄色矩阵乘法单元。其输入是蓝色的「权重 FIFO」和蓝色的统一缓存(Unified Buffer(UB));输出是蓝色的累加器(Accumulators(Acc))。黄色的激活(Activation)单元在Acc中执行流向UB的非线性函数。
TPU 芯片布局图。阴影同上图。蓝色的数据缓存占芯片的 37%。黄色的计算是 30%。绿色的I/O 是 10%。红色的控制只有 2%。CPU 或 GPU 中的控制部分则要大很多(并且非常难以设计)。
矩阵乘法单元的 systolic 数据流。软件具有每次读取 256B 输入的错觉,同时它们会立即更新 256 个累加器 RAM 中其中每一个的某个位置。
谷歌 TPU 与英特尔 Haswell E5-2699 v3、英伟达Tesla K80 的性能对比。E5 有 18 个核,K80 有 13 个 SMX 处理器。目前已经测量了功率。低功率 TPU 比高功率 GPU 能够更好地匹配机架(rack)级密度。每个 TPU 的 8 GiB DRAM 是权重内存(Weight Memory)。这里没有使用 GPU Boost 模式。SECDEC 和非 Boost 模式把 K80 带宽从 240 降至 160。非 Boost 模式和单裸片 vs 双裸片性能把 K80 峰值 TOPS 从 8.7 降至 2.8(*TPU 压模小于等于半个 Haswell 压模大小)。