Google I/O是由Google举行的网络开发者年会,讨论的焦点是用Google和开放网络技术开发网络应用。这个年会自2008年开始举办,到今年已是举办的第9届了。html
在今年的年会上,Google主要发布了如下8种产品:智能助手Google Assistant,与Amazon Echo竞争的无线扬声器和语音命令设备Google Home,消息应用Allo,视频呼叫应用Duo,VR平台Daydream,独立应用程序的支持Android Wear 2.0,容许不安装而使用应用的Android Instant Apps,以及容许在Chromebook上使用Android应用Google Play on Chrome OS。算法
而这8中产品主要都集中在了软件领域。编程
在Google I/O 2016的主题演讲进入尾声时,Google的CEO皮采提到了一项他们这段时间在AI和机器学习上取得的成果,一款叫作Tensor Processing Unit(张量处理单元)的处理器,简称TPU。在大会上皮采只是介绍了这款TPU的一些性能指标,并在随后的博客中公布了一些使用场景,并无对这款处理器的架构以及内部的运做机制进行详细阐述,因此咱们也许须要从一些常见的处理器的结构出发,试图猜想与探究下这款用于机器学习的专属芯片到底有着怎样的一个面孔。缓存
首先咱们先来看看咱们最熟悉的中央处理器(Central Processing Unit),简称CPU。它是一种超大规模的集成芯片,并且是一种通用芯片,也就是说,它能够用它来作不少种类的事情。咱们平常使用的电脑使用的处理器基本上都是CPU,看个电影、听个音乐、跑个代码,都没啥问题。服务器
CPU主要包括运算器(ALU,Arithmetic and Logic Unit)和控制器(CU,Control Unit)两大部件。此外,还包括若干个寄存器和高速缓冲存储器及实现它们之间联系的数据、控制及状态的总线。从上面的叙述咱们能够看出,CPU主要包含运算逻辑器件、寄存器部件以及控制部件等。网络
从字面上咱们也很好理解,运算逻辑器件主要执行算术运算、移位等操做,以及地址运算和转换;寄存器件主要用于保存运算中产生的数据以及指令等;控制器件则是负责对指令译码,而且发出为完成每条指令所要执行的各个操做的控制信号。架构
咱们能够运用下面这张图来讲明一条指令在CPU中执行的大体过程:框架
CPU从程序计数器取到指令,经过指令总线将指令送至译码器,将转译后的指令交给时序发生器与操做控制器,而后运算器对数据进行计算,经过数据总线将数据存至数据缓存寄存器。iphone
咱们从CPU的结构以及执行过程能够看出,CPU遵循的是冯诺依曼架构,冯诺依曼的核心就是:存储程序,顺序执行。机器学习
从上面的描述咱们能够看出,CPU就像一个有条不紊的管家,咱们吩咐的事情老是一步一步来作。可是随着摩尔定律的推动以及人们对更大规模与更快处理速度的需求的增长,CPU好像执行起任务来就不那么使人满意了。因而人们就想,咱们可不能够把好多个处理器放在同一块芯片上,让他们一块儿来作事,这样效率是否是就会高不少,这是GPU就诞生了。
GPU全称为Graphics Processing Unit,中文为图形处理器,就如它的名字同样,GPU最初是用在我的电脑、工做站、游戏机和一些移动设备(如平板电脑、智能手机等)上运行绘图运算工做的微处理器。由于对于处理图像数据来讲,图像上的每个像素点都有被处理的须要,这是一个至关大的数据,因此对于运算加速的需求图像处理领域最为强烈,GPU也就应运而生。
经过CPU与GPU结构上的对比咱们能够看出,CPU功能模块不少,能适应复杂运算环境;GPU构成则相对简单,大部分晶体管主要用于构建控制电路(好比分支预测等)和Cache,只有少部分的晶体管来完成实际的运算工做。而GPU的控制相对简单,且对Cache的需求小,因此大部分晶体管能够组成各种专用电路、多条流水线,使得GPU的计算速度有了突破性的飞跃,拥有了更强大的处理浮点运算的能力。当前最顶级的CPU只有4核或者6核,模拟出8个或者12个处理线程来进行运算,可是普通级别的GPU就包含了成百上千个处理单元,高端的甚至更多,这对于多媒体计算中大量的重复处理过程有着天生的优点。
这就比如在画一幅画的时候CPU是用一支笔一笔一笔的来画,而GPU则是多支笔对不一样的位置同时进行描绘,那天然效率就是日新月异的。
虽然GPU是为了图像处理而生的,可是咱们经过前面的介绍能够发现,它在结构上并无专门为图像服务的部件,只是对CPU的结构进行了优化与调整,因此如今GPU不只能够在图像处理领域大显身手,它还被用来科学计算、密码破解、数值分析,海量数据处理(排序,Map-Reduce等),金融分析等须要大规模并行计算的领域。因此GPU也能够认为是一种较通用的芯片。
随着人们的计算需求愈来愈专业化,人们但愿有芯片能够更加符合咱们的专业需求,可是考虑到硬件产品一旦成型便不可再更改这个特色,人们便开始想,咱们可不能够生产一种芯片,让它硬件可编程。也就是说——
这一刻咱们须要一个比较适合对图像进行处理的硬件系统,下一刻咱们须要一个对科学计算比较适合的硬件系统,可是咱们又不但愿焊两块板子,这个时候FPGA便应运而生。
FPGA是Field Programmable Gate Array的简称,中文全称为场效可编程逻辑闸阵列,它是做为专用集成电路领域中的一种半定制电路而出现的,既解决了全定制电路的不足,又克服了原有可编程逻辑器件门电路数有限的缺点。
FPGA运用硬件描述语言(Verilog或VHDL)描述逻辑电路,能够利用逻辑综合和布局、布线工具软件,快速地烧录至FPGA上进行测试。人们能够根据须要,经过可编辑的链接,把FPGA内部的逻辑块链接起来。这就好像一个电路试验板被放在了一个芯片里。一个出厂后的成品FPGA的逻辑块和链接能够按照设计者的须要而改变,因此FPGA能够完成所须要的逻辑功能。
FPGA这种硬件可编程的特色使得其一经推出就受到了很大的欢迎,许多ASIC(专用集成电路)就被FPGA所取代。这里须要说明一下ASIC是什么。ASIC是指依产品需求不一样而定制化的特殊规格集成电路,由特定使用者要求和特定电子系统的须要而设计、制造。这里之因此特殊说明是由于咱们下面介绍的TPU也算是一种ASIC。
FPGA与ASIC芯片各有缺点,FPGA通常来讲比ASIC的速度要慢,并且没法完成更复杂的设计,而且会消耗更多的电能;而ASIC的生产成本很高,若是出货量较小,则采用ASIC在经济上不太实惠。可是若是某一种需求开始增大以后, ASIC的出货量开始增长,那么某一种专用集成电路的诞生也就是一种历史趋势了,我认为这也是Google生产Tensor processing unit的一个重要出发点。至此,TPU便登上历史舞台。
随着机器学习算法愈来愈多的应用在各个领域并表现出优越的性能,例如街景、邮件智能回复、声音搜索等,对于机器学习算法硬件上的支持也愈来愈成为一种须要。目前不少的机器学习以及图像处理算法大部分都跑在GPU与FPGA上面,可是经过上面的讲述咱们能够知道,这两种芯片都仍是一种通用性芯片,因此在效能与功耗上仍是不能更紧密的适配机器学习算法,并且Google一直坚信伟大的软件将在伟大的硬件的帮助下更加大放异彩,因此Google便在想,咱们可不能够作出一款专用机机器学习算法的专用芯片,TPU便诞生了。
从名字上咱们能够看出,TPU的灵感来源于Google开源深度学习框架TensorFlow,因此目前TPU仍是只在Google内部使用的一种芯片。
Google其实已经在它内部的数据中心跑TPU跑了一年多了,性能指标杠杠的,大概将硬件性能提高了7年的发展时间,约为摩尔定律的3代。对于性能来讲,限制处理器速度的最大两个因素是发热与逻辑门的延迟,其中发热是限制速度最主要的因素。如今的处理器大部分使用的是CMOS技术,每个时钟周期都会产生能量耗散,因此速度越快,热量就越大。下面是一张CPU时钟频率与能量消耗的关系,咱们能够看到,增加是指数性的。
从TPU的外观图咱们能够看出,其中间突出一块很大的金属片,这即是为了能够很好地对TPU高速运算是产生大量的热进行耗散。
TPU的高性能还来源于对于低运算精度的容忍,也就是说每一步操做TPU将会须要更少的晶体管。在晶体管总容量不变的状况下,咱们就能够单位时间在这些晶体管上运行更多的操做,这样咱们就能够以更快的速度经过使用更加复杂与强大的机器学习算法获得更加智能的结果。咱们在TPU的板子上看到了插条,因此目前Google使用TPU的方式是将载有TPU的板子插在数据中心机柜的硬盘驱动器插槽里来使用。
并且我以为TPU的高性能还来源于它数据的本地化。对于GPU,从存储器中取指令与数据将耗费大量的时间,可是机器学习大部分时间并不须要从全局缓存中取数据,因此在结构上设计的更加本地化也加速了TPU的运行速度。
(AlphaGo对战李世乭比赛中使用的载有TPU的服务器机架,不知道为何侧面贴的围棋图有种萌感。via:googleblog.com)
在Google数据中心的这一年来,TPU其实已经干了不少事情了,例如机器学习人工智能系统RankBrain,它是用来帮助Google处理搜索结果并为用户提供更加相关搜索结果的;还有街景Street View,用来提升地图与导航的准确性的;固然还有下围棋的计算机程序AlphaGo,其实这一点上也有个颇有趣的地方,咱们在描述AlphaGo的那篇Nature文章中看到,AlphaGo只是跑在CPU+GPUs上,文章中说AlphaGo的完整版本使用了40个搜索线程,跑在48块CPU和8块GPU上,AlphaGo的分布式版本则利用了更多的机器,40个搜索线程跑在1202个CPU和176块GPU上。这个配置是和樊麾比赛时使用的,因此当时李世乭看到AlphaGo与樊麾的对弈过程后对人机大战颇有信心。可是就在短短的几个月时间,Google就把运行AlphaGo的硬件平台换成了TPU,而后对战的局势就艰难了起来。
那么除了TPU能够更好更快地运行机器学习算法,Google发布它还有什么其余目的。我以为说的玄幻一些,Google也许在下一盘大棋。
Google说他们的目标是在工业界的机器学习方面起到先锋带头做用,并使得这种创新的力量惠及每一位用户,而且让用户更好地使用TensorFlow 和 Cloud Machine Learning。其实就像微软为它的HoloLens加强现实头显配备了全息处理单元(holographic processing unit,HPU),像TPU这样的专业硬件只是它远大征程的一小步,不只仅是想让本身在公共云领域超过市场老大Amazon Web Services (AWS)。随着时间的推移,Google会放出更多的机器学习API,如今Google已经推出了云机器学习平台服务和视觉API,咱们能够相信,作机器学习技术与市场的leader才是Google更大的目标。
Refer to: https://www.leiphone.com/news/201605/xAiOZEWgoTn7MxEx.html