Page 212 - 《软件学报》2026年第1期
P. 212

高彦杰 等: 大语言模型预训练系统关键技术综述                                                          209


                                     表 3    开源大语言模型预训练系统所包含的并行策略对比                (续)

                   预训练系统       数据并行       全切片数据并行        张量并行       流水线并行       序列并行       多并行自动搜索
                    MaxText       √            √            √           ×          √            ×
                    nnScaler      √            √            √           √          √            √

                    如图  6  所示, 现有的并行训练方式包含多种模式, 其中灰色表示                GPU 0  上部署的张量, 白色表示      GPU 1  上部
                 署的张量, 不同的行列区分表示不同的行列切分, 箭头代表数据流, 矩阵乘表示发生的矩阵乘计算,                              X  代表输入数
                 据,  W  代表权重. 图  6(a)–(d) 分别表示数据并行、全分区数据并行、张量并行和流水线并行的模型及数据分区方案.


                                  W        W
                                                                     W        W





                             X      矩阵乘      矩阵乘               X       矩阵乘      矩阵乘
                                    (a) 数据并行                        (b) 全分区数据并行
                                      W
                                                                    时间=0    时间=1    时间=2
                                                    W        X

                                                            W1      矩阵乘     矩阵乘     矩阵乘


                                     矩阵乘                    W2              矩阵乘     矩阵乘
                             X                矩阵乘
                                    (c) 张量并行                         (d) 流水线并行

                                     GPU0       GPU1             行分区             列分区

                                                 图 6 不同的并行切片模式        [28]

                  3.2.1.1    数据并行
                    在深度学习模型训练中, 数据并行是一种常见的多                 GPU  或分布式训练方式. 从概念上来说, 数据并行分布式
                 训练范式非常直观. 整个训练程序会运行多个训练脚本的副本, 每个副本执行以下流程: (a) 读取数据的一部分;
                 (b) 将其通过模型前向传播; (c) 计算模型更新         (梯度); (d) 在多个副本之间同步平均梯度; (e) 更新模型, 并不断重复
                 以上步骤. 数据并行方案不仅用于语言模型, 还广泛应用于其他模型, 如视觉模型的训练. 由于其简单易部署且容
                 易提升批尺寸的特点, 数据并行策略在大语言模型训练中仍被广泛沿用. 数据并行的实现通常有两种方式: 一种是
                 框架无关方式, 可支持多种框架          (如  PyTorch、TensorFlow); 另一种是框架注册钩子方式, 针对特定框架在运行时
                 通过注册钩子拦截执行, 以实现跨          GPU  的张量通信与聚合.
                    框架无关方式: Horovod    采用数据并行策略进行训练, 使用环状            All-Reduce 以减少峰值通信量, 并很好地适配
                                                                          2×(N −1) 次通信. 在通信过程中, 节点
                 底层硬件环状通信拓扑. 在每个          N  个节点中, 节点与其两个对等节点进行
                 发送和接收数据缓冲区的数据块. 在前            N −1 次迭代中, 接收到的值被加到节点缓冲区中的值上. 在接下来的                  N −1
                 次迭代中, 接收到的值替换节点缓冲区中的值. Patarasuk            等人  [47] 曾经分析过, 如果缓冲区足够大, 环状       All-Reduce
                 算法是带宽最优的.
                    框架注册钩子方式: PyTorch DDP      通过在反向传播过程中交错通信与计算, 进一步提高性能. 它通过将梯度张
   207   208   209   210   211   212   213   214   215   216   217