为什么深度学习需要使用 GPU?选择 GPU 有两点原因:
深度学习会涉及大量的矩阵运算。
对于
以及
B=\begin{bmatrix} b_{11} & b_{12} & \cdots & b_{1m}\\ \vdots & \vdots & \ddots & \vdots \\ b_{k1} & b_{k2} & \cdots & b_{km} \\ \end{bmatrix}
在计算两者乘积的结果
C=A\times B时,
C中任意一个元素的计算公式为:
从公式中可以看出:
好比 GPU 有好多成千上万的的“小计算器”,CPU 中几个或十几个的“高性能的小计算器”。
因此从这个可以看出,GPU 上的运算单元比 CPU 多。
虽然 CPU 上每个单元性能高,但面对大量计算时,GPU 在完成一批矩阵运算时,同时运算的数量高,所以总体下来还是 GPU 适合。
实际上深度学习并不一定需要用GPU,只是如果不使用GPU,训练模型所耗的时间会变得巨长,如果没有并行运行,GPU可能还不如CPU。
GPU优势在于并行运算,而深度学习中的运算大部分都是矩阵运算 (矩阵运算就是并行运算的一种)。可以想象 矩阵A * 矩阵B = 矩阵C,GPU可以做到的并行运算是指,矩阵C中的每个元素可以同时运算得出,而CPU可以做到的只能够是先算出矩阵C第一行第一列的元素,接着再去算第一行第二列的元素,与此类推。
CPU就好比1位高中生,5分钟就能做出一道几何题,但是要让他5分钟做1000道简单的加法题,可能会做不完。而GPU就好比100位小学生,虽然会的东西不及高中生,但是让它们在5分钟内合力完成1000道简单的加法题,还是绰绰有余的。
同一深度学习模型gpu运算一定比cpu快,模型越复杂(神经网络层数越多、每层训练器维度越大),gpu优势越明显。