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, 从而提高

