【GPT入门】第56课 大模型分布式训练的三种方式、模型层介绍及DeepSpeed ZeRO的支持
- [大模型分布式训练的三种方式、模型层介绍及DeepSpeed ZeRO的支持](#大模型分布式训练的三种方式、模型层介绍及DeepSpeed ZeRO的支持)
-
- 一、大模型的核心层结构介绍
-
- [1. 嵌入层(Embedding Layer)](#1. 嵌入层(Embedding Layer))
- [2. 注意力层(Attention Layer)](#2. 注意力层(Attention Layer))
- [3. 前馈网络层(Feed-Forward Network)](#3. 前馈网络层(Feed-Forward Network))
- [4. 层归一化(Layer Normalization)](#4. 层归一化(Layer Normalization))
- [5. 残差连接(Residual Connection)](#5. 残差连接(Residual Connection))
- 二、大模型分布式训练的三种核心方式
-
- [1. 数据并行(Data Parallelism)](#1. 数据并行(Data Parallelism))
- [2. 模型并行(Model Parallelism)](#2. 模型并行(Model Parallelism))
- [3. 流水线并行(Pipeline Parallelism)](#3. 流水线并行(Pipeline Parallelism))
- [三、DeepSpeed及DeepSpeed ZeRO介绍](#三、DeepSpeed及DeepSpeed ZeRO介绍)
-
- [1. DeepSpeed](#1. DeepSpeed)
- [2. DeepSpeed ZeRO(Zero Redundancy Optimizer)](#2. DeepSpeed ZeRO(Zero Redundancy Optimizer))
- [四、DeepSpeed ZeRO对三种分布式训练方式的支持](#四、DeepSpeed ZeRO对三种分布式训练方式的支持)
-
- [1. 对数据并行的支持](#1. 对数据并行的支持)
- [2. 对模型并行的支持](#2. 对模型并行的支持)
- [3. 对流水线并行的支持](#3. 对流水线并行的支持)
- [五、DeepSpeed ZeRO的核心价值](#五、DeepSpeed ZeRO的核心价值)
大模型分布式训练的三种方式、模型层介绍及DeepSpeed ZeRO的支持
一、大模型的核心层结构介绍
在深入了解分布式训练之前,有必要先了解大模型(尤其是Transformer架构)的核心层结构,这有助于理解为何需要不同的并行策略:
1. 嵌入层(Embedding Layer)
- 将输入的离散token(如文字、符号)转换为连续的向量表示
- 包含词嵌入表和位置编码,是模型的输入接口
- 参数量与词汇表大小和嵌入维度正相关
2. 注意力层(Attention Layer)
- Transformer模型的核心组件,实现"关注不同输入部分重要性"的机制
- 包含查询(Query)、键(Key)、值(Value)三个矩阵变换和缩放点积计算
- 计算复杂度高(O(n²),n为序列长度),内存占用大
3. 前馈网络层(Feed-Forward Network)
- 由两个线性变换和激活函数(如ReLU、GELU)组成
- 对每个位置的特征进行独立处理,补充注意力层的全局交互能力
- 参数量通常是注意力层的2倍左右
4. 层归一化(Layer Normalization)
- 稳定训练过程,加速收敛
- 对每一层的输入进行标准化处理
- 通常位于注意力层和前馈网络层的输入或输出位置
5. 残差连接(Residual Connection)
- 将层的输入与输出相加,缓解深层网络的梯度消失问题
- 是实现深层模型能够训练到上千层的关键技术之一
这些层通常以"注意力层+前馈网络层"为基本单元重复堆叠,形成深度网络结构,千亿参数模型往往包含数百甚至上千个这样的堆叠单元。
二、大模型分布式训练的三种核心方式
1. 数据并行(Data Parallelism)
-
原理:将完整的模型复制到多个设备(或节点)上,每个设备处理不同的数据分片。训练时各设备独立计算梯度,通过通信同步梯度后,所有模型副本本统一更新参数。
-
适用场景:模型规模较小,可完全全放入单个设备内存时,通过增加数据吞吐量加速训练。
-
与模型层的关系:每个设备保存完整的所有层结构,包括嵌入层、注意力层、前馈网络层等的完整副本。
2. 模型并行(Model Parallelism)
-
原理:将模型的不同层(或层内组件)拆分到不同设备,每个设备仅负责部分计算,通过设备间通信传递中间结果。
-
适用场景:模型单设备放不下时(如超大Transformer层),按层或张量维度拆分模型。
-
与模型层的关系:
- 垂直拆分:不同设备负责不同类型的层(如设备1处理嵌入层,设备2处理注意力层)
- 水平拆分:同一层的参数拆分到多个设备(如注意力层的Q/K/V矩阵拆分到不同设备)
3. 流水线并行(Pipeline Parallelism)
-
原理:将模型按层拆分到不同设备形成流水线,各设备按顺序处理不同批次的子任务(前向/反向计算),通过重叠计算与通信隐藏延迟。
-
适用场景:模型深度大但单设备可容纳部分层时(如Transformer的Encoder/Decoder拆分)。
-
与模型层的关系:
- 每个设备负责连续的若干层(如设备1处理前10层,设备2处理11-20层)
- 按顺序传递中间激活值,形成生产流水线式的计算流程
三、DeepSpeed及DeepSpeed ZeRO介绍
1. DeepSpeed
DeepSpeed是微软推出的深度学习优化库,专为大规模规模模型训练设计。它集成了多种先进技术,能显著提高训练速度、降低内存消耗,支持千亿甚至万亿参数模型的训练。
核心特性包括:
- 优化的通信机制,减少设备间数据传输
- 内存高效的训练策略,突破解大模型内存限制
- 混合精度训练支持,平衡精度与性能
- 与PyTorch等主流框架无缝集成
2. DeepSpeed ZeRO(Zero Redundancy Optimizer)
DeepSpeed ZeRO是DeepSpeed的核心组件,通过消除训练中的冗余内存占用,提升大模型训练效率。它不是独立的并行方式,而是增强现有并行策略的优化技术。
ZeRO的三个主要阶段:
- ZeRO-1:分片优化器状态
- ZeRO-2:分片优化器状态和梯度
- ZeRO-3:分片优化器状态、梯度和模型参数
四、DeepSpeed ZeRO对三种分布式训练方式的支持
1. 对数据并行的支持
传统数据并行中,每个设备存储完整的模型参数、优化器状态和梯度,存在大量冗余。
ZeRO通过分片技术,让每个设备只存储部分优化器状态(ZeRO-1)、梯度(ZeRO-2)或参数(ZeRO-3),大幅降低内存占用。即使在数据并行框架下,也能:
- 让单设备容纳更大模型
- 保持数据并行的高通信效率
- 支持更大的批次大小
2. 对模型并行的支持
ZeRO与模型并行可协同工作:
- 模型并行负责拆分网络层结构
- ZeRO进一步分片优化器状态、梯度和参数
- ZeRO-3支持跨模型并行组的参数分片,减少单设备内存占用
- 简化模型并行的实现复杂度,尤其对注意力层等复杂结构的拆分
3. 对流水线并行的支持
ZeRO与流水线并行结合时:
- 在每个流水线阶段内部使用ZeRO优化内存
- 减少每个设备存储的激活值和参数数量
- 允许更深的流水线设计和更大的模型
- 典型组合:Megatron-LM流水线并行 + ZeRO,既拆分模型层又分片优化器状态
五、DeepSpeed ZeRO的核心价值
- 突破内存限制:通过精细化分片,使单设备可训练更大模型
- 提升计算效率:减少冗余数据传输,提高硬件利用率
- 灵活组合策略:支持"模型并行+ZeRO"、"流水线+数据并行+ZeRO"等多种组合
- 简化实现难度:开发者无需手动设计复杂的并行策略,通过配置即可实现高效训练
通过这些优势,DeepSpeed ZeRO已成为超大规模模型训练的关键技术,使得千亿参数级别模型的训练从理论走向实践。