关于分布式模型并行的分正式评论
关于Data Parallel(DP)、Tensor Parallel(TP)和Pipeline Parallel(PP)等分布式并行策略,与Megatron、DeepSpeed和FSDP等实现的一些深入研究与讨论。分布式并行训练主要解决两类问题:
- 模型分片:模型大小远超单节点存储上来,需要多节点分片存储和计算担;
- 并行训练:提高单位时间内的算力密度,进而降低整体训练时间;
分布式并行训练几乎总是会引入昂贵的成本,比如增加了昂贵的多节点通信、引入了额外的多机稳定性问题、以及额外的开发与调试成本等,因此我们应该尽量避免引入分布式并行训练。而不得不引入分布式训练的场景中,也应充分考虑通信开销,尽量降低并行的规模。
3D模型并行
根据切分维度的不同,并行策略主要分为如下几类:
- Data Parallel(DP):将数据切分成N份,每个instance采用完全相同的配置,在计算梯度后通过all reduce全局同步梯度,并分别更新;
- Tensor Parallel(TP):将每个tensor切分成N份,在矩阵乘法等计算时进行同步;也称为横切
- Pipeline Parallel (PP):将模型按执行前后顺序切分多分(通常按layer切分),并根据顺序依次执行;
- Zero Redundancy Optimizer(ZeRO):同样将tensor切分成N份,但是在前向与后向计算时在每个分布式节点重建原始Tensor;
- Sequence Parallel(SP):在超长序列上进行训练时,将计算切分至多个节点;