混合专家模型(MOE)

搜索文档
万字解析DeepSeek MOE架构!
自动驾驶之心· 2025-08-14 23:33
MOE架构基本原理 - MOE全称为混合专家模型 核心思想是使用多个专家FFN替代原Transformer架构中的前馈层 每个token会选择top-K个专家进行前向传递[2][4][6] - MOE层由路由器(门控和选择器)和n个专家FFN组成 路由器通过softmax操作选择不同专家的权重 选择器确定top-K专家[6] - 在Switch Transformers中采用top-K=1策略 主要考虑专家并行方案时的通信 计算和存储效率平衡[9][10][14] - 引入容量因子概念 专家容量=(总token数/专家数量)×容量因子 用于控制每个专家处理的token数量 防止溢出或资源浪费[13][18] Switch Transformers优化方案 - 采用简单稀疏路由和高效稀疏路由两种方案 简单稀疏路由针对单个token选择专家 高效稀疏路由针对专家并行设计[7] - 负载不均衡问题通过可微的负载均衡辅助损失函数解决 使token在专家分布上尽可能均匀[17][20] - 专家容量静态分配可能导致溢出或浪费 动态计算时需要平衡容量因子设置[15][16] DeepSeek V1架构创新 - 提出细粒度专家划分策略 通过拆分FFN中间隐藏维度增加专家数量 在保持参数总量不变情况下提升专家专业化程度[22][25] - 引入共享专家分离机制 设置特定共享专家始终激活 用于捕捉通用知识 减少其他路由专家间的冗余[24][26] - MOE层输出由三部分组成:共享专家输出 Top-K路由专家输出和残差连接[30] - 设计专家级别和设备级别双重负载均衡损失函数 解决训练不充分和计算瓶颈问题[32][35] DeepSeek V2优化重点 - 实施设备受限路由策略 将每个token的激活专家所在GPU设备数量限制为3个 显著降低通信开销[37] - 新增通信负载均衡损失函数 优化设备间token分配均衡性[38][39] - 采用token丢弃策略 对超过专家容量的token按分值降序丢弃 仅影响当前MOE层计算[42] DeepSeek V3技术演进 - 将门控函数从SoftMax改为Sigmoid 可能出于降低计算复杂度考虑 特别在专家数量增至256个时更明显[44][45] - 弃用所有辅助负载均衡损失 引入可学习偏置项bi 通过动态调整偏置值实现负载均衡[46][47] - 新增序列级别辅助损失函数 防止单个序列内出现极端不平衡情况[49][50] - 完全取消token丢弃策略 通过偏置项和序列级损失实现良好负载均衡[52] MOE架构发展脉络 - MOE架构早在1991年就已提出 但直到2023年底Mixtral 8*7B模型发布后才受到广泛关注[2] - 国内Qwen和MiniMax等公司也推出MOE模型 但架构实现相对DeepSeek更简单[3] - DeepSeek从V1到V3持续优化负载均衡和通信效率 体现对高效计算的一贯追求[36][43] - MOE模型特别适合云计算并行推理场景 在AI模型中的地位日益重要[3]