Page 222 - 《软件学报》2026年第1期
P. 222
高彦杰 等: 大语言模型预训练系统关键技术综述 219
量就绪后开始异步执行 All-Reduce, 待所有梯度聚合完成后, 再进行权重的梯度下降更新. Zhuang 等人 [82] 提出了
一种完全解耦的训练方案, 使用延迟梯度来打破这些同步. 延迟梯度将模型分割成多个模块, 使用不同的进程独立
且异步地训练, 并引入梯度收缩来减少由延迟导致的陈旧梯度效应. 最终, 方法证明所提出的延迟梯度算法能确保
训练期间的统计收敛. 其中, TicTac [83] 通过定位底层计算模型消耗张量的顺序, 控制张量传输顺序, 从而确保近似
最优的计算和通信重叠. Romero 等人 [84] 提出使用缓存机制加速进程间的协调, 减少通信次数, 且该方法在数据并
行过程中只需通信一次. 此外, 通过将一批聚合通信原语进行分组, 控制通信缓冲区的尺寸及调度策略, 增加缓存
区的动态性, 减少阻塞等待, 防止死锁, 并加速通用并行框架中的控制平面通信流程.
3.3.4.3 通信数据量化
许多训练中采用的随机梯度下降优化算法的通信高效变体, 常常会使用梯度量化方案来降低通信数据量.
Faghri 等人 [85] 指出, 这些方案通常是基于规则的, 并在训练过程中保持不变. 然而, 模型梯度的统计特性在训练过
程中是变化的, 这是通过经验观察得出的. 受到这一观察的启发, 文献 [85] 引入了两种自适应量化方案, 即 ALQ
和 AMQ. 在这两种方案中, 通过有效计算参数统计及并行更新, 实现了对梯度的自适应压缩模式. Bian 等人 [86] 对
比了模型并行和数据并行下通信压缩算法的不同特征, 并评估了 3 类常见压缩算法: 基于剪枝、基于学习和基于
量化的算法. 文献 [86] 观察到, 基于学习的压缩方法更适合模型并行, 且超参数对压缩算法的收益有影响, 模型较
前层对压缩算法的敏感度更高.
3.3.4.4 卸载通信原语到自定义硬件
将通信计算卸载到特定的加速器或网络设备可以减少对 GPU 和 CPU 的中断并实现加速. 例如, BluesMPI [87] ,
ACCL [88] 和 BytePS [89] 等将通信原语卸载到 SmartNIC、FPGA 或空闲的 CPU 上. 而 SwitchML [90] 和 ATP [91] 则将聚
合通信卸载到网络交换机上, 从而加速深度学习中的 All-Reduce 通信. 尽管上述方法有些是为通用深度学习模型
提出的, 但它们同样适用于大型语言模型的训练. 这些方法可以以插件的形式与其他优化方法正交地集成到现有
预训练系统中, 从而在训练过程中实现更为高效的通信和计算.
3.4 可靠性
由于当前大型语言模型预训练系统和平台栈中存在多种缺陷, 从软件层到硬件层可能都存在问题, 这些问题
可能导致训练程序崩溃或挂起. 在本节中, 我们首先通过分析当前的缺陷状况, 了解预训练系统面临的问题及其可
靠性挑战. 随后, 将从检查点和弹性训练技术两个方面着手, 总结预训练系统如何通过这两项机制提高可靠性.
3.4.1 缺陷分析
为了更有效地训练和测试模型, 企业开发人员通常在共享的多租户平台上进行训练. 然而, 由于程序或平台故
障, 一些训练程序在执行一段时间后可能会失败, 导致执行时间过长, 从而降低开发生产力并浪费资源. 分析理解
程序、平台和硬件缺陷, 对后续系统设计有重要指导意义. Zhang 等人 [92] 对微软深度学习平台的作业失败进行了
分析, 收集了 4 960 个真实失败案例, 手动检查并将其分为 20 类. 针对 400 个故障样本, 确定了常见的根本原因和
修复方案. 为了更好地了解当前深度学习的测试和调试实践, 还进行了开发者访谈. 主要发现包括: 1) 48.0% 的故
障发生在与平台的交互中, 而不是在代码逻辑的执行上, 主要是由于本地和平台执行环境之间的差异; 2) 深度学习
特有的失败 (13.5%) 主要是由于不合适的模型或超参数以及 API 误用; 3) 当前的调试实践对于故障定位效率不
高, 在许多情况下, 开发者需要更适合大型语言模型的开发工具. 除了程序缺陷, 平台本身也存在多种质量问题, 这
不仅浪费计算资源, 而且严重降低深度学习和大型语言模型的开发效率. Gao 等人 [93] 对 Microsoft Platform-X 的质
量问题进行了全面实证研究, 检查了 360 个真实问题, 调查了这些问题的常见症状、根本原因和缓解措施. 常见症
状及原因包括: 28.33% 的质量问题由硬件故障 (GPU、网络和计算节点) 引起, 28.33% 由系统侧故障 (如系统缺陷、
服务中断等) 引起, 用户侧故障 (如程序 Bug、策略违规等) 占 43.34%. 超过 60% 的质量问题可以通过重新提交作
业 (34.72%) 或改进用户代码 (24.72%) 来缓解. 这些研究结果为提高深度学习平台服务质量提供了指导, 尤其在开
发和维护方面. 这些发现还引发了可能的研究方向和工具支持, 例如后文将介绍的缺陷分析、检查点与弹性训练.
由于作业执行需要排队且资源紧缺, 对作业或模型进行缺陷分析和程序分析可以提前规避无效执行, 从而提高研
发生产力. 通过高效的检查点机制和弹性训练, 可以防止硬件故障导致的作业挂起失效. 目前, 作业缺陷分析可以

