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

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


                  3.4.3.1    部署层控制
                              [106]
                    TorchElastic  是  PyTorch  官方提供的弹性解决方案, 主要对节点成员资格变更时的故障进行了建模. 当节点
                 发生故障时, 故障被抽象为缩小规模事件; 当故障节点被调度器替换时, 则抽象为向上扩展事件. 该工具在数据并
                 行方面表现较好, 且对于容错作业和弹性作业, 可以配置重新启动的次数. DLRover                    [107] 是一个分布式开源深度学习
                 框架, 它可以自动配置深度学习作业的初始资源, 并在运行时动态调整作业资源, 以获得更好的性能. 借助其弹性
                 能力, 当检测到性能问题或作业因故障或驱逐而失败时, DLRover 能够有效调整作业资源. 它通过对作业中所有工
                 作者进程的吞吐量       R  进行建模, 将整个执行计划抽象为最大化吞吐量              R  的优化问题  [107] :

                                                N w
                                                ∑              B
                                             R =                            ,
                                                        W compute   W update
                                                i=0 t IO +      +
                                                      r ·min(w i , ˆw)  r ·min(s total , ˆs)
                 其中,  B 表示批尺寸,   N w  表示作业中的工作者数量,      R 会随着   N w ,w,S total  的增加而增长.  T IO  代表读取和预处理一个
                 批次数据的时间, 以及传输权重和梯度的通信时间.                w i  表示配置的  CPU  核心,   ˆ w 表示实际使用的  CPU  核心,  r  表
                 示  CPU  计算容量.  W compute  代表前向和反向计算梯度的计算量,       W update  代表更新参数的运算量,    s total  和   分别代表
                                                                                                ˆ s
                 参数更新阶段的      CPU  核心数量和实际使用的       CPU  核心数量. 然而, 由于一批作业只能共享集群资源, 并受到核心
                 最大计算容量等约束的限制, 整个问题在考虑这些约束后, 演变为一个非线性整数规划问题, 并且被认为是                                 NP  困

                 难的. AntMan [108] 通过充分利用闲置的    GPU  资源, 实现了在共享的      GPU  上同时运行多个作业, 从而提高         GPU  利
                 用率. 该方法充分利用了深度学习训练的独特特性, 并在深度学习框架内引入了内存和计算的动态扩展机制.
                  3.4.3.2    运行时插桩
                    对于云服务而言, 通过提高深度学习工作负载的                GPU  的高利用率来降低成本至关重要. Singularity      [109] 提供了
                 全球分布式调度服务, 用于高效、可靠地执行深度学习训练和推理工作负载. Singularity                      的核心是工作负载感知
                 调度程序, 能够在加速器       (例如  GPU、FPGA) 集群中透明地进行抢占和弹性扩展深度学习工作负载, 从而提高利
                 用率, 而不会影响其正确性或性能. 其机制是透明的, 通过对                 CUDA  和驱动层接口的插桩, 用户无需修改代码, 也
                 不需要使用可能限制灵活性的自定义库. 此外, 该方法通过提供透明的检查点机制来增强深度学习工作负载的可
                 靠性. 该方法与模型架构无关, 支持多种并行策略              (例如数据并行、流水并行、模型并行). 表            6  总结了不同类型弹
                 性训练方案的优势、不足以及适用场景.

                                                   表 6 弹性训练方案对比

                   检查点类型               优势                        不足                      适用场景
                             可以理解模型结构和并行方案减           由于被绑定到特定系统, 该方案的通           该方案适用于特定的框架或固
                   部署层控制
                             少备份冗余数据                  用性受到限制                      定的部署平台
                                                      无法理解模型结构和并行方案可能备
                   运行时插桩     适用于各种上层系统框架              份冗余数据. 底层硬件和驱动层限制           平台系统适合提供此种类型的
                                                                                  方案进行作业调度或作业容错
                                                      造成实现困难

                  3.5   小 结
                    随着大型语言模型训练集群规模的增长和训练时间的延长, 训练过程中遇到硬件故障的概率随之增加. 因此,
                 总结了提升大语言模型预训练系统可靠性的措施, 包括及早发现故障、快速诊断问题, 并通过有效的容错机制、
                 检查点设置和快速弹性恢复, 确保预训练系统在出现故障时能够及时恢复, 从而提高整体可靠性.
                  4   大语言模型预训练系统面临的挑战与应对

                    尽管大语言模型在社会各界引起了广泛关注, 但当前的大语言模型预训练系统仍面临诸多问题和挑战. 这些
                 挑战包括模型本身的特性、资源的限制、技术的快速发展, 以及系统复杂性增加所带来的缺陷问题. 本节将对上
                 述问题和挑战进行系统梳理.
   220   221   222   223   224   225   226   227   228   229   230