100笔趣阁

手机浏览器扫描二维码访问

附录3 CPUGPU和TPU(第1页)

一秒记住【xiaoyanwenxue.com】精彩无弹窗免费!“罗辑思维荐书集锦(套装共24册)(.shg.tw)”!

附录3:CPU、GPU和TPU

GPU是神经网络计算的引擎。图附3.1是一个典型的神经网络,用输出误差来调节各层的权重系数,输入阵列X通过参数矩阵运算进入下一层运算,每一层运算都是一次这样的矩阵运算。所谓矩阵运算,就是先把数字相乘再相加。

图附3.1典型的深度神经网络

为了帮助那些没有学过矩阵的读者加深理解,现在我们只看图附3.2中左边输入和第一层中一个神经元的关系:每一个输入数字和圆圈里的权重系数相乘,然后把所有的乘积加起来就得到一个值。例如,输入有三个单元,分别是(2,5,8),对应的权重系数分别是(2,-1,0.5),它们相乘后再相加是2×2+5×(-1)+8×0.5=4-5+4=3。这个值再经过一个“非线性”处理:这个值如果大于0就取原值,小于0就取值为0。注意这里所有的相乘运算都可以同时进行,这就是所谓的可“并行运算”。我们刚才描述的仅仅是一个单元的计算方法,其他单元的计算方法也都一样,也就是说不仅一个单元的计算是可以并行的,所有单元的计算都是可以同时进行的。

图附3.2神经网络的一个单元内的计算

而GPU与CPU相比的优点正是在这里。当年设计CPU时主要为了执行计算机程序,绝大部分计算机程序都是“串行”的,也就是后一个命令或计算要等前一个命令或计算的结果出来后才能执行。而GPU最初是为图形处理用的,图形处理的一个特点就是可以并行。例如,从一张图中把所有的黑点找出来,就可以把一张图分割成许多小图同时来找黑点。图附3.3是CPU和GPU的结构对比,图中左边的CPU通常由一个控制器(Control)来给少数几个功能强大的算术逻辑运算器(ALU)分配任务,而右边的GPU通常由许多简单的控制器(右图最左边一列方块)来控制更多的算术运算单元组成(那些小格子)。在图形和图像处理中大量的运算都是矩阵运算,所以GPU从第一天起就是为矩阵运算设计的,没想到几十年后的深度学习也主要是矩阵运算,这就是“天上的馅饼”。

图附3.3CPU结构和GPU结构对比

图片来源:https:.quora.Does-CPU-vendors-feel-the-petition-from-GPUs-putational-power。

那么在神经网络深度学习计算中GPU比CPU能好多少呢?一个极端的例子是在深度学习使用GPU之前,谷歌使用16000个CPU建造了一个超级深度学习网络,如图附3.4所示,成本为数百万美元。

几年后,斯坦福大学只用几个GPU就可以达到同样的性能,成本只有3万美元!即使考虑到芯片本身在几年内的发展,这个比较也是惊人的。当然这个比较仅仅是比较深度学习的矩阵运算,谷歌大脑还可以做很多其他的运算,例如强化学习等。总的来说,CPU适合串行运算,可以胜任从航天到手机的各种不同复杂运算和处理,而GPU主要用于简单的并行运算,并不会取代CPU。但是在图形处理和深度神经网络计算中,GPU可以比CPU快10倍甚至百倍。英伟达2017年推出的用于自动驾驶的芯片Xavier已经达到每秒20万亿次浮点计算。

图附3.4谷歌用16000个CPU搭建的深度学习“谷歌大脑”

图片来源:https:amp.businessinsider.images507ebdd2ecad045603000001-480-360.jpg。

2006—2017年,单片CPU的处理能力提高了50倍。50倍的增长不是来自时钟速度的提高(即单次运算变快),而是来自在芯片中塞进更多的处理器。它的内核数量从4个变到28个,是原来的7倍。另外一个性能的提升来源于指令的宽度,2006年一条指令只能处理2个单精度的浮点运算,今天512位的指令集中,一条指令可以同时处理16个单精度的浮点运算,这就相当于8倍的性能提升。7×8=56,约50倍的运算速度提升就是靠更多的处理器得来的。

图附3.52006—2017年CPU运算速度的进展

图片来源:香港浸会大学褚晓文教授“深度学习框架大PK”中的五大深度学习框架三类神经网络全面测评。

再看GPU在近十年的发展,图附3.6是GPU和CPU的性能对比。2006年英伟达第一次发布通用计算的GPU8800GTX,当时它的性能已经达到0.5万亿次浮点运算(500GFlops),接下来的十年,大家可以看到GPU相对CPU的计算能力一直维持在10~15倍的比例。GPU从过去的128个核心变成5376个核心,这个增长速度与CPU相同,所以GPU运算速度与CPU运算速度的比值一直保持不变。

图附3.62006—2017年CPU和GPU计算能力对比

图片来源:香港浸会大学褚晓文教授“深度学习框架大PK”中的五大深度学习框架三类神经网络全面测评。

其他几家互联网巨头也不能眼睁睁地看着英伟达控制着深度学习的命脉。谷歌就撸起袖子做了一款自用的TPU,设计思路是这样的:既然GPU通过牺牲通用性换取了在图形处理方面比CPU快15倍的性能,为什么不能进一步专注于只把神经网络需要的矩阵运算做好,进一步提高速度呢?TPU设计的核心诀窍有以下四点。

第一,图形与图像处理需要很高的精度(通常用32比特浮点精度),而用于识别的神经网络的参数并不需要很高的精度。所以谷歌的第一款TPU就专门为识别设计,在运算上放弃32比特的浮点运算精度,全部采用8比特的整数精度。

第二,由于8比特的乘法器比32比特简单4×4=16倍,所以在同等芯片面积上可以多放许多运算单元。谷歌的第一款TPU就有65000个乘加运算单元,相比最快的GPU只有5300个单元,多了不止10倍。

第三,不论在多核的CPU还是GPU中,目前的运算速度瓶颈都是内存的读和写。因为要被运算的数据都存在中央存储器里,而这些数字在运算时要分配到几百上千个运算单元中,从存储器到运算单元可谓“千里迢迢”,往返很费时间。在TPU里为了解决这个问题,干脆把运算单元摆成矩阵一样,让被运算的数据(例如神经网络的输入数据)流淌过这些运算单元,从内存中提取一个数据就让它和所有的权重系数都做完乘法,而不是像传统CPU或GPU那样提取一个数据只做一次运算就放回到存储器,做下一次运算再千里迢迢从存储器去取。这样数据像波浪一样一波一波涌来,所以叫脉动式计算。

第四,一个专注于矩阵运算的芯片不用考虑图形处理时要考虑的许多其他事情,例如多线程、分叉预测、跳序执行等,这是由于脉动式计算省掉了许多暂存、缓存等。整个运算的指令只有矩阵运算和取非线性那么几个,例如读数据、读参数、相乘、累加、非线性、写数据等。整个芯片和软件都变得非常简单,这样可以做到每个时钟周期执行一次指令。

图附3.7向量(一维)计算、矩阵(二维)计算和张量(三维)计算

图片来源:https:mp.weixin.qq.se333KjLavEvvpNIL3u1Y4Q。

现在我们可以算一下TPU到底比GPU快多少了。谷歌第一代的TPU有256×256=65536个8比特乘加器,时钟是700MHz,每秒能做的8比特乘加运算=65536×700×10=46×10次乘加运算,即92万亿次整数运算(92TOPS,一次乘加运算是两次运算)。所以当谷歌宣称比GPU快时,是用整数运算次数OPS和浮点运算次数FLOPS比。而GPU是以浮点运算为测量单位的,前面说过最新的英伟达Xavier运算速度可达20TFLOPS,这两个不可直接相比,但如果在神经网络用于识别时(而不是用于训练),浮点和整数运算造成的识别准确率差别不大,就可以说这款TPU比GPU快了9220=4.6倍。对于谷歌这样需要大量矩阵运算的公司可以节省许多买GPU的钱,并且加快了识别速度(例如谷歌翻译、图片识别等的几亿用户非常在意处理速度),更重要的是把核心能力控制在了自己手里。谷歌在云服务方面没有亚马逊做得好,正在奋起直追,有了TPU则可以给用户提供更快、更便宜的深度学习云服务,所以谷歌的TPU目前只给自己用,不卖给别人。谷歌的第二代TPU已经能够进行32比特的单精度浮点运算,这样从训练到识别都不需要买别人的GPU了。用浮点运算做识别还有一个好处就是通过浮点运算训练出来的模型可以直接用于识别,而不是像第一代TPU那样先要把那些32比特的参数集都量化为8比特。但是通过刚才的讨论,我们知道TPU更快的一个重要原因是放弃浮点运算,当TPU也需要浮点运算时,相比GPU的性能提高就不会那么大了。谷歌的第二代(TPU2.0)可以达到每秒45万亿次单精度浮点运算,和英伟达Xavier芯片比只快了一倍(TPU2.0在Xavier之后出来,快一倍就不算什么)。在2018年谷歌开发者大会上,谷歌又宣布了第三代(TPU3.0),宣称比TPU2.0快8倍。由于功耗的提高,所以第三代芯片已经需要液体制冷。一个第三代的TPU集群(一个机柜)有64块板卡,每块板卡上有4个TPU,总运算速度可以达到每秒8×45×4×64=92160万亿次浮点计算。

热门小说推荐
网游之龙王苍傲

网游之龙王苍傲

一个重生的天才,一段关于网游的传奇。他强大,装备技术和奇遇一个不缺。他仁慈,百花齐放比一枝独秀更能渲染这个精彩的世界。他残忍,龙之逆鳞绝不能触动。他聪明,智慧是一种力量。他虚拟的世界可以成为每个人的梦想舞台,打宝练级PK竞技等等组成了这个世界的节奏。正如足球运动是足球运动员不可缺少的部分一样,游戏,也是我们玩家的第二生命!你喜欢玩游戏吗?...

都市小世界

都市小世界

天降小世界,幸运的李青云不但得到了小世界,还得到了神尊传承,从此李青云走上了如果发展小世界的道路。...

龙行天下

龙行天下

少年富则国富!少年智则国智!少年强则国强!少年称王则国称王!...

修仙奶爸的妖孽人生

修仙奶爸的妖孽人生

小朋友,千万别惹我,我老爸超凶的!小娜扎。九天之下大境,皆为我界!孟浪淡淡道想要嫁给我,那得看我女儿喜不喜欢你!...

这个NPC太凶猛了

这个NPC太凶猛了

穿越到游戏中的魏晋,赫然发现自己竟然成了一名,只能沦为玩家经验值的底层NPC。想象到自己未来的处境,魏晋怒上心头,当即心一横,举起斧头就砍了玩家。爷不伺候了!只是,当他破罐子破摔,占山为王,准备自此逍遥自在时,却听到一则令他张目结舌的消息。我都落草为寇了,你告诉我这里是三国?PS前期发展势力,后期争霸,凭借横...

我在末日当领主

我在末日当领主

末日来临,丧尸横行,昔日的同伴变成恐怖的怪物,物资匮乏同类相残。林昊觉醒了异能,旁人避之不及的,在他眼里通通成了宝贝。叮,发现异变丧尸猫耳娘,是否契约?叮,发现进化期异变怪兽雷电蝠龙,是否契约?叮,发现觉醒异能人,是否契约?别问,问就是全都要!当别人还在争夺物资女人的时候,林昊已经左拥右抱,打下一片江山了。...

每日热搜小说推荐