混合专家模型 (Mixed of Experts ,MoEs)

1、稀疏混合专家模型 Sparse MoE
1、专家输出的加权求和
FSparseMoE(x;Θ;{Wi}i=1N)=∑i=1NG(x;Θ)ifi(x;Wi)F_{Sparse}^{MoE}(\\mathbf{x; \\Theta; \\{W_i\\}_{i=1}^{N}}) = \\sum_{i=1}^{N} \\mathcal{G}(\\mathbf{x; \\Theta})_i f_i(\\mathbf{x; W_i})FSparseMoE(x;Θ;{Wi}i=1N)=∑i=1NG(x;Θ)ifi(x;Wi)
x\\mathbf{x}x: 输入的特征向量(例如 Transformer 中的一个 Token)。
fi(x;Wi)f_i(\\mathbf{x; W_i})fi(x;Wi): 第 iii 个专家(即图中的 FNN1, FNN2…)的输出,
Wi\\mathbf{W_i}Wi 是该专家的参数。
G(x;Θ)i\\mathcal{G}(\\mathbf{x; \\Theta})_iG(x;Θ)i: 门控网络计算出的第 iii 个专家的权重(即图中的概率 ppp),Θ\\mathbf{\\Theta}Θ 是门控网络的参数。含义:最终的输出是所有专家输出的加权和。
注意,由于是 Sparse MoE,G\\mathcal{G}G 中大部分值为 0,因此求和实际上只发生在被激活的 KKK 个专家上,极大地节省了计算量。
2、门控概率的计算与噪声注入
G(x;Θ)i=softmax(TopK(g(x;Θ)+Rnoise,K))i\\mathcal{G}(\\mathbf{x; \\Theta})i = \\text{softmax}(\\text{TopK}(g(\\mathbf{x; \\Theta}) + \\mathcal{R}{noise}, K))_iG(x;Θ)i=softmax(TopK(g(x;Θ)+Rnoise,K))i
基础打分 g(x;Θ)g(\\mathbf{x; \\Theta})g(x;Θ):通常是一个简单的线性层计算输入 x\\mathbf{x}x 对每个专家的偏好得分。
注入噪声 Rnoise\\mathcal{R}_{noise}Rnoise:这是一个极其重要的训练技巧。如果不加噪声,模型在初期稍微偏好某个专家后,该专家会得到更多训练,变得更强,从而导致后续的 Token 越来越倾向于选择这个专家,最终引发 路由崩溃”(Routing Collapse)——少数专家累死,多数专家闲死。引入标准正态分布的噪声可以鼓励模型探索不同的专家,实现负载均衡(Load Balancing)。
Rnoise=ϵ⋅Softplus(x⋅Wnoise)\\mathcal{R}{noise} = \\epsilon \\cdot \\text{Softplus}(x \\cdot W{noise})Rnoise=ϵ⋅Softplus(x⋅Wnoise)
ϵ\\epsilonϵ 这是一个从标准正态分布 N(0,1)\\mathcal{N}(0, 1)N(0,1) 中随机采样的值
$W_{noise}$ 是一个专门用来控制噪声强度的权重矩阵
Softplus(a)=ln(1+ea)\\text{Softplus}(a) = \\ln(1 + e^a)Softplus(a)=ln(1+ea)
Softplus 的导数 Sigmoid
softmax\\text{softmax}softmax 归一化:将 Top-K 筛选后的得分转化为概率分布(和为1)。
3、Top-K 截断机制
Top-K(g(x;Θ),K)i={g(x;Θ)i,g(x;Θ)i的值属于前 K 项−∞,其他\\text{Top-K}(g(\\mathbf{x; \\Theta}), K)_i = \\begin{cases} g(\\mathbf{x; \\Theta})_i, & g(\\mathbf{x; \\Theta})_i \\text{的值属于前 K 项} \\\\ -\\infty, & \\text{其他} \\end{cases}Top-K(g(x;Θ),K)i={g(x;Θ)i,−∞,g(x;Θ)i的值属于前 K 项其他
含义:这是一个强制稀疏化的操作。保留得分排名前 KKK 的专家的原始得分,将落选的专家得分直接设为负无穷(−∞-\\infty−∞)。
2、稠密混合专家模型 Dense MoE
1、定义
稠密混合专家模型在前向计算过程中会激活所有参数,不能降低模型计算量。
FDenseMoE(x;Θ;{Wi}i=1N)=∑i=1NG(x;Θ)ifi(x;Wi)F_{Dense}^{MoE}(\\mathbf{x; \\Theta; \\{W_i\\}_{i=1}^{N}}) = \\sum_{i=1}^{N} \\mathcal{G}(\\mathbf{x; \\Theta})_i f_i(\\mathbf{x; W_i})FDenseMoE(x;Θ;{Wi}i=1N)=∑i=1NG(x;Θ)ifi(x;Wi)
G(x;Θ)i=softmax(g(x;Θ))i\\mathcal{G}(\\mathbf{x; \\Theta})i = \\text{softmax}(g(\\mathbf{x; \\Theta}) )_iG(x;Θ)i=softmax(g(x;Θ))i
2、Low-Rank Adaptation(LoRA)+ MoEs

在传统的 MoE(图左侧)中,“专家”就是庞大的前馈神经网络(FFN)。门控网络(Router)负责把数据分发给不同的 FFN。
但在 LoRAMoE(图右侧) 中,发生了一个极其巧妙的“偷梁换柱”:
这里的“专家”,不再是庞大的 FFN,而是变成了极其轻量级的 LoRA 模块(图中那个像沙漏一样的带火图标)。
• 原来的大模型 FFN:被打上了雪花 ❄️,完全冻结,变成了一个尽职尽责的“基座”。
• 新引入的多个 LoRA:被打上了火焰 🔥,它们是可训练的。这 NNN 个 LoRA 模块,就是这个架构里的 NNN 个“小专家”。
Yfinal=FFNfrozen(x)+∑i=1NG(x)i⋅LoRAi(x)Y_{\\text{final}} = \\text{FFN}{\\text{frozen}}(x) + \\sum_{i=1}^{N} \\mathcal{G}(x)_i \\cdot \\text{LoRA}_i(x)Yfinal=FFNfrozen(x)+∑i=1NG(x)i⋅LoRAi(x)
3、软混合专家模型 Soft MoE
1、先融合后计算
FSoftMoE(x;Θ;{Wi}i=1N)=fmerged(x;∑i=1NG(x;Θ)iWi)F_{Soft}^{MoE}(\\mathbf{x; \\Theta; \\{W_i\\}{i=1}^N}) = f{merged}\\left(\\mathbf{x}; \\sum_{i=1}^N \\mathcal{G}(\\mathbf{x; \\Theta})_i \\mathbf{W}_i\\right)FSoftMoE(x;Θ;{Wi}i=1N)=fmerged(x;∑i=1NG(x;Θ)iWi)
2、样例
【设定参数】
• 句子长度 L=2000L = 2000L=2000 (一篇中等长度的文章)
• 基础维度 d=1000d = 1000d=1000
• 中间维度 m=4000m = 4000m=4000
• 专家数量 N=8N = 8N=8
对手:传统的稠密专家模型 (Dense MoE)
• 做法:让 8 个专家,每个人都把这份 2000 字的文件处理一遍。
• 公式:N×(单次干活成本)N \\times (\\text{单次干活成本})N×(单次干活成本)
• 计算:8×(2000×4×1000×4000)8 \\times (2000 \\times 4 \\times 1000 \\times 4000)8×(2000×4×1000×4000)
• 总账:2560 亿次浮点运算 (256 GFLOPs)
主角:软混合专家模型 (Soft MoE)
• 做法:分为两步。第一步融合大脑,第二步用融合后的大脑处理文件。
• 公式:(融合成本)+(单次干活成本)(\\text{融合成本}) + (\\text{单次干活成本})(融合成本)+(单次干活成本)
• 具体计算:
1. 融合大脑:N×2×d×m=8×2×1000×4000=N \\times 2 \\times d \\times m = 8 \\times 2 \\times 1000 \\times 4000 =N×2×d×m=8×2×1000×4000= 0.64 亿次 (0.064 GFLOPs)
2. 处理文件:L×4×d×m=2000×4×1000×4000=L \\times 4 \\times d \\times m = 2000 \\times 4 \\times 1000 \\times 4000 =L×4×d×m=2000×4×1000×4000= 320 亿次 (32 GFLOPs)
• 总账:0.64 + 320 = 320.64 亿次浮点运算 (约 32 GFLOPs)


