DOITAPP
DOIT数据智能产业媒体与服务平台
立即打开
DOITAPP
DOIT数据智能产业媒体与服务平台
立即打开

谷歌开发TPU到底值不值?

4月5日,谷歌的一篇博客提到TPU张量处理器, TPU最早是六年前开始出现的,随着需求的增多,发现有些设备还是太贵了,随着人工智能的发展,未来谷歌对人工智能的计算需求需要谷歌数据中心规模翻一番,规模翻倍不要紧,但不必要的成本压力谁都不想承担,为了解决这一问题,所以就有了TPU。

TPU是一种补充

张量处理器(TPU)的出现并不是为了取代做通用计算的CPU,或者是擅长图形计算的GPU,而是作为一种补充。谷歌只是觉得GPU的通用性太高了,所以有了TPU,未来还会买很多CPU和GPU。

尽管如此,但由于谷歌TPU论文引起的反响太大,感应到威胁的英伟达很快做出的回应,英伟达回应说,GPU在机器学习的推理(inferencing)方面相对于TPU有一些优势,还能用于机器学习中神经网络的训练。英伟达的GPU更通用一些,谷歌的TPU则比较专注于一个点。

英伟达回应对谷歌在论文中进行的对比的细节有些意见,黄仁勋表示GPU的通用性高一些, 先是肯定TPU在深度学习的张量处理领域有一些重合,随后通过一些细节来论证GPU相对于TPU的优势,这也算是不大不小的撕逼吧。

谷歌说:TPU相对于CPU,GPU的性能优势

如今,谷歌的许多产品都用到了TPU,比如谷歌图像搜索,谷歌照片,谷歌翻译,还有AlpheGo。最引人关注是在谈性能的部分,为了让大家感受TPU性能的优势,拿来做对比的自然少不了CPU和GPU。

图片 1

谷歌生产环境的AI负载就有许多神经网络推理(inferencing)的部分,跑这一负载的时候,TPU比GPU和CPU快15倍至30倍;TPU比传统芯片能效更高,能达到30倍至80倍的提升;跑应用需要的代码只有100到1500行,该代码基于谷歌开源的机器学习框架TensorFlow。

与一颗18核的Haswell 至强E5-2699 v3或者一块英伟达Kepler GK210B相比,TPU对谷歌TensorFlow框架支持的更好。

虽然Haswell至强也支持8位整数运算,64位双精度和32位单精度浮点运算,但是在神经网络的环境下性能明显下降,至强处理器在整数模式下的吞吐量并不高,远不如TPU在浮点模式下的表现。

Kepler GK210B GPU不支持8位整数运算,只支持32位以及64位浮点模式,其在吞吐方面的表现与TPU对比也相形见绌:

JouppiTable2

上图TOPS一栏,在TensorFlow框架运行谷歌的推理(inferencing)工作负载的时候,Haswell E5能跑出2.6 TOPS,K80能跑出2.8 TOPS,TPU能跑出92 TOPS,是前者的三十多倍。

英伟达:对比的产品根本没有针对人工智能负载做优化

一般来说基准测试都有一定说服力的,但这次测试,有人表示Keplers落后于最新的Pascal架构CPU两代,谷歌的这个对比有失公允。英伟达加速计算副总裁表示,Kepler是2009年推出的针对传统HPC问题的GPU,K80设计的时候根本没考虑深度学习的问题。

随着GPU被用在机器学习领域,英伟达也在产品上不断做优化。2016年采用Pascal架构的Tesla P40刚推出的时候,TPU在深度学习方面的性能表现是K80的20倍。

2016年,英伟达推出了采用Pascal架构的P4和P40,除了支持半精度的16位浮点运算外,还支持8位整数运算,这个跟谷歌的TPU是一样的。

P4基于GP104芯片,有2560颗CUDA处理器,在运行推理(inferencing)工作负载的时候理论峰值性能达21.8 TOPS,峰值功耗为75瓦。P40基于GP102芯片,有3840颗CUDA核心,运行推理(inferencing)工作负载时的理论峰值性能为47 TOPS,功耗为250瓦。

谷歌在论文提到P40可以有47 TOPS推理(inferencing)性能,但没提到,99%的事务(transactions)平均响应时间控制在10毫秒,这一对于谷歌机器学习做推理(inferencing)负载时的重要参数。谷歌表示它的28纳米工艺TPU可以以700 GHz运行,主存储器内存从DDR换成了GPU常用的GDDR5,所有这一切只额外增加10瓦功耗。

英伟达新品的测试表现

可能因为不满英伟达对谷歌对TPU和GPU的对比结果,英伟达用开源的GoogLeNet卷积神经网络应用程序进行了一些测试,这改善了英伟达在推理(inferencing)工作负载中的表现:

nvidia-p40-vs-k80-vs-google-tpu

图表中有一个有趣的细节,英伟达在表格中只显示了数MB的on-chip内存,而没显示数GB的on-card内存。

P40的GP102芯片有24 GB的GDDR5内存,K80的GK210B芯片有都12 GB的GDDR5内存,以及8 MB的on-chip内存。TPU有28 MB on-chip内存以及32 GB DDR3内存。GB的内存是用来存储深度学习模型的地方。

英伟达测出TPU最高性能是90 TOPS,谷歌测出的是92个TOPS,谷歌测出P40显卡在8位整数运算时候的最高性能为48 TOPS,英伟达测出的是47 TOPS。

运行GoogLeNet推理(inferencing)工作负载,一个重要的数据是,99%的事务(transactions)平均响应时间都小于10毫秒,TPU每秒可以处理280,000个推理(IPS),Pascal P40可以处理560,000。

谷歌指出,单张K80卡只能处理36,465个推理(IPS),只有TPU的1/13,10个毫秒只能完成1%事务(transactions)。我们不知道Tesla P4怎么样,与谷歌的TPU在同一类型的热封装中理论上说应该更强。因为P40与Tesla P4在8位整数浮点运算时候的性能旗鼓相当,所以我们就假设P4与P40在跑GoogLeNet时候的性能一样。

Tesla P40每秒可以处理259,750 推理(IPS),因为与谷歌TPU表现基本相同而做推论,也能将处理99%事务(transactions)的平均响应时间控制在10毫秒以内。如果谷歌TPU的内存转向GDDR5内存,无疑会增加成本,但是每秒可以处理的推理(IPS)能增加到840,000。私下里猜测,谷歌可能已经这么做了。

谷歌这么开发值不值?

第一个要问的问题是,谷歌为开发和制造TPU付出了多大成本。当然因为不用依靠CPU来做推理(inferencing)所以能节省了一大截成本。算一算成本,如果一块P4是2100美金,P40是4700美金,成本都比较高,所以谷歌必然考虑做自己的芯片,靠自研芯片节省的电费带来经济性,总体成本会低下来。

如果今年五月份的GPU大会上英伟达可能会发布新的GPU Volta,如果新的GPU能让机器学习推理的能力翻倍的话,后半年大范围供货后将成为很多HPC和AI用户的选择,此时英伟达的V4和V40就跟采用GDDR5的TPU站到同一阵营了,而且采用更高级的20纳米制程。

谷歌有钱,想买啥就能买啥,当想买的东西根本就没有的时候谷歌就会自己做,遵循的唯一原则就是降低TCO。

英伟达强调,GPU贡献性能的单位成本远低于TPU,为了证明在开发和部署环节的成本优势,英伟达还表示,市场上为AI开发的定制化的ASIC无一例外都非常昂贵,并且富有挑战性。英伟达明显加快了产品更新的节奏,因为创新的节奏太快了。

真正值得注意的问题,谷歌如何在锁定状态下调整其TensorFlow框架及TPU,从而挤出更多的性能。如果未来不能超越摩尔定律,那么它可能转向GPU,或者收购一家有趣的创业公司,这样做的话不会感到意外。如果谷歌未来展示更多TPU和TensorFlow技巧,我们也不用感到意外。

未经允许不得转载:DOIT » 谷歌开发TPU到底值不值?