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

208                                                        软件学报  2026  年第  37  卷第  1  期


                 能够实现较高的      GPU  利用率, 并且能够从单个主机扩展到非常大的集群. 同时, 利用                 JAX  和  XLA  编译器的强大
                 功能, 实现自动优化.
                    nnScaler [46] 是微软亚洲研究院开源的支持自动并行化大语言模型的框架, 其通过设计基本原语                     (例如: op-trans、
                 op-assign 和 op-order), 让开发者更加灵活定义并行策略搜索空间, 并支持自动并行策略和优化. 为避免搜索空间的
                 过度膨胀, nnScaler 在构建空间时允许对这些原语施加约束.
                    针对上述    4  种类型的框架, 我们在表      2  中总结了它们的优势、不足和适用场景.

                                                表 2 不同类型预训练系统对比

                 预训练系统类型                 优势                      不足                     适用场景
                             支持的模型种类丰富, 使用方式简单, 系统优化依赖于底层系统, 容 需要使用新模型. 需要定制新的模型
                  语言模型系统
                             API设计易于被社区采纳为标准             易与底层系统产生兼容性问题 结构
                                                                               使用简化的训练并行方案. 适合中等
                  单一并行策略     可以对单一策略进行深度优化               不能利用其他并行策略进一步         规模的模型, 数据并行等单一策略的
                  训练系统                                   提升扩展性
                                                                               扩展性和性能已经能够满足需求
                  混合并行策略     可以对常用的模型结构和硬件拓扑进 硬件拓扑和模型的变化需要重 模型参数量大, 需要综合使用多种并
                  训练系统       行深入且专门的优化                   新进行人工调优               行方案以满足扩展性需求
                             通用性强. 能够自动搜索并应用适应硬 无法支持定制的专有优化. 数
                  自动并行策略     件拓扑变化和模型变化的方案, 无需人 值异常常常源于系统层的并行                  硬件拓扑或模型结构变化多样, 且模
                  搜索训练系统                                                       型参数量大需要多种并行策略
                             工干预                         方案, 且难以调试

                  3.2   扩展性
                    随着大语言模型规模的增大, 模型更能够有效地捕捉语言的复杂性和上下文信息. 然而, 这也带来了对更大计
                 算资源和更高扩展性的需求, 以便有效地训练和部署这些大规模模型. 当前的技术趋势, 例如并行训练、张量重算
                 与卸载, 以及多专家混合等, 都能够有效支持模型不断增强的扩展性.
                  3.2.1    并行训练
                    目前, 大语言模型的预训练系统广泛支持多种并行优化策略. 常见的并行优化策略包括数据并行、全切片数
                 据并行、张量并行、流水线并行以及序列并行. 在表                 3  中, 我们对代表性的大语言模型系统的并行策略支持进行
                 了综合对比, 其中√代表支持, ×代表不支持. 一些库支持多种并行方案, 并能自动选择并行策略, 例如                            Alpa. 然而,
                 一些库由于历史原因, 在最初提出时可能仅支持部分并行化策略, 例如                     GPipe. 在表  3  中, 我们总结了第  3.1  节中训
                 练系统所支持的优化策略及其发布时间.

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

                     预训练系统        数据并行      全切片数据并行        张量并行      流水线并行       序列并行      多并行自动搜索
                    Transformers     √            √           √          √          ×           ×
                      LightSeq       √            √           ×          ×          √           ×
                     MindNLP         √            √           √          √          ×           ×
                    PyTorch DDP      √            ×           ×          ×          ×           ×
                      Horovod        √            ×           ×          ×          ×           ×
                    PyTorch FSDP     √            √           ×          ×          ×           ×
                     Angel-PTM       √            √           ×          ×          ×           ×
                      FairScale      √            √           √          √          ×           ×
                     Composer        √            √           √          √          ×           ×
                     DeepSpeed       √            √           √          √          √           ×
                    Megatron-LM      √            ×           √          √          √           ×
                   Megatron-LLaMA    √            √           √          √          √           ×
                     Colossal-AI     √            √           √          √          √           √
                     MegaScale       √            √           √          √          √           ×
                     PaddleNLP       √            √           √          √          √           ×
                       Alpa          √            √           √          √          ×           √
   206   207   208   209   210   211   212   213   214   215   216