Page 216 - 《软件学报》2026年第1期
P. 216
高彦杰 等: 大语言模型预训练系统关键技术综述 213
表 4 并行优化策略对比 (续)
并行方式 单设备计算时间复杂度 参数量空间复杂度 优点 不足
该策略适用于大型模型, 可以将
( ) 并行化过程中需要仔细划分模
N × D in × D out 模型的不同部分分配给不同的处
O +CommTime 型, 避免通信瓶颈. 并行方案需
张量 P O(D in × D out ) 理器. 该方法降低了单个GPU上 要根据模型结构进行定制化设
并行 CommTime 表示通信时间, 取决 的内存需求, 从而加速了计算过 计. 该方案引入了更复杂的通
于模型参数的划分方式 程. 该方案与其他切分方法彼此
正交、互不冲突, 可以配合使用 信和同步机制
模型需抽象出层次结构. 需要
精心协调不同阶段的计算与通
( )
N × D in × D out
O +PipeCommTime 信. 需合理划分模型结构, 以充
P 该方法提高了模型的训练速度,
流水线 PipeCommTime 表示流水线的 O(D in × D out ) 并实现了计算与通信的解耦. 该 分发挥流水线并行性的优势.
并行 需要处理流水线中的“气泡”问
时间, 需要协调不同阶段的计算 方法适用于层次较深的模型结构
和通信 题. 异步版本可能需要修改优
化器, 从而可能对模型精度产
生影响
( )
N × D in × D out 该方法适用于处理长序列的模型,
O +SeqCommTime 引入了额外的通信与同步成
序列 P O(D in × D out )× P 可将序列分配给不同处理器. 有 本. 长序列且配合稀疏注意力
并行 SeqCommTime 表示序列通信的 效缓解了处理长序列时的内存压
时间, 取决于序列的划分方式 力. 对模型结构无特定要求 机制使用, 才能显著提升性能
3.2.2 张量重算与卸载
检查点 (checkpoint) 是用于在训练阶段备份与恢复张量的一项技术. 一般而言, 检查点可分为两类: 第 1 类用
于优化显存使用, 通过释放激活张量并在需要时重新计算, 它被称为激活检查点 (activation checkpointing). 第 2 类
用于调试和防止权重丢失, 是用于备份模型权重的检查点.
针对第 1 类的激活检查点, Beaumont 等人 [56] 提出了一种实现方法. 其设计初衷是释放驻留在内存中的激活张
量, 并在需要时通过按需重算来恢复相应的张量. 该方法在前向传播阶段选择激活张量, 并在需要时重算以完成恢
复操作. Korthikanti 等人 [57] 的研究表明, 大多数激活检查点在恢复过程中的冗余计算的影响是可以避免的, 可以在
不增加计算负担的前提下有效减少内存消耗. 他们提出了两种新颖但非常简单的技术: 序列并行和激活张量的选
择性重计算. 这些策略与张量并行相结合, 几乎消除了对激活张量重新计算的影响.
张量内存卸载是一种有效降低 GPU 显存开销的方法, 类似于操作系统内存管理中的换页机制. 与重新计算不
同, 这种方法将激活或权重等卸载到主存或 NVMe 存储, 从而降低显存占用, 在有限资源条件下可训练更大规模
的模型. ZeRO-Infinity [58] 通过同时利用 CPU 主存和 NVMe 存储来卸载模型和激活张量, 在有限的 GPU 显存资源
上支持大规模模型. 此外, ZeRO-Infinity 还引入了以内存为中心的模型层级平铺优化技术, 能够支持对极大规模单
层的执行, 同时卸载其他层.
Yuan 等人 [59] 提出了一种综合考虑张量内存卸载和激活检查点两个因素的高效并行策略搜索方法. 对于张量
内存卸载, 该方法通过一种具备流水线并行感知能力的卸载算法, 尽量减少卸载对主机到设备带宽的影响. 同时,
利用计算与内存平衡的激活检查点算法, 在计算开销与内存占用之间进行帕累托最优选择, 从而优化激活检查点策略.
3.2.3 混合专家模型
随着大规模密集型张量语言模型在当前硬件资源约束下逐渐逼近其可扩展性上限, 混合专家模型 (mixture of
experts, MoE) [60] 因其层次稀疏性而成为关键的结构设计方向, 成为突破底层算力和基础架构限制的重要模型结构
之一. MoE 能够保持固定的计算成本, 将语言模型的参数规模扩展到数万亿.
MoE 层由一组 n 个“专家网络” E 1 ,...,E n 和一个“门控网络” G 组成, 门控网络的输出是一个稀疏的 n 维向量,
这些专家本身就是神经网络, 每个都有自己的参数. 每个专家通常接受相同维度的输入, 并生成相同维度的输出.
i
设 G(x) 和 E i (x) 分别为门控网络和第 个专家网络对给定输入 x 的输出. MoE 模块的输出 y 可以表示为如下形式:
n ∑
y = G(x) i E i (x).
i=1

