关于分布式模型并行的分正式评论

关于Data Parallel(DP)、Tensor Parallel(TP)和Pipeline Parallel(PP)等分布式并行策略,与Megatron、DeepSpeed和FSDP等实现的一些深入研究与讨论。分布式并行训练主要解决两类问题:

  1. 模型分片:模型大小远超单节点存储上来,需要多节点分片存储和计算担;
  2. 并行训练:提高单位时间内的算力密度,进而降低整体训练时间;
    分布式并行训练几乎总是会引入昂贵的成本,比如增加了昂贵的多节点通信、引入了额外的多机稳定性问题、以及额外的开发与调试成本等,因此我们应该尽量避免引入分布式并行训练。而不得不引入分布式训练的场景中,也应充分考虑通信开销,尽量降低并行的规模。

3D模型并行

根据切分维度的不同,并行策略主要分为如下几类:

  1. Data Parallel(DP):将数据切分成N份,每个instance采用完全相同的配置,在计算梯度后通过all reduce全局同步梯度,并分别更新;
  2. Tensor Parallel(TP):将每个tensor切分成N份,在矩阵乘法等计算时进行同步;也称为横切
  3. Pipeline Parallel (PP):将模型按执行前后顺序切分多分(通常按layer切分),并根据顺序依次执行;
  4. Zero Redundancy Optimizer(ZeRO):同样将tensor切分成N份,但是在前向与后向计算时在每个分布式节点重建原始Tensor;
  5. Sequence Parallel(SP):在超长序列上进行训练时,将计算切分至多个节点;

dp_tp_pp.png

关于Scaling Law的非正式评论

大模型被广泛关注的起点是OpenAI发布ChatGPT,凭借优秀的对话能力与In-Context Learning的能力,吸引了整个AI圈的关注。
LLM技术的发展主要得益于Scaling Law给出的一系列预测,这些预测主导了最近几年LLM模型在参数、数据和算力规模上快速增长。
甚至有人提出了”Scale is All You Need!”。本文主要讨论LLM行为的可预测性,记录关于Scaling Law、Grokking和Double descent等empirical phenomenon的讨论。

大模型的良好泛化性

OpenAI在GPT3论文中提出GPT-3等语言模型(language model)是few shot learner。这一概念出自In-Context Learning,具体是指在模型预测时通过上下文中给出足够的背景知识和任务描述,然后直接预测1,比如:

  • Zero-shot(没有示例):8+9=?
  • One-shot(一个示例):5+5=10, 8+9=?
  • Few-shot(多个示例):6+7=13,6+6=12,5+5=10, 8+9=?

Open AI在2020年的大模型Scaling Law论文中发现,若将模型迁移到新的数据集,新数据集上的测试loss与训练数据集上的测试loss存在一个相对恒定的offset。随着模型规模的增大,训练数据集和新数据集上的测试loss近似同步下降。这也就意味着可以通过持续增大模型大小来降低模型在所有数据集上的loss。

Pasted image 20240121235222.png

这种优秀的泛化性给出了一种全新的探索方向:相比探索更复杂的模型结构,探索更大的模型是否能够成为深度学习的全新路径。