深度揭秘:谷歌二代TPU有哪些新变化?

美女机器人 2020-03-02 08:39www.robotxin.com机器人女友

在2017年谷歌I/O大会上,二代TPU亮相,它比一代TPU更强大。到底TPU是什么?有什么新的变化?Nextplatform记者Nicole Hemsoth一个月前采访了谷歌著名硬件工程师Norman Jouppi,打听了一些内幕,他还收集了许多资料,对二代TPU深入分析。

让我们听听Nicole Hemsoth是怎样解释的

一个月前,我曾与谷歌著名硬件工程师Norman Jouppi交流过,讨论的重点是TPU(tensor processing unit),谷歌用TPU让深度学习推理加速,不过设备(第一代TPU)已经有点过时了。

在今年的I/O大会上,谷歌夺走了Volta GPU的风头,Volta GPU是Nvidia最近推出的,谷歌透露了二代TPU的细节,二代TPU系统板的运算速度达到180万亿次,相当惊人,它既可以训练,也可以推理,定制网络将TPU组合成“TPU Pods”,计算能力可以与世界前500强的超级计算机媲美,最高峰值速度达到11.5 petaflops(每秒千万亿次)。

Dean解释说“我们拥有一个才华横溢的ASIC设计团队,他们开发了第一代TPU,还有许多同类的人参与项目。与一代TPU相比,二代TPU的设计与整体系统更接近,它更小,因为我们只在一块芯片上推理。训练流程要求更高,因为我们既要从整体上思考底层设备,还要理解它们是如何与大型系统连接的,比如Pods。”

我们将会密切关注谷歌,深入了解定制网络架构,下面这些资料是我们从预先准备的高级简报中提炼出来的,它们与最新的TPU有关;我们还试图理解新TPU是如何组成机柜、堆叠在一起的,最终它们的性能达到超级计算机的水平。谷歌没有透露二代TPU芯片或者主板的规格,不过幸好有一张图片,我们可以由此向后进行数学推导。

有些人可能看过许多的超级计算机主板,对于他们来说,谷歌TPU2与Cray XT或者XC架构也许有点像,这点很有趣,只是互联的芯片似乎是焊接在主板中央的,连接外部世界的接口放在主板外部。TPU2共有4个TPU2单元,每一个的最大峰值吞吐量(Peak Throughput)约为180万亿次,这点我们在上文已经提到过。我们姑且假定它所使用的是16位半精度浮点。

主板的左侧和右侧各有4个连接接口,左侧还有2个接口。如果每一个TPU2板卡直接连接到闪存,那将是十分有趣的一件事,AMD未来即将推出的Vega Radeon Instinct GPU加速器就是这样设计的。左侧的2个接口可以直接连接到存储单元,或者向上连接到网络的更高层级,从而让TPU互联起来,形成更复杂的处理系统。

如果非要猜测,每一个TPU2单元应该有2个接口连接到外部世界,跨越机柜,左侧两个多出来的接口一个用来连接本地存储单元,一个作为机柜内部的互联节点。

下面就是TPU2主板“Pod”的样貌,谷歌说它们处理机器学习数据的整体能力达到11.5 petaflops(千万亿次)。

仔细观察就会发现,它们似乎是“Open Compute(开放计算)”机柜,或者说它的尺寸与Open Compute机柜差不多,可能稍宽一些。上面共有8行TPU单元,每组有4块TPU板卡,水平放置。这些机柜到底是全深度机柜还是一半深度,我们无法清楚知道。你可以看到TPU2机柜的计算节点从一侧伸出来,这一侧有6个接口,当中的2个接口向上连接到一个机框。

在TPU2 机框的最顶行,两个接口向上延伸,进入另一个机框,里面似乎没有安装TPU2单元。照猜测它是一个准系统(Bare bone)闪存机框,以很高的速度为TPU存储本地数据。不论怎样,主板至少有32个TPU2,也就是说一个机柜至少有128个TPU。计算一下就会知道,每一个Pod由2个机柜和蓝色罩子组成,它的计算力应该是11.5 petaflops。

在生产端,如此强大的计算力到底有什么好处呢?谷哥最新的大型翻译模块是用32个最棒的商用GPU(可能是Pascal)训练的,要花一整天训练,现在只需要1/8的TPU就能在一个下午完成。请注意,TPU是专门为TensorFlo优化过的,商用GPU(哪怕是高端GPU)瞄准的是通用目的,它既要完成高精度工作,也要完成低精度工作。从这个案例就可以看出,谷歌推出自有ASIC在投资回报方面是没有什么问题的。

还有一点要注意,第一代TPU也许已经拥有强大的推理能力,既快速又高效,不过模型必须先从GPU训练集群中移出,如果要将新模型或者重新训练的模型正式部署起来,实验过程就会变慢,谷歌开发者必须等更长的时间才能拿到结果,然后重复工作。正是因为这个原因,对于深度学习硬件来说,在单个设备上训练/推理就是研究的“圣杯”,现在我们终于走到了转折点,可以用多种方法解决此问题;未来还可以用英特尔 Knights Mill或者Nvidia Volta GPU。

Nvidia的Volta GPU有一些“tensor core”的处理元素,它可以让机器学习训练加速,处理超级计算任务时也会更快,Volta GPU在单个设备上的速度可以达到120 teraflops,相比一年前发布的Pascal进步很多。虽然Volta GPU很惊人,不过谷歌的产品还是夺走Nvidia的一些风头,虽然短期之内用户无法自己动手自制TPU机器。

Dean说Volta架构很有趣,因为Nvidia意识到核心矩阵相乘原语(core matrix multiply primitive)对于应用的加速而言相当重要。他还说,谷歌第一代TPU用相似的方法提高推理时矩阵相乘的速度,不过设备是在机器学习工作流中实现这一点的。他还说“加快线性代数运算速度一直个好方法。”

先将硬件放在一边不谈,让我们从用户角度看一看。谷歌没有将秘密保护起来,在不久的将来,谷歌会通过“谷歌云平台”使用TPU。谷歌高级研究员Jeff Dean说,他们不会限制竞争,TPU只是作为一种选择提供给用户,还会提供Volta GPU,继续使用Skylake Xeons,开发者构建、运行模型时,谷歌会提供几种选择。谷歌将会在中装备1000个TPU,提供给合格的研究团队使用,这些团队正在完成开放科研项目,它们也许愿意将自己的机器学习成果开放。

Dean解释说,谷歌内部完成一些机器学习任务时可能仍然会使用GPU和CPU,在同一款设备中使用两种训练和推理技术有着巨大的潜力,设备专为TensorFlo优化过,它也许会打破平衡。新TPU能耗如何我们现在还不知道,不过第一代设备能耗很低,如果用它作为标准评估新设备也许不合适,因为新设备既可以训练也可以推理。我们可以推断新TPU的能耗比Volta低,毕竟无论哪个方面来看Volta都是一款更大的设备,而且Volta可以完成多种工作,比如运行一些HPC应用,它们需要进行64位浮点运算,Volta还可以做一些机器学习超低精度运算工作。Nvidia已经将FP16(16位浮点运算)技术标准化,用户可以根据工作改变精度,只是我们必须假定新的TPU架构是16位或者8位的。

关于这一点,Dean说“第一代产品支持量子化整数运算,第二代支持浮点运算。一旦模型的推理训练结束,可以用来运行量化算法,就没有必要改变模型了,在整个训练和推理过程中可以使用相同的浮点数表示法,部署起来也会更容易。”

谷歌没有将定制硬件推向市场,这对于Nvidia、英特尔来说是一件好事,因为在这个市场Nvidia与英特尔都想占据上风,而谷歌的TPU很有竞争力。将二代TPU放进谷歌云平台,无疑可以帮助一些人完成规模化训练,不过正如上文提到的,完成这些工作时既会用到高端GPU,也会用到CPU。用户可以在架构上大规模使用TensorFlo,而架构本身就是针对TensorFlo设计的,这点也很吸引人。谷歌的举动会激怒亚马逊和微软,它们可能会加速引进最新的GPU,以前它们的速度比较慢。亚马逊使用的最高端GPU是 Tesla K80,微软Azure使用的是Pascal P100s。

有些人可能感到奇怪,为什么谷歌不将芯片商用呢?仔细阅读上文,看看谷歌做了一些什么,就会发现它选择的路线不是直接的,风险也比较小。如果深度学习市场像预料的一样扩张,TPU和TensorFlo也许会带来差异化,这种差异化如果足够大,就会让谷歌云平台拥有更大的优势,这种优势是之前没有过的。然后谷歌就可以大规模生产,进入大众市场,这样谷歌就可以有序扩张TensorFlo了。

多年前,谷歌就曾说过“不作恶”。老实说,在Volta推出之时展示一头这样的怪兽的确有点邪恶

打赏

Copyright © 2016-2025 www.robotxin.com 人工智能机器人网 版权所有 Power by