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

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


                 相关性能优化原生支持较少, 使得开发者难以快速使用深度学习框架直接编写高效的训练程序, 更多的面向大语
                 言模型的框架和系统被设计、开源和广泛采用. 其中, 以                   PyTorch  为后端的框架更为广泛, 例如, DeepSpeed,
                 Megatron-LM  等系统, Google 也开源了构建于    TensorFlow  之上的  MaxText [30] . 本文将大语言模型系统根据其所在
                 层次和支持的并行策略特点分为以下             4  类.
                    1) 语言模型系统. 这类系统的设计目标是支持如 GPT、BERT 等最新的语言模型结构. 在系统优化方面, 这些
                 框架通常支持高效的计算内核实现. 其底层部署通常通过集成第                      2  类、第  3  类和第  4  类系统来实现所需的并行
                 策略.
                    Transformers 库由  Hugging Face 开源并提供了数千个预训练大语言模型, 也支持不同模态的任务, 包括文本、
                 视觉和音频. Transformers 提供  API, 可快速下载和使用这些预训练模型, 并在自己的数据集上进行微调, 然后在模
                 型中心与社区共享. 同时, 每个用于定义模型架构的 Python 模块都是完全独立的, 适合开展高效的研究实验.
                 Transformers 由当前最流行的   3  个深度学习库    (JAX [31] 、PyTorch  和  TensorFlow) 提供支持, 可实现无缝集成. 它们
                 之间具有无缝集成. 在一个库中训练模型后, 可轻松在另一个库中加载并进行推断.
                    LightSeq [32]  是一个基于 CUDA 实现的高性能序列处理与生成的训练库. 它专为如 BERT、GPT、Transformer
                 等的语言模型的高效计算而设计, 支持机器翻译、文本生成及其他序列相关任务. 该库构建于 CUDA 官方库
                 cuBLAS 等之上, 并结合了专门为 Transformer 模型系列设计并优化的自定义内核函数. 除了模型组件外, LightSeq
                 还集成了其他辅助功能.
                    MindNLP [33] 是华为研发的基于 MindSpore 的开源语言模型库, 包含多种常见的 NLP 模型, 如 LLaMA、GLM、
                 RWKV 等, 帮助研究人员与开发者更加便捷高效地构建和训练模型. MindNLP 提供类似 Transformers 的接口, 其
                 主分支与 MindSpore 主分支保持兼容. 它提供多种可配置组件, 便于自定义模型. 简洁易用的训练引擎简化了复杂
                 的训练流程, 并支持 Trainer 和 Evaluator 接口, 方便模型的训练与评估.
                    2) 单一并行策略训练系统. 这类系统仅支持一种类型的并行策略, 例如 Horovod、PyTorch DDP 仅支持数据
                 并行, GPipe 仅支持流水线并行, PyTorch FSDP    [34] 则仅支持 FSDP 策略. 这种实现方式能够在机制上对特定并行策
                 略进行优化, 例如在数据并行中实现反向传播阶段的分桶、异步通信以及计算与通信的重叠.
                    PyTorch DDP  在模块级别实现了多进程或多机数据并行. 在执行 DDP 应用程序时, 会启动多个进程, 并为每
                 个进程创建一个单独的 DDP 实例. DDP 利用 torch.distributed 包中的集体通信来同步梯度和缓冲区. 具体而言,
                 DDP 为 model.parameters() 中的每个参数注册一个自动微分钩子          (autograd hook, 用于反向传播). 当计算梯度时,
                 该钩子会被触发, 从而启动跨进程的梯度同步操作.
                    Horovod  是一个支持   TensorFlow、PyTorch  等框架的分布式数据并行训练框架, 其设计为框架无关               (agnostic),
                 即不绑定具体框架, 其内部通过 RingAll-Reduce、张量融合通信等方式加速训练过程.
                    PyTorch FSDP  在  PyTorch 1.11  中发布. 其设计初衷是由于分布式数据并行        (distributed data parallel, DDP) 训
                 练中, 每个进程拥有模型的一个副本, 造成内存冗余和浪费, 且需要模型能够放入单                         GPU, 这无法支撑更大规模模
                 型训练. FSDP  是一种优化版的数据并行, 通过在           DDP  进程之间分片模型参数、优化器状态和梯度来实现, 其不
                 保留模型副本, 需要使用时按需从所在节点进程拷贝到本地. 在使用                     FSDP  进行训练时, 与在    DDP  中跨所有工作
                 器进行训练相比, GPU      内存占用更小. 这使得通过允许更大的模型或批次大小适应设备, 可以实现对一些非常庞
                 大模型的训练. 但这也伴随着增加的通信量成本, 其通过内部优化, 如重叠通信和计算, 有助于减少额外增加的通
                 信开销.
                    Angel-PTM [35]  是由腾讯设计开发的支持类似       ZeRO、FSDP  封层内存的大模型训练框架. 它通过页抽象实现
                 细粒度的内存管理, 并协调计算、数据迁移和通信的统一调度方法. 它还支持通过使用                           SSD  存储进行极端的模型
                 扩展, 并实现无锁更新以解决         SSD I/O  带宽瓶颈.
                    FairScale [36] 是由  Meta 开发的一个扩展库, 专注于高性能和大规模训练, 以         PyTorch  的扩展形式实现. 该库的
                 设计理念基于     3  个基本原则: 可用性、模块化和性能. 首先, 它的           API 强调易于理解和使用, 使用户能够轻松地掌
                 握  FairScale 的功能. 其次, FairScale 注重模块化, 支持在用户的训练循环中无缝融合多个             FairScale API, 从而提高
   204   205   206   207   208   209   210   211   212   213   214