GPU 与 CPU
训练大模型都是用GPU来训练。其实CPU也能用来训练,只是比较慢,图中绿色的部分是真正用来计算的,在CPU中计算单元(用来计算的部分)占用的比例很小(还有缓存、控制单元占用的比例比较多)。
- CPU:除了用来计算以外,还可以做逻辑判断(if ...else判断);一般是串行处理任务,如:图中绿色格子少,并行运算能力要比GPU弱很多。
- GPU:特点算力强(计算单元占比多),并行处理能力强(如:矩形运算时,可以同时并行运算;GPU适用于矩形运算,因为矩阵运算可以把复杂的运算拆成并行的简单运算)。特长是用来计算(包括图形渲染、挖矿等底层逻辑都是运算),GPU的计算性能强悍,与GPU的架构有关系。
GPU核心能力:计算能力(保证算多快)、内存能力(保证一次能算多少);GPU处理不了复杂的逻辑,擅长是用来计算。
为什么深度学习(包括NLP、CV)要用GPU来训练?
因为深度学习都是大量的矩阵运算,矩阵运算可以把复杂的运算拆成并行的简单运算。而GPU计算单元占比多,同时并行运算能力强。
常见的4种数据类型
当前在大模型中一般用 BF16 精度(Google发明)。理论上精度越高越好,但是GPU内存大小有限,精度高占用的内存空间也会变大。
GPU:NVIDIA V100(不支持BF16数据类型)、NVIDIA A100、NVIDIA H100(最好)
batchsize一次训练样本的数量,batchsize太小会造成模型训练不稳定。batchsize搞大一点,可以用多显卡并行的方式。
数据并行
模型并行
场景:适用于模型特别大,单个显卡加载不进去(内存不够)。
一个模型有很多层,比如有4层(L1、L2、L3、L4),我有两个显卡(GPU1、GPU2),可以把模型的L1、L2层放在GPU1里,模型的L3、L4层放在GPU2里,模型输入进来之后,先把GPU1里面L1和L2层的结果运算完,正向传播再把数据传到GPU2里面,GPU2接着把L3和L4层的结果运算完,然后算到最后一层的时候,损失函数计算一下,然后返回来把后面层模型的参数更新一下,然后反向传播传回GPU1把前面的参数更新一下,这样就形成了一个模型运行的效果。(模型是并行,计算流程是串行)这种方法解决的是一个GPU放不下模型的问题。
上面图中,GPU0计算完后,接着是GPU1开始计算,GPU1计算完后,下一个GPU2开始计算,就这样串行计算下去。GPU在计算完之后,就处于闲置状态,如何解决这种计算资源闲置状态,避免在有限时间里没有合理的利用资源。
优化策略:以时间换取空间,或以空间换取时间这种思想进行优化。
正向传播 和 反向传播
在AI大模型中,正向传播(Forward Propagation)和反向传播(Backward Propagation)是训练深度神经网络算法的核心机制。
- 正向传播(Forward Propagation): 正向传播发生在当输入数据通过神经网络进行计算时。它从输入层开始,逐层处理信息直至输出层。
- 反向传播(Backward Propagation): 反向传播则是用于计算梯度的过程,以便更新网络中的权重参数以最小化损失函数。
总结来说,在AI大模型中,正向传播是用来模拟模型对输入数据做出预测的过程,而反向传播则是用于优化模型参数的关键环节,通过迭代调整权重,使模型整体性能不断改进,更加逼近理想的学习效果。
喜欢的朋友记得点赞、收藏、关注哦!!!