分类 预训练 下的文章

三种方式:数据并行、模型并行、3D并行

参考:https://juejin.cn/post/7254001262646738981

一、数据并行DP (Data Parallel)

数据并行是最常见的并行形式,因为它很简单。在数据并行训练中,数据集被分割成几个碎片,每个碎片被分配到一个设备上。这相当于沿批次(Batch)维度对训练过程进行并行化。每个设备将持有一个完整的模型副本,并在分配的数据集碎片上进行训练。在反向传播之后,模型的梯度将被全部减少,以便在不同设备上的模型参数能够保持同步。典型的数据并行实现:PyTorch DDP。

72746.png

二、模型并行

通常有两种类型的模型并行:张量并行和流水线并行

  • 流水线并行是在各层之间进行并行计算。
  • 张量并行是在一个操作中进行并行计算,如:矩阵-矩阵乘法。

1、流水线并行 PP(Pipeline Parallelism)

流水线并行的核心思想是,模型按层分割成若干块,每块都交给一个设备。
在前向传播过程中,每个设备将中间的激活传递给下一个阶段。
在后向传播过程中,每个设备将输入张量的梯度传回给前一个流水线阶段。
这允许设备同时进行计算,从而增加训练的吞吐量。

微信截图_20240123173407.png

流水线并行训练的一个明显缺点是训练设备容易出现空闲状态(因为后一个阶段需要等待前一个阶段执行完毕),导致计算资源的浪费,加速效率没有数据并行高。

典型的流水线并行实现:GPipe、PipeDream、PipeDream-2BW、PipeDream Flush(1F1B)

2、张量并行TP(Tensor Parallelism)

3、优化器并行 ???

目前随着模型越来越大,单个GPU的显存目前通常无法装下那么大的模型了。那么就要想办法对占显存的地方进行优化。

通常来说,模型训练的过程中,GPU上需要进行存储的参数包括了模型本身的参数、优化器状态、激活函数的输出值、梯度以及一些零时的Buffer。各种数据的占比如下图所示:
微信截图_20240123174631.png

可以看到模型参数仅占模型训练过程中所有数据的一部分,当进行混合精度运算时,其中模型状态参数(优化器状态 + 梯度+ 模型参数)占到了一大半以上。因此,我们需要想办法去除模型训练过程中的冗余数据。

而优化器相关的并行就是一种去除冗余数据的并行方案,目前这种并行最流行的方法是 ZeRO(即零冗余优化器)。针对模型状态的存储优化(去除冗余),ZeRO使用的方法是分片,即每张卡只存 1/N 的模型状态量,这样系统内只维护一份模型状态。ZeRO有三个不同级别,对模型状态进行不同程度的分片:

ZeRO-1 : 对优化器状态分片(Optimizer States Sharding)
ZeRO-2 : 对优化器状态和梯度分片(Optimizer States & Gradients Sharding)
ZeRO-3 : 对优化器状态、梯度分片以及模型权重参数分片(Optimizer States & Gradients & Parameters Sharding)

微信截图_20240123175131.png

三、3D并行

总的来说,3D并行是由数据并行(DP)、张量并行(TP)和流水线并行(PP)组成

微信截图_20240123180734.png

参考:
https://zhuanlan.zhihu.com/p/598714869

nohup python pre_brand.py>>./train.log 2>&1 &

一、Bloom

1.参考论文

https://arxiv.org/pdf/2211.05100.pdf

2.硬件组成

007.png

3.数据量

epoch:
token:3500亿token
804.png

4.网络参数

模型参数量:176B
059.png

二、GLM

1.参考论文

https://openreview.net/pdf?id=-Aw0rrrPUF

2.硬件组成

56.png

3.数据量

epoch:1
token:4000亿token
3556364264.png

4.网络参数

模型参数量:130B
400.png

三、GPT-3

1.参考论文

https://arxiv.org/pdf/2005.14165.pdf

2.硬件组成

论文中没有说明:
。英伟达表示,GPT-3 需要 512 颗 V100 显卡
训练 7 个月,或者 1024 颗 A100 芯片训练一个月

3.数据量

epoch:1
token:4000亿token
410.png

4.网络参数

模型参数量:175B

四、LLaMa

1.参考论文

https://arxiv.org/pdf/2302.13971.pdf

2.硬件组成

949.png

3.数据量

epoch:1
token:1.4万亿
disk size:4.9TB
257.png

4.网络参数

模型参数量:
参数大小:65B
532.png

模型参数量训练数据disk size训练数据tokens训练时间GPU数量epoch2B参数,500G语料预估训练天数
Bloom176B1.6TB3500亿205天384 A100 80G=30TB显存135天
GLM130B2.4TB4000亿60天768 A100 40G=30TB显存112天
GPT3175B570GB4000亿30天1024 A100 80G=80TB显存112天
LLaMa65B4.9T14000亿21天2048 A100 80G=160TB显存113天
我们2B0.5T1100亿?天8 A100 80G=0.625TB显存112-35天

nvidia apex是什么

APEX是什么 APEX是英伟达开源的,完美支持PyTorch框架,用于改变数据格式来减小模型显存占用的工具。 其中最有价值的是amp(Automatic Mixed Precision),将模型的大部分操作都用Float16数据类型测试,一些特别操作仍然使用Float32。