大模型-模型预训练-可拓展的训练技术

一、简介

1、作用
  • 提高训练效率
2、方案
  • 3D并行训练
  • 零冗余优化器
  • 激活重计算
  • 混合精度训练

二、3D并行训练

1、组成
  • 数据并行
  • 流水线并行
  • 张量并行
2、数据并行
  • 作用:提高训练吞吐量,通过增加GPU提升训练效率
  • 原理:将模型参数和优化器状态复制到多个GPU上,然后将训练数据平均分配到这些GPU上,这样每个GPU只需要处理分配给它的数据,然后执行前向传播和反向传播以获得梯度,当所有GPU都执行完之后,该策略会将不同的GPU梯度进行平均,以得到整体的梯度来统一更新所有GPU上的模型参数
  • 优点:
    • 高可拓展性,通过增肌GPU即可提效
    • 实现简单,多数深度学习库都提供支持,比如TensorFlow和PyTorch
3、流水线并行
  • 方法:将大模型不同层的参数分配到不同的GPU上,以减少GPU之间传输隐藏状态或梯度的成本,为了避免多GPU串行导致的效率低下问题,需要使用梯度雷击进行优化
  • 梯度累积:计算1个批次的梯度后不立刻更新模型参数,而是累积几个批次之后再更新,这样可以再不增加显存消耗的情况下模拟更大的批次
4、张量并行
  • 介绍:将大模型加载到多个GPU上的技术,与流水线并行类似,流水线并行是将模型不同层分配到不同的GPU上,相较而言,张量并行分配的粒度更细,它进一步分解了模型的参数张量(参数矩阵),以便更高效的利用GPU算力
  • 开源库支持情况:多个开源库中得到支持,例如Megatron-LM支持对参数矩阵按行按列分块进行张量并行

三、零冗余优化器

1、作用

通过降低数据并行中的模型冗余度,来提高训练效率

2、方式介绍

由DeepSpeed提出,用于解决数据并行中的模型冗余问题,优化掉不参与训练的部分,提高训练效率,每个GPU只保留部分,需要时再读取,降低显存冗余度

3、模型冗余问题

每张GPU在训练时都需要复制一份模型参数,有大部分实际是不参与训练的,这部分就是冗余

四、激活重计算

1、作用

又称梯度检查点,用于优化反向传播时的显存占用的技术

2、原理

在前向传播期间仅保留部分激活值,在反向传播时重新计算激活值,以节约显存,但是会引入额外计算开销

五、混合精度训练

1、原理

相比早起使用的单精度浮点数训练方式,使用半精度浮点(2个字节)和单精度浮点(4个字节)组成的混合精度训练技术,可以实现显存开销减半、训练效率翻倍

2、过程

首先会存一份原始的32位模型参数副本,在训练过程中,先将32位参数转化为16位参数,随后以16位参数执行前向传播和反向传播,最后再更新32位参数

3、优点

模型训练中,前向传播和反向传播占了大多数优化时间,所以混合精度训练可以显著提升训练效率

4、最新方案

将浮点数里面表示尾数的内存部分占用减少,例如谷歌研究人员提出半精度浮点数里面的1位符号位、5位指数位、10位尾数位,调整为1位符号位、8位指数位、7位尾数位,表示范围可以扩大到10的38次方

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值