CPU 也可以训练模型
CPU计算单元小于GPU
CPU 更多的事 cache 和control ,用来做逻辑判断的,使用CPU训练模型只会慢,但是可以训练
GPU 并行运算能力非常适合深度学习运算
GPU 精度
GPT3 参数是 1750亿(170B)
batchsize 太小,模型训练效果会不稳定, 从纯GPU算力的角度来说,batchsize大小的区别并不大,输入数据就那些,计算量是确定的。不同的batchsize大小影响反向传播和dataloader的次数,这部分消耗的时间也是很大的
基本结论
batch size过小,花费时间多,同时梯度震荡严重,不利于收敛;
batch size过大,不同batch的梯度方向没有任何变化,容易陷入局部极小值。
详细情况可以见链接: https://blog.csdn.net/hxxjxw/article/details/119797365
单机多卡同步数据并行
问题是:多个卡里都存了模型的副本,存在浪费
好处是:可以并行
模型并行
解决的是一张卡放不下模型时的问题
问题:串行计算,GPU利用率低,存在很多空闲
流水线并行
优化:流水线并行
问题是:前向算完后,才能反向更新
进一步优化:
问题:前向过程处于一个很不稳定的状态;
可以更新多个版本的参数在内存,取得对应层的参数
数据并行&模型并行
多维并行才能做到尽可能的更优。
数据并行和模型并行可以同时展开
模型并行有个难点:如何切分模型;因为有些模型参数多,有些模型参数少
拆解矩阵
列并行可以让激活函数一起并行
多头注意力 transformer
多头注意力是非常适合并行的
LSTM RNN 下一时刻结果依赖上一时刻的结果,导致没有办法并行运算,导致闲置太大。
如何最优
模型并行&张量并行&数据并行同时
要求通讯非常好(机器和机器之间的网络带宽要非常大)