
长期关心人工智能与深度学习的技术宅们,不可能未曾听闻Google为TensorFlow机器学习框架量身订做,让AlphaGo在人机围棋大战中打败李世石的人工智能芯片TPU(Tensor Processing Unit)。在不久之前的Hot Chips 29,Google通过论文介绍第一世代TPU的技术全貌与第二代的概况。
为什么非TPU不可?
过去提升性能的诸多手段,如一次处理更多的数据、指令管线化、同时执行更多的指令、更高的频率等,在近40年来,让处理器变快了100万倍。

但包含CISC到RISC的指令集革新,这些方法现在都已到瓶颈了。

鉴于晶体管和功耗的限制,想要突破就不得不进入专用处理器的时代。
专注于“推论”的第一世代TPU
人工智能应用可大略区分成两个领域:“训练/学习”和“推论/预测”,在成长(Development)阶段,经过“训练”(Training)的类神经网络,“学习”(Learning)如何执行工作,接着进入生产(Production)阶段,类神经网络会被应用在“推论”(Inference)上,即对数据进行分类并“预测”(Prediction)出结果。

Google初代TPU仅能应用于推论(其实应该也可以用来做训练学习,可能考虑到运算精度的问题),到了第二代TPU才能够兼备训练类神经网络。Google在Hot Chips 29的主题演讲有公开部分第二代TPU的资料,让兼具HBM记忆体与浮点运算能力的TPU,又变得更像GPU。
有别于多数“训练”平台以GPU作为运算底层,而不得不使用浮点运算工作,Google TPU则是整数运算芯片,以达成更快的速度、更少的功耗,与更小的芯片面积。后来NVidia与AMD的新型GPU也都扩增整数运算支援性,特别是8位元16位元短整数。
Google TPU的技术精髓:古老的收缩阵列(Systolic Array)
Google打造TPU,会面对两个主要挑战:
低成本:架构需要尽其所能的简单,不仅要能降低成本,更要缩短产品开发时间,尽快部署到Google数据中心。
高性能:尤其要突破传统电脑的“冯·诺依曼瓶颈”(von Neumann bottleneck):记忆体跟不上运算。考量到第一个成本因素,像GPU如此昂贵的记忆体子系统,是压根儿完全不考虑的选项。换言之,须消耗较少的记忆体带宽,却能实现更高的运算吞吐量。
所以让“运算多跑一会儿”的收缩阵列(或称为收缩管线,Systolic Pipeline),就在相隔30余年之后,变为Google初代人工智能芯片的灵魂。
其概念也很简单,既然运算会反覆存取记忆体浪费时间,为何不让数据经过大量相同的处理单元(Processing Element,PE)?举个例子,我们想要做连续加法运算,要进行6次1,如其反覆存取记忆体6次,不如6个1串在一起。

但收缩阵列的限制也很明显:只适用于特定的运算,缺乏灵活性与泛用性。但恰好普及于特征识别的卷积神经网络(Convolutional Neural Networks,CNN),就是非常适合的特定应用,在Google TPU内转化为一连串的8位元整数乘积运算,频率仅700MHz,理论最高性能就92T,推论效率高达GPU的“10倍”。

TPU内的256×256“Matrix”部分就是很标准的收缩阵列。
在收缩阵列内,“用来决定输入数据重要性”的“权重”(Weight)由上而下流动,并且“替类神经网络加入非线性因素,以解决更复杂问题”的“激活值”(Activation)由左向右传递,如此简单的结构,就足以同时达成指令流与数据流的管线化,并减轻记忆体子系统的负担。当然,天底下没有白吃的午餐,简单的硬件意味着复杂的软件,但这对Google来说绝对不是问题。

Google利用自己强大的软件优势
Google在一台服务器安装4张TPU运算卡。

与Intel 18核Haswell和NVidia K80规格相比较,无论晶粒面积和耗电量都少了一大截,而初代TPU还是比较落后的28nm制程。

Google是依据以下组态,部署并比较同时期CPU、GPU与自家TPU的差异性。

经过实验证实,Google TPU享有数十倍于同期CPU与GPU的性能功耗比。
更重要的是,此计划从概念、研发、芯片Tape Out、量产,一路到上线部署,仅仅只花了“15个月”(反观动不动就好几年的x86微架构),做到完美的Time To Market,世界上恐怕没有其他企业,能比Google能透彻理解数据中心使用深度类神经网络进行推论的需求,采用简单硬件设计,充分发挥的软件能力功不可没。

像GPU的第二代TPU
Google第一代TPU只能做推论,所以就有可以做深度学习的第二代。我们就来瞧瞧乍看之下与GPU“殊途同归”的第二代TPU,有什么有趣的地方。

机器学习究竟需要何种运算精度,一直是没有标准答案的问题,Google基于自身的需求,让第二代TPU具备32位元单精度浮点运算的能力。原先第一代TPU的256×256 Systolic Matrix,演化成两个128×128的运算核心(但牺牲掉部分精确度),并新增泛用性较高的纯量运算单元。
此外,运算精度激增也加重记忆体带宽需求,两个运算核心分别加挂8GB HBM,提供较前代多出20倍的600GB/s理论带宽,让第二代TPU更近似新型GPU。因HBM 采用多芯片堆叠封装,更能精简电路板的设计与面积,提高布署密度。
至于第二代TPU是否保留大型化的芯片内(on-chip)记忆体,如第一代多达24MB用来存放激活值的缓冲区,与4MB用于暂存Matrix计算结果,Google尚未公布细节,就不得而知了。

总之,第二代TPU在Google数据中心的布署就长这样,64个TPU Pod(四颗TPU)即可提供11.5P的浮点运算能量。

第二代TPU即将上线Google Cloud,而且宣称使用TensorFlow机器学习框架,你也不需要大改代码,就可享受TPU的惊人性能。

在2013年底,Google爆炸性公开其“规划部署已达3年”、开大规模商业化导入软件定义网络(SDN)之先河的B4数据中心广域网络,到现在不知不觉中,在众多新创企业与学术机关四处宣传其研发成果的当下,也一路遥遥领先,早已让自家打造的人工智能芯片迈进到第二代并投入商业运转,让人不得不佩服云端服务霸主的研发能量与执行效率。微软、苹果、IBM、Amazon等竞争对手,会不会加速跟进?我们可以拭目以待,但唯一可以确定的是,以后销售“人工智能芯片”可能不会是多好做的生意。
来源:台湾水电工协会-非在职工友
推荐阅读
关注公众号芯华舍 ,后台回复关键词看更多内容
回复先进半导体,看先进半导体器件全集
回复伯克利 ,看伯克利大学半导体工艺系列全集
回复射频器件 ,看应用于高功率和高速RF的半导体电子器件全集

戳下面的原文阅读,更有料!

