跳到主要内容

前馈网络(FFN)

MoE 与 FFN

介绍

主要是将 MLP 部分拆分成多个专家网络,在训练和推理的时候只需要选择对应的多个 token 专家网络进行计算即可。

通讯开销分析

专家网络间的通讯

在前向和后向网络中网络与网络之前都需要交换信息,此时就涉及到互相之间的信息交换。在 MoE 专家网络的机器间通讯时间高达整个执行时间的 47% 左右。

负载均衡

  • 让各个专家网络能够更均衡,机器不至于处于空闲状态

EP 并行方法

原理介绍

EP 通过将不同专家模块分散到多个计算单元(如 GPU)上,每个计算单元处理不同的专家,增大了每个专家的 batch size,使得计算资源的利用更加高效

TP 相比于 EP 的通讯时间上要少很多

  • TP 很难增大推理的 batch size,使得专家部分计算遇到内存瓶颈,且通讯量不会随 TP size 的增大而降低。而 EP 可以极大地扩展 batch size,让每个专家都能分到足够数量的 token,解决 memory access 的 bottleneck,同时降低了单个 GPU 的通讯开销。

DeepSeek 的 MoE 方案

DeepSeek 在大规模 MoE 模型推理中采用了基于 Alltoall 操作的 EP 方案。在 Prefill 阶段,采用(EP = 32)的并行策略,将 256 个专家分散到 32 个 GPU 上,以确保每个 GPU 具有足够大的 batch size,提高计算效率;在 Decode 阶段,采取(EP = 320)的并行方式,每个 GPU 仅保留一个专家,通过这种动态分配策略,周期性感知热点专家,并为其分配更多计算资源,显著提高了整体 GPU 资源利用率。

优化方案

训练

MoE 在训练过程中的通讯开销很大,字节的 COMET 方法提出了细粒度流水线重叠的方法来优化其中的均衡和通讯流程,通讯性能平均提升 1.97 倍。

计算和通讯时间重叠:当带宽限制的时候,就立马进行通讯(充分利用其通讯带宽)

推理

动态资源分配

  • Lina 系统会在推理时根据专家的热度,为热门专家分配更多资源,平衡各设备的工作负载,缓解通信量和带宽利用不均衡的问题

为什么ffn总是要升维再降维呢

增加模型的表达力:在d维度不能线性表达的数据,在4d维度就能线性可分了

降维相当于在做信息压缩,把高维空间的信息压缩在低维空间中

那为什么是4倍,而不是2,8倍呢

升维后relu会降低一半的信息损失

降维后理论上也会有部分信息丢失,经验值也是一半

不过理论上应该是一个经验值