Google于2016年推出了Tensor处理单元或TPU。与GPU不同,TPU是经过定制设计的,用于处理神经网络训练中的矩阵乘法等运算。可以两种形式访问Google TPU:云TPU和边缘TPU。可以从Google Colab笔记本访问Cloud TPU,该笔记本为用户提供位于Google数据中心的TPU盒。而Edge TPU是可用于构建特定应用程序的定制开发工具包。
TPU的关键组件
在进入正常工作的TPU之前,这里有一些与之相关的词汇:
张量
张量是多维数组或矩阵。 张量是基本单位,可以以行和列格式保存数据点,例如神经网络中节点的权重。基本数学运算在张量上执行,包括加法,逐元素乘法和矩阵乘法。
浮法
FLOP(每秒浮点运算)是计算运算性能的度量单位。 对于Google TPU,自定义浮点格式称为“脑浮点格式”,简称为“ bfloat16”。将bfloat16小心地放置在心脏收缩阵列中,以加速神经网络训练。FLOP的范围越大,处理能力就越高。
脉动阵列
通过CMU HT Kung
脉动阵列是处理器网络,负责执行计算并在系统中传递结果。 如上所示,它包含大量以阵列形式排列的处理元件(PE)。这些阵列具有高度的并行性,并有利于并行计算。
TPU如何工作
通过Google Cloud文档进行数学运算
Tensor处理单元(TPU)是专门为机器学习而构建的定制ASIC,并且是为TensorFlow量身定制的,它可以以很高的速度处理神经网络的大量乘法和加法运算,同时减少了对过多功率和空间的使用。
TPU执行3个主要步骤:
1.首先,将参数从内存加载到乘法器和加法器矩阵中。
2.然后,从内存中加载数据。
3.每次乘法运算后,结果都将传递到下一个乘法器,同时求和(点积)。可以在上面的动画中看到。然后给出输出,作为数据和参数之间所有乘法结果的总和。
典型的云TPU具有两个大小为128 x 128的脉动阵列,在单个处理器中聚集32,768个ALU(算术逻辑单元),用于16位浮点值。 成千上万的乘法器和加法器直接相互连接,以形成一个大型的运算符物理矩阵,该矩阵构成了如上所述的脉动阵列架构。
TPU允许芯片更容忍降低的计算精度,这意味着每次操作需要更少的晶体管。由于此功能,单个芯片每秒可以处理相对更多的操作。
由于TPU是为处理矩阵乘法和加速训练等操作而定制的,因此TPU可能不适合处理其他类型的工作负载。
云TPU的局限性:
1.基于非矩阵乘法的工作负载不太可能在TPU上表现良好
2.如果工作负载需要高精度算术,那么TPU不是最佳选择
3.包含以C ++编写的自定义TensorFlow操作的神经网络工作负载不适合
应用案例
TPU在著名的DeepMind的AlphaGo中使用,该算法被用来击败世界上最好的围棋选手Lee Sedol。它也用在AlphaZero系统中,该系统产生国际象棋,将棋和围棋游戏程序。Google还使用了TPU为其街景服务提供文字处理服务,并且能够在不到五天的时间内找到街景数据库中的所有文字。就Google Photos而言,现在TPU可以每天处理超过1亿张照片。最重要的是,TPU也被用于Google搜索结果背后的大脑-RankBrain。