【AI大模型】大模型训练为什么这么难?

GPU 与 CPU

训练大模型都是用GPU来训练。其实CPU也能用来训练,只是比较慢,图中绿色的部分是真正用来计算的,在CPU中计算单元(用来计算的部分)占用的比例很小(还有缓存、控制单元占用的比例比较多)。

  • CPU:除了用来计算以外,还可以做逻辑判断(if ...else判断);一般是串行处理任务,如:图中绿色格子少,并行运算能力要比GPU弱很多。
  • GPU:特点算力强(计算单元占比多),并行处理能力强(如:矩形运算时,可以同时并行运算;GPU适用于矩形运算,因为矩阵运算可以把复杂的运算拆成并行的简单运算)。特长是用来计算(包括图形渲染、挖矿等底层逻辑都是运算),GPU的计算性能强悍,与GPU的架构有关系。

GPU核心能力:计算能力(保证算多快)、内存能力(保证一次能算多少);GPU处理不了复杂的逻辑,擅长是用来计算。

CPU与GPU的区别

为什么深度学习(包括NLP、CV)要用GPU来训练?
因为深度学习都是大量的矩阵运算,矩阵运算可以把复杂的运算拆成并行的简单运算。而GPU计算单元占比多,同时并行运算能力强。

常见的4种数据类型

image.png

当前在大模型中一般用 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大模型中,正向传播是用来模拟模型对输入数据做出预测的过程,而反向传播则是用于优化模型参数的关键环节,通过迭代调整权重,使模型整体性能不断改进,更加逼近理想的学习效果。

最后编辑于:2024-01-31 17:53


喜欢的朋友记得点赞、收藏、关注哦!!!

  • 13
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

武昌库里写JAVA

您的鼓励将是我前进的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值