liujie
liujie
发布于 2023-06-02 / 80 阅读
0
0

大模型训练为什么那么难

https://www.bilibili.com/video/BV14Y4y1S7A2/?spm_id_from=333.337.search-card.all.click&vd_source=3b73a21c3f8d922f85cb6d54ab274d2c

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

https://zhuanlan.zhihu.com/p/363645881

单机多卡同步数据并行

  • 问题是:多个卡里都存了模型的副本,存在浪费

  • 好处是:可以并行

模型并行

解决的是一张卡放不下模型时的问题

问题:串行计算,GPU利用率低,存在很多空闲

流水线并行

优化:流水线并行

问题是:前向算完后,才能反向更新

进一步优化:

问题:前向过程处于一个很不稳定的状态;

可以更新多个版本的参数在内存,取得对应层的参数

数据并行&模型并行

多维并行才能做到尽可能的更优。

数据并行和模型并行可以同时展开

模型并行有个难点:如何切分模型;因为有些模型参数多,有些模型参数少

拆解矩阵

列并行可以让激活函数一起并行

多头注意力 transformer

  • 多头注意力是非常适合并行的

  • LSTM RNN 下一时刻结果依赖上一时刻的结果,导致没有办法并行运算,导致闲置太大。

如何最优

模型并行&张量并行&数据并行同时

要求通讯非常好(机器和机器之间的网络带宽要非常大)


评论