模型稀疏化是未来大模型发展的趋势,其中包括:
为了克服稀疏化数据的影响,现有工作提出了权重压缩和梯度压缩工作。
现有工作主要集中在软件层面研究如何进行梯度压缩(例如参数调优,模型架构调优),但是会导致端侧工作量增加,从而抵消通信量/参数量减少带来的好处。
传统 Transformer 模型层包含 Multihead Self-Attention (MSA) 和 Feed Forward Network (FFN) 模块,MoE 模块替代传统 Transformer 中的 FFN 模块,包含 1 个 Router 和多个 FFN,其中的一个 FFN 被称为一个专家。
多个 Transformer 层组成一个大模型。根据 Transformer 层的功能可以区分成 Encoder 和 Decoder。
Encoder 通常为 MSA+FFN/MoE,Decoder 通常为 MSA+MLP(全联接层)。
随着专家数变多,专家会分散在不同设备上,因此提出专家并行(Expert Parallel, EP)。
Router 根据策略将每张卡的输入 token 路由到不同专家上。
例如 Top-k 策略将 token 分配给概率最高的 k 个专家。
专家并行需要在 EP 域不同的卡之间引入 All-to-All 通信,收集每个专家负责的token。根据收集和分配一共需要 2 次 All-to-All。
由于 All-to-All 通信需求均匀且多对多通信,每个专家具有相同的 capacity,多余的 token 会被丢弃,造成模型精度下降。
通信域: Router 在每一路 DP 上存在相同的副本,不同 DP 下同一 EP 域内的卡间通信。
单机无法处理超长输入序列,因此划分多个子序列给不同设备处理,称为序列并行 (Sequence Parallel, SP)。
SP 将 Layer Normalization 和 Dropout 进一步划分给不同设备上,相当于每个卡负责部分 Sequence 训练参数。
引入 Ring Self-Attention 模组代替原先 Self-Attention 模组,训练过程中需要交换各自的Query、Key、Value embeddings(All-to-All通信)。
通信内容:
- 前向传递:Attention 部分需要2次 ring-P2P,MLP部分被TP切割,需要新增Linear1前1次 All-gather,Linear2后1次 Reduce scatter。
- 反向传递:MLP部分1次 allgather和1次reduce scatter。Attention可以复用1次allreduce通信。
一些其他大模型训练相关的经典论文:
权重矩阵压缩多用于优化端侧内存读写,提高 cache 命中率,增加计算和访存的吞吐率。
MoE 模型训练引入了大量权重矩阵、Attention层的通信内容,这类稀疏通信内容如何优化还未被讨论。
针对稀疏权重压缩主要有结构化、半结构与非结构实现方式。
在分布式训练过程中,梯度通常用于数据并行阶段,不同节点进行全局更新的聚合操作。
现有工作聚焦如何设计通信、压缩策略,让稀疏梯度能够被高效聚合。
Distributed Training, LLM Training, Sparse Model — Mar 26, 2024