Ch10 LLM架构

MoE 混合专家 (Mixture of Experts)

一句话理解

MoE 是一种”众人拾柴火焰高”的架构——模型包含多个”专家”子网络,但每次推理只激活其中一小部分。这让模型参数总量可以极大(万亿级),但实际计算量只增加很少。

零基础理解

一家医院有很多科室(专家):心内科、骨科、皮肤科。每个病人来了,分诊台(路由)根据症状决定去哪个科室——不需要所有科室的医生都来看这个病人。MoE 做的是同样的事:输入一个 token,路由器决定”这个 token 应该去找哪几个专家处理”,只有被选中的专家才被激活计算。

核心架构

MoE 层替代标准 FFN

在 Transformer 中,MoE 层替换了标准的前馈网络(FFN):

标准 Transformer 的 FFN:
  output = FFN(x) = W2 · ReLU(W1 · x)

MoE 层的 FFN:
  output = Σ g_i(x) · Expert_i(x)    (i=1..N 个专家)
  
  其中:
  - g_i(x) 是路由器输出的第 i 个专家的权重
  - Expert_i(x) 是第 i 个专家的前馈网络
  - 通常选择 Top-K 个专家,其余专家不计算

路由门控 (Router / Gate)

Router(x) = Softmax(TopK(x · W_gate))

其中:
- W_gate 是可学习的路由参数矩阵
- TopK 只保留最大的 K 个值,其余置为 0 再 Softmax
- 通常 K=2 (每个 token 发给 2 个专家)

路由器的输出决定”这个 token 该去找哪些专家”。

MoE 的关键设计

稀疏激活 (Sparse Activation)

对比维度稠密模型 (Dense)稀疏 MoE
每个 token 经过的参数量全部参数只有 Top-K 个专家的参数
总参数量中等(7B-405B)极大(8×7B=56B, 但每个 token 只激活 ~14B)
计算量 (FLOPs)与参数量成正比与激活参数量成正比,远小于总参数量
训练效率每个 token 计算所有参数每个 token 只计算部分参数
推理效率所有参数常驻内存只需加载激活的专家

负载均衡 (Load Balancing)

核心挑战:如果所有 token 都选择同一个专家,那个专家过载,其他专家闲置——MoE 退化为普通稠密模型。

解决方案:

策略方法代表模型
辅助损失 (Auxiliary Loss)在训练损失中加一项,惩罚专家负载不均衡Switch Transformer, GShard
专家容量 (Expert Capacity)限制每个专家最多处理多少 token,超出则丢弃GShard
随机路由偶尔随机选择专家,打破路由器的偏好固化多种实现
负载均衡损失Loss = 主任务损失 + λ × (专家使用率的方差)DeepSeek-V3

Top-K 选择

K 值效果计算量使用
K=1每次只激活 1 个专家最低Switch Transformer
K=2每次激活 2 个专家适中2026 年主流 (Mixtral, DeepSeek)
K>2每次激活多个专家较高特殊场景

2026 年 MoE 模型格局

模型总参数量激活参数量专家数Top-K发布年份特点
Switch Transformer1.6T~30B204812021首个大模型验证 MoE 有效性
GLaM1.2T~97B6422021Google 的 MoE 语言模型
Mixtral 8×7B46.7B12.9B822023开源 MoE 标杆
Mixtral 8×22B141B39B822024更大规模开源 MoE
DeepSeek-V2236B21B16062024细粒度专家 + 共享专家
DeepSeek-V3671B37B256820242024年最强开源模型
Qwen 2.5-MoE57B14.3B6482025阿里开源 MoE
DeepSeek-V4~1.2T~60B38482026最新旗舰 MoE

MoE 的优势与挑战

优势

优势说明
参数效率总参数多但激活参数少,训练成本低于同性能稠密模型
推理速度激活参数少,推理更快(Mixtral 8×7B 推理速度接近 7B 模型)
专家专业化不同专家自然学会了处理不同类型的问题(代码、数学、文学等)
扩展性增加专家数量即可扩展模型容量,计算量增长远小于参数增长

挑战

挑战说明缓解措施
负载不均衡某些专家过载,某些闲置辅助损失 + 专家容量
显存占用所有专家参数需常驻显存专家分片 + 量化
通信开销专家分布在多 GPU 时,路由需跨卡通信专家并行 + All-to-All 通信
训练不稳定路由器可能崩溃或模式坍塌辅助损失 + Z-loss 正则化
微调困难MoE 微调比稠密模型更容易过拟合专门的 MoE 微调策略

DeepSeek-MoE 创新

DeepSeek 在 MoE 方面做了两个关键创新:

1. 细粒度专家分割 (Fine-grained Expert Segmentation)

传统 MoE 每个专家和标准 FFN 一样大。DeepSeek 把每个专家切成更小的粒度——专家数量更多但每个专家更小,路由更灵活。

2. 共享专家 (Shared Experts)

除了路由选择的专家外,还有一组”共享专家”——所有 token 都经过共享专家处理。共享专家负责通用知识,路由专家负责专业化知识。

DeepSeek-MoE 输出 = Σ(路由专家输出) + 共享专家输出

相关笔记

来源

关联12

知识图谱

局部图谱 · 点节点跳转