Home / 大语言模型 / Mixtral:用更多参数储存能力,用少数专家处理每个 token

084|Mixtral:用更多参数储存能力,用少数专家处理每个 token

返回目录 · 发展时间线

论文:Albert Q. Jiang 等,Mixtral of Experts,2024。采用论文首版;官方实现见代码仓库。论文是较短的模型报告,预训练数据总量、完整优化配置等未披露,不能把架构可运行误称为训练可完整重建。

图表来源:Albert Q. Jiang 等,2024,原文;CC BY 4.0。本篇展示做了图形区域裁切、PNG格式转换、按原图面板顺序拼合,图中数据与标签未改动。

先接住前作的问题

Switch Transformer用稀疏专家分离容量与活跃计算,本篇沿同一家族采用Top-2前馈路由。未解问题仍是额外容量如何在实际语言任务和设备调度中产生价值;DeepSeek-V3是另一套专家与系统配方,不能编成直接复制关系。

五个前置概念

五个前置概念:MoE用多个参数分支扩展容量;路由器按输入选择分支;活跃参数描述一次前向实际用到的参数;专家并行把不同专家分布到设备;多数投票解码用多次候选提高答案选择效果并增加推理成本。

一、问题设定:扩大专家容量时,怎样只让少数分支参与每token计算

总参数决定要存多少权重,活跃参数描述单个token经过哪些分支,运行显存还包含KV、激活和通信。Mixtral只在前馈部分扩展专家,并共享注意力等组件;需要分别核算容量、路径计算和系统成本。

论文给出的数量级是约 47B 总参数、约 13B 活跃参数。不是 8×7=568\times7=56B,因为没有复制八套完整注意力和嵌入;也不是 2×7=142\times7=14B 的精确活跃量,因为共享与专家组件的比例不同。

这是无环境交互的语言预训练及后续指令/偏好微调,不是机器人式在线强化学习。路由器选择的是内部计算分支,不能把它直接当作外部动作策略;专家输出是向量,不是完整自然语言答案。

与早期 MoE 论文的关系也很具体:Mixtral 沿用稀疏路由思想,报告其在开放权重、实用语言模型规模上的效果。它不是 MoE 的发明者。其意义在架构、能力和可部署实现的组合。

二、推导Top-2归一化与局部路由梯度

令当前 token 的隐藏向量为 xx,路由参数为 WgW_g。先计算 8 个分数,只保留最大的两个,再做 softmax:

g(x)=softmax⁡(Top2⁡(xWg)),y=∑i=18gi(x)Ei(x).g(x)=\operatorname{softmax}(\operatorname{Top2}(xW_g)),\qquad y=\sum_{i=1}^{8}g_i(x)E_i(x).

未被选中的 logits 视为负无穷,对应权重为零,所以无需计算这些专家。EiE_i 是独立参数的 SwiGLU 前馈网络;gig_i 是组合权重。被选专家不是每段对话固定一次,也不是按任务标题永久分配,而是随 token、层和上下文变化。

Top-2 之后的归一化,也决定梯度怎样分配

设路由 logits 为 ziz_i,选中的两个专家下标组成集合 SS。对于 i∈Si\in S,gi=ezi/∑j∈Sezjg_i=e^{z_i}/\sum_{j\in S}e^{z_j};未入选的权重为0。在所选集合不变的局部区域,有 ∂gi/∂zj=gi(1[i=j]−gj)\partial g_i/\partial z_j=g_i(\mathbf1[i=j]-g_j)。这里 1[i=j]\mathbf1[i=j] 在下标相等时为1,否则为0。训练不仅改变专家输出,也能通过两个专家之间的相对分数改变混合;但Top-2集合切换处不光滑,不能把这个局部导数当成对离散选择的完整可微证明。

原创教学例。 四个路由分数为 (2,1,0,−1)(2,1,0,-1),只取前两个时权重约为 (0.731,0.269)(0.731,0.269)。若两个专家输出分别是 (2,0)(2,0)、(0,4)(0,4),混合输出约为 (1.462,1.076)(1.462,1.076)。如果先对全部四项做softmax,再直接丢掉后两项而不重归一化,前两权重约为0.644、0.237,和只有0.881,输出尺度也变了;它不是论文写出的同一个算子。

这还解释路由图的阅读边界:选中频率描述哪些分支有机会接收梯度,但不能单独告诉我们每次权重大小、实际梯度方向或专家学到的语义。原文在不同语料子集观察路由比例相近,并不等于对每个token都会做相同计算。

SwiGLU 专家可抽象为

Ei(x)=Wo,i[SiLU⁡(Wa,ix)⊙(Wb,ix)].E_i(x)=W_{o,i}\left[\operatorname{SiLU}(W_{a,i}x)\odot(W_{b,i}x)\right].

这个形式把非线性门控与通道变换结合。不同专家有自己的矩阵,注意力子层仍负责 token 之间的交互;MoE 前馈子层在得到上下文化表示后逐 token 处理。

表1 的架构为 32 层、隐藏维度 4,096、32 个查询头、8 个 KV 头、头维度 128、专家中间维度 14,336、词表 32,000,支持 32,768 的稠密上下文。GQA 节省 KV,MoE 控制前馈活跃计算,它们的收益来自不同位置。

这段伪代码解释计算路径,不补写论文未报告的负载平衡损失、容量系数或 token 丢弃规则。MoE 训练常见某类技巧,不代表 Mixtral 报告明确采用了同一配置。

若专家分布在不同 GPU,输入要发到相应设备再取回,形成专家并行。某一批 token 集中选中少数专家时,设备负载可能失衡;如果各专家收到的 token 太少,矩阵运算也难以充分利用 GPU。稀疏 FLOPs 不自动转化为等比例墙钟收益。

指令版另外执行 SFT 和 DPO。二者改变模型行为,但论文没有给完整数据、超参数和模块消融,因此不能从指令成绩反推 DPO 独自贡献了多少。

自构算例。 假设一个模型共享部分有 3 个单位参数,每套专家跨层合计 5 个单位,则 8 专家总参数为 3+8×5=433+8\times5=43,Top-2 活跃量为 3+2×5=133+2\times5=13。这说明总量和活跃量如何分离,不是 Mixtral 的精确参数拆分。若全部专家常驻设备,43 个单位仍要存储;不能因为一次只算 13 就只准备 13 的权重内存。

专家合批后必须恢复token身份

把两条token分别送到专家时,设备内通常按专家重排了次序。返回后应先用dispatch记录还原原token位置,再按各自门值合并;若直接按返回顺序相加,输出张量形状可能仍正确,语义却串到别的token。检查可给每个token不同标记值,并对照不分发的单机实现。

教法联系:Lilian Weng的How to Train Really Large Models on Many GPUs?。算例为本文自构。

三、按专家合批分发token并返回原位置

再设两个 token 都选择专家 1、2,另两个选择专家 7、8:系统可以按专家把 token 合批。若一整批都选择专家 1,分布式设备可能一边拥堵一边空闲。有效部署需要看路由分布和硬件,而不只是 Top-k。

输入:token 序列和当前层隐藏状态
对每个 Transformer 层:
    用共享注意力处理上下文,获得逐 token 表示
    对每个 token 计算 8 个路由 logits
    选出 Top-2 专家,将两项权重归一化
    按专家分组/分发 token,批量运行对应 SwiGLU
    将专家输出送回原 token 位置并加权相加
    完成残差等常规层操作
语言模型头产生下一 token 分布
训练时:依据语言建模目标反向传播
输出:token 分布;每 token、每层仅激活两个专家

四、分别核对解码预算、长上下文与路由分布

先核对Top1与投票、5-shot等解码口径,再看路由图;接近均匀占比只说明频率,不证明专家学科分工。

项目 论文设置与未披露部分
预训练 多语言语料,训练上下文 32K;总 token、完整数据混合、训练步数和算力未报告
主基线 Mistral 7B、多个 LLaMA/Llama 2;作者用自己的管线重新评估
数学表2 GSM8K:8-shot、maj@8;MATH:4-shot、maj@4,不是单次贪心准确率
代码 HumanEval 0-shot;MBPP 3-shot,采用人工核验子集
表3 单独列出与 GPT-3.5 的比较,GSM8K 标注 5-shot;不能与表2 的 74.4 直接混算
多语言 法语、德语、西班牙语、意大利语的 ARC、HellaSwag、MMLU
长上下文 passkey 提取与 proof-pile 子集困惑度;没有覆盖所有长文推理类型
指令版 MT-Bench 与 2023-12-22 的 Arena 快照;并非当前排行榜
随机性与预算 未报告所有基准重复训练/评估的完整置信区间,也未给端到端硬件实测吞吐表

表2 的 MATH 28.4 与 GSM8K 74.4 尤其容易被误引,因为多数投票增加了推理计算。比较不同论文的结果时,模型名字只是必要条件之一,还要核对候选数量、示范、答案解析和测试子集。

证据一|表2:数学和代码强,但不是逐项胜出。 Mixtral 与 Llama 2 70B 的 HumanEval 为 40.2 对 29.3,MATH 为 28.4 对 13.8,GSM8K 为 74.4 对 69.6,均遵循本表口径。WinoGrande 则为 77.2 对 80.4,TriviaQA 为 71.5 对 73.0。应写成“多数基准相当或更强”,不能照摘要简化成所有任务都赢。

证据二|表3、表4:更完整地限定比较条件。 表3 的 5-shot GSM8K 为 Mixtral 58.4、GPT-3.5 57.1、Llama 2 70B 53.6;MT-Bench 则为 8.30 对 GPT-3.5 的 8.32。表4 的德语 MMLU 为 71.5 对 Llama 2 70B 的 64.2,相差 7.3 个百分点。多语言增益与上采样多语言数据同时发生,不能将全部提升归给专家结构。

证据三|图4:长上下文提取成功,不等于复杂长文理解解决。 Passkey 实验在所测位置和长度上达到 100%,proof-pile 困惑度随上下文增长下降。前者测定位并复述指定信息,后者测平均预测损失;都没有直接测跨许多证据的复杂归纳、冲突消解或错误来源识别。它们是有价值的长上下文证据,但不是无条件可靠性证明。 Passkey 的位置—长度检索与 proof-pile 困惑度是两个任务;专家分配图的虚线表示均匀占比1/8,接近虚线只能说明使用均衡。

Mixtral的长上下文Passkey提取准确率和proof-pile困惑度
原实验图摘引:Albert Q. Jiang 等,2024,图4,PDF第5页;核对原文。原版权保留。

证据四|图7、图8、表5:专家并没有显现简单的学科分工。 路由分布在 arXiv、PubMed、PhilPapers 等领域较接近,作者没有观察到明显的按主题分配。代码缩进和某些词的路由表现更像语法局部模式。表5 中 arXiv 第 15 层相邻 token 第一专家相同为 27.9%,随机基线 12.5%,支持局部性;但总体频率相似不能证明专家完全没有语义功能,仍需因果干预等更细分析。

Mixtral不同层对代码、数学和文本token的专家路由可视化
原文图形摘引:Albert Q. Jiang 等,2024,图8,PDF第8页;核对原文。

Mixtral三层中不同语料类型的专家选择比例
原文图形摘引:Albert Q. Jiang 等,2024,图7,PDF第7页;核对原文。

指令版 Arena 快照 Elo 1121,相比部分基线 1117 数字略高,但正文未给可在此核查的成对显著性分析。历史排名不能直接变成稳定优势,也不能同 MT-Bench 的模型评审分数混为一个“人类胜率”。

五、总权重、负载和披露不足仍限制复现

论文提供架构和权重入口,但训练配方披露程度有限,属于理解与复现之间的重要边界。

六、比较稀疏专家负载与系统协同的另一种配方

DeepSeek-V3提供负载偏置、细粒度专家与系统协同的平行发展。比较应把入选规则、权重归一、通信和训练监督逐项列开,不能把稀疏模型统一成Top-2的倍数游戏。

自测:能否避免 MoE 的三个常见误读

1. 为什么 8×7B 不是八个完整 7B 模型的集成?

答案:复制的是每层前馈专家,注意力等组件共享;每个 token 在每层由路由器选两个向量变换分支。系统没有生成八份完整答案再投票。因此总参数不是简单56B,活跃参数也不是简单14B。

2. 约13B活跃参数是否意味着与13B稠密模型相同显存和速度?

答案:不能。总专家权重仍约47B,常驻存储、缓存和路由通信都占资源;同一批次可能访问很多不同专家。活跃参数主要描述计算路径,实际速度还取决于批量、专家负载、内核和互联。

3. 为什么表2的GSM8K 74.4不能直接与表3的58.4比较出退步?

答案:二者评价协议不同,表2使用8-shot与maj@8,表3标注5-shot。示范和多候选聚合改变推理预算及答案选择。必须锁定同一设置后比较模型,否则只是把不同测量当作同一能力的变化。