附录3 CPUGPU和TPU
一秒记住【xiaoyanwenxue】精彩无弹窗免费!
“罗辑思维荐书集锦(套装共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倍的性能提升。
本章未完,点击下一页继续阅读