为什么深度学习需要使用 GPU?
发布时间: 2023-10-24 10:35

为什么深度学习需要使用 GPU?选择 GPU 有两点原因:

  1. 深度学习的运算可以并行
  2. GPU 运算的核心数多

1. 并行运算

深度学习会涉及大量的矩阵运算。

对于n×k">n×k n\times k维的矩阵A=[a11a12a1kan1an2ank]">A=[a11a12⋯a1k⋮⋮⋱⋮an1an2⋯ank] A=\begin{bmatrix} a_{11} & a_{12} & \cdots & a_{1k}\\ \vdots & \vdots & \ddots & \vdots \\ a_{n1} & a_{n2} & \cdots & a_{nk} \\ \end{bmatrix}

以及k×m">k×m k\times m维的矩阵B=[b11b12b1mbk1bk2bkm]">B=[b11b12⋯b1m⋮⋮⋱⋮bk1bk2⋯bkm]

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×B">C=A×B

C=A\times B时,C">C

C中任意一个元素的计算公式为:

cij=r=1kairbrj,i[1,n],j[1,m]">cij=∑r=1kairbrj,i∈[1,n],j∈[1,m] c_{ij}=\sum_{r=1}^{k}a_{ir}b_{rj}, i\in\left[ 1, n \right], j\in\left[ 1, m \right]

从公式中可以看出:C">C C 中的每个元素的计算没有关联性,因此可以同时并行运算。

2. 核心多

好比 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优势越明显。

粤公网安备 44030502006483号、 粤ICP备15047669号
  • 捷易科技联系人