美文网首页
如何看待谷歌公开tensorflow专用处理器TPU?

如何看待谷歌公开tensorflow专用处理器TPU?

作者: 智慧思特大数据 | 来源:发表于2017-04-12 17:15 被阅读0次

    我们找到了一些资料,希望能够解答为什么TPU运算速度比普通的GPU、CPU组合快15-30倍。同时,我们认为Google在TPU研发上的这些创新极有可能将成为Inter、AMD跟进同类硬件开发的标杆,并最终成为一种趋势。

    一、针对深度学习的定制化研发

    TPU是谷歌专门为加速深层神经网络运算能力而研发的一款芯片,其实也是一款ASIC。


    ASIC,指依照产品需求不同而定制化的特殊规格集成电路,由特定使用者要求和特定电子系统的需要而设计、制造。一般来说,ASIC在特定功能上进行了专项强化,可以根据需要进行复杂的设计,但相对来说,实现更高处理速度和更低能耗。相对应的,ASIC的生产成本也非常高。


    一般公司很难承担为深度学习开发专门处理器ASIC芯片的成本和风险。首先为了性能必须使用最好的半导体制造工艺,而现在用最新的工艺制造芯片一次性成本就要几百万美元,非常贵。就算有钱,还需要拉一支队伍从头开始设计,设计时间往往要到一年以上,time to market时间太长,风险很大。如果无法实现规模化的应用,就算开发成功也缺少实际使用价值。所以,企业一般倾向于采用通用性的芯片(如CPU、GPU),或者半定制化芯片(FPGA)。


    谷歌之所以敢自己做定制化研发,一方面自然是有钱任性,另一方面也由于谷歌提供的很多服务,包括谷歌图像搜索(Google ImageSearch)、谷歌照片(Google Photo)、谷歌云视觉 API(Google Cloud Vision API)、谷歌翻译等产品和服务都需要用到深度神经网络。基于谷歌自身庞大的体量,开发一种专门的芯片开始具备规模化应用(大量分摊研发成本)的可能。

    假如存在这样一个场景,其中人们在 1 天中使用谷歌语音进行 3 分钟搜索,并且我们要在正使用的处理器中为语音识别系统运行深度神经网络,那么我们就不得不翻倍谷歌数据中心的数量。


    我们的负载是用高级的 TensorFlow 框架编写的,并是用了生产级的神经网络应用(多层感知器、卷积神经网络和 LSTM),这些应用占到了我们的数据中心的神经网络推理计算需求的 95%。

    表 1:6 种神经网络应用(每种神经网络类型各 2 种)占据了 TPU 负载的 95%。表中的列依次是各种神经网络、代码的行数、神经网络中层的类型和数量(FC 是全连接层、Conv 是卷积层,Vector 是向量层,Pool 是池化层)以及 TPU 在 2016 年 7 月的应用普及程度。 

    相对于 CPU 和 GPU 的随时间变化的优化方法(高速缓存、无序执行、多线程、多处理、预取……),这种 TPU 的确定性的执行模型(deterministic execution model)能更好地匹配我们的神经网络应用的 99% 的响应时间需求,因为 CPU 和 GPU 更多的是帮助对吞吐量(throughout)进行平均,而非确保延迟性能。这些特性的缺失有助于解释为什么尽管 TPU 有极大的 MAC 和大内存,但却相对小和低功耗。

    TPU 各模块的框图。主要计算部分是右上方的黄色矩阵乘法单元。其输入是蓝色的「权重 FIFO」和蓝色的统一缓存(Unified Buffer(UB));输出是蓝色的累加器(Accumulators(Acc))。黄色的激活(Activation)单元在Acc中执行流向UB的非线性函数。

     

    二、大规模片上内存

    TPU在芯片上使用了高达24MB的局部内存,6MB的累加器内存以及用于与主控处理器进行对接的内存,总共占芯片面积的37%(图中蓝色部分)。


    这表示Google充分意识到片外内存访问是GPU能效比低的罪魁祸首,因此不惜成本在芯片上放了巨大的内存。相比之下,Nvidia同时期的K80只有8MB的片上内存,因此需要不断地去访问片外DRAM。 

    TPU 芯片布局图。蓝色的数据缓存占芯片的 37%。黄色的计算是 30%。绿色的I/O 是 10%。红色的控制只有 2%。CPU 或 GPU 中的控制部分则要大很多(并且非常难以设计)。

    三、低精度(8-bit)计算

    TPU的高性能还来源于对于低运算精度的容忍。

    研究结果表明低精度运算带来的算法准确率损失很小,但是在硬件实现上却可以带来巨大的便利,包括功耗更低速度更快占芯片面积更小的运算单元,更小的内存带宽需求等。


    这次公布的信息显示,TPU采用了8-bit的低精度运算。也就是说每一步操作TPU将会需要更少的晶体管。在晶体管总容量不变的情况下,每单位时间可以在这些晶体管上运行更多的操作,这样就能够以更快的速度通过使用更加复杂与强大的机器学习算法得到更加智能的结果。


    在Google的测试中,使用64位浮点数学运算器的18核心运行在2.3 GHz的Haswell XeonE5-2699 v3处理器能够处理每秒1.3 TOPS的运算,并提供51GB/秒的内存带宽;Haswell芯片功耗为145瓦,其系统(拥有256 GB内存)满载时消耗455瓦特。相比之下,TPU使用8位整数数学运算器,拥有256GB的主机内存以及32GB的内存,能够实现34GB/秒的内存带宽,处理速度高达92 TOPS ,这比Haswell提升了71倍,此外,TPU服务器的热功率只有384瓦。


    四、脉动式数据流

    对于GPU,从存储器中取指令与数据将耗费大量的时间。TPU甚至没有取命令的动作,而是主处理器提供给它当前的指令,而TPU根据目前的指令做相应操作,这使得TPU能够实现更高的计算效率。


    在矩阵乘法和卷积运算中,许多数据是可以复用的,同一个数据需要和许多不同的权重相乘并累加以获得最后结果。因此,在不同的时刻,数据输入中往往只有一两个新数据需要从外面取,其他的数据只是上一个时刻数据的移位。


    在这种情况下,把片上内存的数据全部Flush再去取新的数据无疑是非常低效的。根据这个计算特性,TPU加入了脉动式数据流的支持,每个时钟周期数据移位,并取回一个新数据。这样做可以最大化数据复用,并减小内存访问次数,在降低内存带宽压力的同时也减小了内存访问的能量消耗。

    五、散热功能强化

    对于性能来说,限制处理器速度的最大两个因素是发热与逻辑门的延迟,其中发热是限制速度最主要的因素。现在的处理器大部分使用的是CMOS技术,每一个时钟周期都会产生能量耗散,所以速度越快,热量就越大。下面是一张CPU时钟频率与能量消耗的关系,可以看到,芯片能耗随运算速度变化呈现指数级增长。

    TPU在降低功耗的同时,对于散热能力也做了进一步的优化。从TPU的外观图可以看出,其中间突出一块很大的金属片,这便是为了可以很好地对TPU高速运算是产生大量的热进行耗散。

    六、硬件、软件持续优化

    谷歌认为现在的TPU仍在硬件和软件方面存在很大的优化空间,比如假定用上了NVIDIA K80 GPU中的GDDR5内存,那么TPU就可以发挥出更好的性能。

    此外,谷歌工程师还为TPU开发了名为CNN1的软件,其可以让TPU的运行速度比普通CPU高出70多倍!

    版权申明:本文由智慧思特编辑整理,如需转载,可申请授权。部分图片来自网络,侵删。文章内容仅为作者个人观点,不代表公司立场。

    》》》更多精彩文章

    · 智慧思特与腾讯达成合作,共同推进智慧城市建设

    · 微软、百度两大人工智能首次对话曝光,亮瞎你双眼!

    · 战无不胜的人工智能被曝存在漏洞

    · 23439个菜谱,数据分析师这样学做饭  

    · 厉害了word哥,大数据扒出来重庆有9640家火锅  

    · 大数据分析:蓝瘦香菇突然这么火,炒作?炒作! 

    · 大数据分析:中国人都喜欢这样设密码,你呢

    · 零基础入门,资深吃货带你搞懂大数据 

    · 假如中国代替英国进行脱欧公投,结果会... 

    · 惊!机器学习终结红学研究百年争端? 

    · 人脸识别可以主动防御吗?能,但方法略Low

    · 这项新技术,为人工智能和外星人交流提供了可能


    阅读原文:http://mp.weixin.qq.com/s?__biz=MzI4MTA4ODQ0MQ==&mid=2650362150&idx=1&sn=cba67f5e17f99f05fb34be59ac80dc51&scene=0#wechat_redirect

    相关文章

      网友评论

          本文标题:如何看待谷歌公开tensorflow专用处理器TPU?

          本文链接:https://www.haomeiwen.com/subject/yiwmattx.html