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

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


                  3.3.3    量化感知训练
                    模型量化是指将模型中的高比特数据类型替换为低比特数据类型, 并确保推理准确度的减少在可接受范围
                 内. 通过对张量数据进行量化, 可以降低显存开销和浮点运算量. 量化主要分为两种方式, 即量化感知训练和训练
                 后量化, 其中与预训练相关的是量化感知训练技术. 量化感知训练是在模型训练或微调阶段采用的一种方法. 在训
                 练过程中, 量化的优化目标被整合到模型训练中, 以减少量化精度损失. 例如, LLM-QAT                      [73]  考虑到难以获取足够
                 的训练数据, 采用预训练模型生成数据, 并通过知识蒸馏进一步量化权重、梯度以及                           KVCache. 该策略提高了吞
                 吐量并支持处理长序列. PeQA        [74] 和  QLoRA [75] 属于高效参数微调  (parameter-efficient fine-tuning, PEFT) 的范畴.
                 PEQA  分为两个阶段, 第    1  个阶段将每个全连接层的权重矩阵量化为低精度整型及标量向量; 第                     2  个阶段, 在标量
                 向量上对每个下游任务进行微调. QLORA            使用  4  比特量化将预训练模型反向传播到           LoRA (low-rank adaption) 模
                 型结构. 其设计了     4  比特的  Normal Float 类型  (NF4), 并证明其在理论上对正态分布权重最优. 通过量化常数等手
                 段实现双量化, 从而减少平均内存消耗, 并最终应用内存页面优化器来管理峰值内存消耗.
                  3.3.4    通信优化
                    随着大型语言模型尺寸的不断增大, 为了进行训练, 需采用分布式训练方式. 在分布式场景下, 性能瓶颈逐渐
                 由其他因素转向通信, 因此, 如何优化和减少通信开销逐渐成为提升系统性能的关键手段. Wang                            等人  [76] 对  Meta
                 公司集群中的深度学习负载进行了分析, 发现随着使用                  GPU  卡数的增加   (例如从   8  卡增加到  128  卡), 通信在整个
                 作业中所占比例从原来几乎可以忽略的程度上升到                  40%–60%. 为了应对这一问题, 通信算法优化、异步通信、通
                 信数据量化以及卸载通信原语到自定义硬件策略已成为常见的系统优化手段. 这些策略相互独立, 可结合应用, 共
                 同减少通信开销并提升系统性能.
                  3.3.4.1    通信算法优化
                    随着大型语言模型的数据并行或张量并行算法的应用, 通常会使用                       All-Reduce 通信优化. 通过采用    RingAll-
                                                                     2(N −1)K
                 Reduce, 可以将单个   GPU  总体的输入输出张量的总通信量降低为                      ,K  代表每个  GPU  需要通信的数据
                                                                        N
                 量,  N  代表节点数量. 这使得性能不再依赖于         GPU  的数量, 因此具有更好的性能和扩展性. 该方式通过只与邻居通
                 信, 更适合当前硬件供应商提供的异构计算资源, 例如在                NVIDIA GPU  节点内通过    NVLink  进行高速互联. 随着异
                 构硬件架构的增多, 大型模型的分布式方案变得更加灵活, 因此自动合成通信方案变得尤为重要. 拓扑感知的集体
                 通信算法合成也是一个重要的优化方向.
                    当前典型深度学习训练集群的拓扑特点: 节点内通过快速的                    NVLink  或  PCIe 互联, 节点间通过  InfiniBand  或
                 以太网互联. 节点间全连接, 通常采用胖树            (fat tree) 架构, 节点间带宽通常相同. 主机通常配置       1  块或多块网卡, 如
                 果网卡数量低于      GPU  数量, GPU  会竞争网卡带宽, 每个      GPU  设备有独立的发送和接收带宽. 由于当前算力基础
                 设施中   GPU  之间的互联方案多种多样, GPU        之间的拓扑也在一定程度上影响性能. 因此, 基于当前拓扑设计和合
                 成高效通信计划与代码, 对提升训练和推理性能非常有用.
                    Cowan  等人  [77] 设计了可编程的通信系统     MSCCLang, 提出了用于编写通信算法的领域特定语言和一个用于
                 将这些语言转换为底层代码的优化编译器. 在特定拓扑结构上合成的优化版本                          All-Reduce 和  AllToAll 相比基线
                 有  1.3–1.9  倍的加速. 以往的一些工作从拓扑感知的角度入手加速通信, 例如, BlueConnect             [78] 在云端或数据中心中
                 的层次网络拓扑结构下, 将单个          All-Reduce 操作分解为大量可并行的归约        (reduce scatter) 和全收集  (AllGather) 操
                 作, 利用延迟和带宽之间的权衡, 以适应各种网络配置. PLink              [79] 探测物理网络拓扑后, 利用拓扑中的局部性, 合成
                 和执行分层聚合, 同时可以演化执行计划以适应变化的网络条件. 另一些工作将通信算子建模为优化问题或约束
                                                [80]                  [81]
                 满足问题, 通过自动合成通信算法. Blink          利用装箱树, 而     Cai 等人  则利用约束求解器合成满足帕累托最优的
                 算法.
                  3.3.4.2    异步通信
                    近期的研究展示了在计算和通信中实现重叠具有良好的加速效果. 在使用反向传播训练模型时, 需要按顺序
                 传递激活和梯度, 为提升效率, 通信通常需要与计算同步进行. 在                  PyTorch DDP  中, 通过将张量分桶组合成一个批
                 次进行通信提升带宽利用效率. 在           PyTorch DDP  的数据并行实现中, 利用深度学习计算的特性, 等待一批梯度张
   216   217   218   219   220   221   222   223   224   225   226