本文译自 Jiang、Sablayrolles、Roux 等人的 Mixtral of Experts1,Mistral AI,2024 年 1 月 8 日提交于 arXiv,13 页 10 图 5 表。原文标题是拿 Mixture of Experts 玩的谐音。这里是全文翻译,覆盖正文六节与附录的两张图,小节标号与原文一致;References 一节不译,正文引用走脚注。

我们介绍 Mixtral 8x7B,一个稀疏专家混合(Sparse Mixture of Experts,SMoE)语言模型。Mixtral 的架构和 Mistral 7B 相同,区别在于每一层由 8 个 feedforward 块(即专家)组成。在每一层、对每个 token,一个 router 网络选出两个专家来处理当前状态并合并它们的输出。尽管每个 token 只看到两个专家,被选中的专家在每个时间步都可以不同。于是每个 token 能接触到 47B 参数,但推理时只用到 13B 激活参数。Mixtral 用 32k token 的上下文长度训练,在我们评测的所有 benchmark 上都优于或持平 Llama 2 70B 和 GPT-3.5。特别地,Mixtral 在数学、代码生成和多语言 benchmark 上大幅优于 Llama 2 70B。我们还提供一个微调过、能遵循指令的模型 Mixtral 8x7B – Instruct,它在人类评测 benchmark 上超过了 GPT-3.5 Turbo、Claude-2.1、Gemini Pro 和 Llama 2 70B – chat 模型。基座模型和 instruct 模型都以 Apache 2.0 许可发布。代码在 mistral-src2,说明见项目主页3

1 引言

本文我们介绍 Mixtral 8x7B,一个开放权重、以 Apache 2.0 许可发布的稀疏专家混合模型(SMoE)。Mixtral 在大多数 benchmark 上优于 Llama 2 70B 和 GPT-3.5。因为它对每个 token 只用到自身参数的一个子集,Mixtral 在小 batch size 下有更快的推理速度,在大 batch size 下有更高的吞吐。

Mixtral 是一个稀疏专家混合网络。它是 decoder-only 模型,其中的 feedforward 块从 8 组各不相同的参数里做挑选。在每一层、对每个 token,一个 router 网络从这些组里选两组(即「专家」)来处理这个 token,并把它们的输出相加合并。这项技术在控制成本和延迟的同时增加了模型的参数量,因为模型对每个 token 只用到全部参数中的一小部分。

Mixtral 用多语言数据、32k token 的上下文长度预训练。在若干 benchmark 上,它的表现或持平或超过 Llama 2 70B 和 GPT-3.5。特别地,Mixtral 在数学、代码生成,以及需要多语言理解的任务上展现出更强的能力,在这些领域显著优于 Llama 2 70B。实验表明,Mixtral 能够成功地从它 32k token 的上下文窗口里检索信息,无论序列长度多长、信息位于序列的哪个位置。

我们还给出 Mixtral 8x7B – Instruct,一个用监督微调和 Direct Preference Optimization4 微调出来的、遵循指令的对话模型。在人类评测 benchmark 上,它的表现明显超过 GPT-3.5 Turbo、Claude-2.1、Gemini Pro 和 Llama 2 70B – chat 模型。Mixtral – Instruct 也表现出更少的偏见,以及在 BBQ、BOLD 这类 benchmark 上更平衡的情感倾向。

我们以 Apache 2.0 许可发布 Mixtral 8x7B 和 Mixtral 8x7B – Instruct3,可免费用于学术和商业用途,确保广泛的可获取性以及应用于各种场景的潜力。为了让社区能用一套完全开源的技术栈运行 Mixtral,我们向 vLLM 项目提交了改动,它集成了 Megablocks 的 CUDA kernel 来做高效推理。Skypilot 也支持把 vLLM 端点部署到云上的任意实例。

2 架构细节

Mixtral 基于 transformer 架构5,采用和 Mistral 7B6 所描述的相同的改动,但有两处显著的例外:Mixtral 支持 32k token 的完全 dense 上下文长度,而且 feedforward 块被换成了 Mixture-of-Expert 层(§2.1)。模型的架构参数汇总在 Table 1。

Table 1:模型架构

参数 取值
dim 4096
n_layers 32
head_dim 128
hidden_dim 14336
n_heads 32
n_kv_heads 8
context_len 32768
vocab_size 32000
num_experts 8
top_k_experts 2

2.1 Sparse Mixture of Experts

我们对 Mixture of Experts 层做一个简要的概述(Figure 1)。更深入的综述见 Fedus 等人的工作7

Figure 1:Mixture of Experts 层。每个输入向量由一个 router 分配给 8 个专家中的 2 个。该层的输出是被选中的两个专家输出的加权和。在 Mixtral 里,一个专家就是标准 transformer 架构里那样的一个标准 feedforward 块
Figure 1:Mixture of Experts 层。每个输入向量由一个 router 分配给 8 个专家中的 2 个。该层的输出是被选中的两个专家输出的加权和。在 Mixtral 里,一个专家就是标准 transformer 架构里那样的一个标准 feedforward 块

对给定输入 $x$,MoE 模块的输出由各专家网络输出的加权和决定,权重由 gating network 的输出给出。也就是说,给定 $n$ 个专家网络 $\{E_0, E_i, ..., E_{n-1}\}$,专家层的输出为:

$$\sum_{i=0}^{n-1} G(x)_i \cdot E_i(x).$$

这里 $G(x)_i$ 表示 gating network 对第 $i$ 个专家给出的 $n$ 维输出,$E_i(x)$ 是第 $i$ 个专家网络的输出。如果 gating 向量是稀疏的,我们就可以跳过那些 gate 为零的专家、不去计算它们的输出。实现 $G(x)$ 有多种可选的做法,但一种简单又好用的实现是对一个线性层的 Top-K logits 取 softmax8。我们用

$$G(x) := \text{Softmax}(\text{TopK}(x \cdot W_g)),$$

其中当 $\ell_i$ 属于 logits $\ell \in \mathbb{R}^n$ 的前 $K$ 个坐标时 $(\text{TopK}(\ell))_i := \ell_i$,否则 $(\text{TopK}(\ell))_i := -\infty$。$K$ 的取值——每个 token 用到的专家数——是一个调节处理每个 token 所用算力的超参数。如果保持 $K$ 不变而增大 $n$,就能在计算成本实际上保持不变的前提下增加模型的参数量。这引出了对两个参数量的区分:模型的总参数量(通常称为稀疏参数量)随 $n$ 增长,而处理单个 token 所用的参数量(称为激活参数量)随 $K$ 增长,上限是 $n$。

MoE 层可以借助高性能的专用 kernel 在单张 GPU 上高效运行。比如 Megablocks9 把 MoE 层的 feed-forward network(FFN)运算表达成大的稀疏矩阵乘法,显著提升了执行速度,并且天然地处理了不同专家被分到的 token 数量不等的情况。此外,MoE 层还可以通过标准的模型并行技术、以及一种叫做 Expert Parallelism(EP)8 的特殊切分策略分布到多张 GPU 上。在 MoE 层执行期间,要交给某个特定专家处理的 token 被路由到对应的 GPU 上处理,专家的输出再返回到原来的 token 位置。注意 EP 带来了负载均衡上的挑战,因为必须把工作量均匀地分布到各 GPU 上,以免个别 GPU 过载或撞上算力瓶颈。

在 Transformer 模型里,MoE 层按 token 独立地施加,替换掉 transformer 块中的 feed-forward(FFN)子块。对 Mixtral,我们用和 SwiGLU 相同的架构作为专家函数 $E_i(x)$,并设 $K=2$。这意味着每个 token 都被路由到两个权重不同的 SwiGLU 子块。把这些放在一起,对输入 token $x$ 的输出 $y$ 计算为:

$$y = \sum_{i=0}^{n-1} \text{Softmax}(\text{Top2}(x \cdot W_g))_i \cdot \text{SwiGLU}_i(x).$$

这个表述和 GShard 架构10类似,区别在于我们把所有 FFN 子块都换成了 MoE 层,而 GShard 是每隔一个块换一次;另外 GShard 对分给每个 token 的第二个专家用了更复杂的 gating 策略。

3 结果

我们把 Mixtral 和 Llama 做对比,并用我们自己的评测流程重跑了所有 benchmark,以保证比较是公平的。我们在下面这些类别的大量任务上度量表现:

  • Commonsense Reasoning(0-shot):Hellaswag、Winogrande、PIQA、SIQA、OpenbookQA、ARC-Easy、ARC-Challenge、CommonsenseQA
  • World Knowledge(5-shot):NaturalQuestions、TriviaQA
  • Reading Comprehension(0-shot):BoolQ、QuAC
  • Math:GSM8K(8-shot,取 maj@8)和 MATH(4-shot,取 maj@4)
  • Code:Humaneval(0-shot)和 MBPP(3-shot)
  • 流行的聚合结果:MMLU(5-shot)、BBH(3-shot)和 AGI Eval(3–5 shot,只算英文多选题)

Mixtral、Mistral 7B 以及 Llama 2 7B/13B/70B 和 Llama 1 34B11 的详细结果报在 Table 2。Figure 2 在不同类别上比较了 Mixtral 与 Llama 各模型的表现。Mixtral 在大多数指标上都超过 Llama 2 70B。特别地,Mixtral 在代码和数学 benchmark 上表现更优。

Table 2:Mixtral 与 Llama 的对比。Mixtral 在几乎所有流行 benchmark 上都优于或持平 Llama 2 70B 的表现,而推理时用的激活参数少 5 倍。

模型 激活参数 MMLU HellaS WinoG PIQA Arc-e Arc-c NQ TriQA HumanE MBPP Math GSM8K
LLaMA 2 7B 7B 44.4% 77.1% 69.5% 77.9% 68.7% 43.2% 17.5% 56.6% 11.6% 26.1% 3.9% 16.0%
LLaMA 2 13B 13B 55.6% 80.7% 72.9% 80.8% 75.2% 48.8% 16.7% 64.0% 18.9% 35.4% 6.0% 34.3%
LLaMA 1 33B 33B 56.8% 83.7% 76.2% 82.2% 79.6% 54.4% 24.1% 68.5% 25.0% 40.9% 8.4% 44.1%
LLaMA 2 70B 70B 69.9% 85.4% 80.4% 82.6% 79.9% 56.5% 25.4% 73.0% 29.3% 49.8% 13.8% 69.6%
Mistral 7B 7B 62.5% 81.0% 74.2% 82.2% 80.5% 54.9% 23.2% 62.5% 26.2% 50.2% 12.7% 50.0%
Mixtral 8x7B 13B 70.6% 84.4% 77.2% 83.6% 83.1% 59.7% 30.6% 71.5% 40.2% 60.7% 28.4% 74.4%

Figure 2:Mixtral 与不同 Llama 模型在一大批 benchmark 上的表现。左图是 MMLU、Knowledge、Reasoning、Comprehension 四组,右图是 AGI Eval、Math、BBH、Code 四组,每组六根柱子依次为 Mistral 7B、Mixtral 8x7B、LLaMA 2 7B、LLaMA 2 13B、LLaMA 1 34B、LLaMA 2 70B。所有模型的所有指标都用我们的评测流程重新评了一遍,以保证比较准确。Mixtral 在所有 benchmark 上都优于或持平 Llama 2 70B。特别地,它在数学和代码生成上遥遥领先
Figure 2:Mixtral 与不同 Llama 模型在一大批 benchmark 上的表现。左图是 MMLU、Knowledge、Reasoning、Comprehension 四组,右图是 AGI Eval、Math、BBH、Code 四组,每组六根柱子依次为 Mistral 7B、Mixtral 8x7B、LLaMA 2 7B、LLaMA 2 13B、LLaMA 1 34B、LLaMA 2 70B。所有模型的所有指标都用我们的评测流程重新评了一遍,以保证比较准确。Mixtral 在所有 benchmark 上都优于或持平 Llama 2 70B。特别地,它在数学和代码生成上遥遥领先

规模与效率。我们把自己的表现和 Llama 2 系列做对比,想搞清楚 Mixtral 模型在成本—性能这个谱系上的效率(见 Figure 3)。作为一个稀疏专家混合模型,Mixtral 对每个 token 只用 13B 激活参数。在激活参数少 5 倍的情况下,Mixtral 能在大多数类别上优于 Llama 2 70B。

Figure 3:Mistral(7B/8x7B)对比 Llama 2(7B/13B/70B)在 MMLU、常识推理、世界知识与阅读理解、数学和代码上的结果。六张子图的横轴都是激活参数量(7B/13B/34B/70B),橙色方块是 Mistral 系列,红色圆点是 Llama 2 系列。Mixtral 在所有 benchmark 上都大幅优于 Llama 2 70B,只有阅读理解 benchmark 例外,而它用的激活参数少 5 倍。它在代码和数学上也遥遥领先于 Llama 2 70B
Figure 3:Mistral(7B/8x7B)对比 Llama 2(7B/13B/70B)在 MMLU、常识推理、世界知识与阅读理解、数学和代码上的结果。六张子图的横轴都是激活参数量(7B/13B/34B/70B),橙色方块是 Mistral 系列,红色圆点是 Llama 2 系列。Mixtral 在所有 benchmark 上都大幅优于 Llama 2 70B,只有阅读理解 benchmark 例外,而它用的激活参数少 5 倍。它在代码和数学上也遥遥领先于 Llama 2 70B

注意这个分析关注的是激活参数量(见 §2.1),它与推理的算力成本直接成正比,但没有考虑显存成本和硬件利用率。服务 Mixtral 的显存成本与它的稀疏参数量 47B 成正比,这仍然小于 Llama 2 70B。至于设备利用率,我们注意到 SMoE 层会带来额外开销,一部分来自路由机制,一部分来自单个设备上跑多个专家时增加的内存读取。它们更适合批量的工作负载——在那里可以达到不错的 arithmetic intensity。

与 Llama 2 70B 和 GPT-3.5 的对比。在 Table 3 里,我们报告 Mixtral 8x7B 相比 Llama 2 70B 和 GPT-3.5 的表现。我们观察到 Mixtral 的表现与这两个模型相当或更好。在 MMLU 上,尽管 Mixtral 的容量显著更小(47B token 对 70B),它仍取得了更好的表现。MT Bench 上我们报告的是当时可用的最新 GPT-3.5-Turbo 模型,即 gpt-3.5-turbo-1106

译注:原文这里写的是「47B tokens compared to 70B」,但这两个数字比的是参数量而不是 token 数——Mixtral 的稀疏参数量是 47B,Llama 2 70B 是 70B 参数,单位显然写错了。

评测上的差异。在一些 benchmark 上,我们的评测协议和 Llama 2 论文里报告的有些不同:1)MBPP 上我们用的是人工校验过的子集;2)TriviaQA 上我们不提供 Wikipedia 上下文。

Table 3:Mixtral 与 Llama 2 70B、GPT-3.5 的对比。Mixtral 在大多数指标上优于或持平 Llama 2 70B 和 GPT-3.5 的表现。

LLaMA 2 70B GPT-3.5 Mixtral 8x7B
MMLU(57 个科目的多选题) 69.9% 70.0% 70.6%
HellaSwag(10-shot) 87.1% 85.5% 86.7%
ARC Challenge(25-shot) 85.1% 85.2% 85.8%
WinoGrande(5-shot) 83.2% 81.6% 81.2%
MBPP(pass@1) 49.8% 52.2% 60.7%
GSM-8K(5-shot) 53.6% 57.1% 58.4%
MT Bench(Instruct 模型) 6.86 8.32 8.30

3.1 多语言 benchmark

相比 Mistral 7B,我们在预训练时显著上采样了多语言数据的比例。多出来的容量让 Mixtral 能在多语言 benchmark 上表现良好,同时保持英文上的高准确率。特别地,如 Table 4 所示,Mixtral 在法语、德语、西班牙语和意大利语上都显著优于 Llama 2 70B。

Table 4:Mixtral 与 Llama 在多语言 benchmark 上的对比。在 ARC Challenge、Hellaswag 和 MMLU 上,Mixtral 在四种语言上都优于 Llama 2 70B:法语、德语、西班牙语和意大利语。

模型 激活参数 法语 Arc-c 法语 HellaS 法语 MMLU 德语 Arc-c 德语 HellaS 德语 MMLU 西语 Arc-c 西语 HellaS 西语 MMLU 意语 Arc-c 意语 HellaS 意语 MMLU
LLaMA 1 33B 33B 39.3% 68.1% 49.9% 41.1% 63.3% 48.7% 45.7% 69.8% 52.3% 42.9% 65.4% 49.0%
LLaMA 2 70B 70B 49.9% 72.5% 64.3% 47.3% 68.7% 64.2% 50.5% 74.5% 66.0% 49.4% 70.9% 65.1%
Mixtral 8x7B 13B 58.2% 77.4% 70.9% 54.3% 73.0% 71.5% 55.4% 77.6% 72.5% 52.8% 75.1% 70.9%

3.2 长上下文表现

为了评估 Mixtral 应对长上下文的能力,我们在 passkey 检索任务上评测它,这个任务出自 Mohtashami 与 Jaggi 的工作12,是一个合成任务,用来度量模型从一段长 prompt 里检索随机插入的 passkey 的能力。Figure 4(左)的结果显示,无论上下文长度多长、passkey 位于序列的哪个位置,Mixtral 都达到 100% 的检索准确率。Figure 4(右)显示,Mixtral 在 proof-pile 数据集13的一个子集上的 perplexity 随上下文规模的增大而单调下降。

Figure 4 左:Passkey 任务的表现热力图,横轴是序列长度、纵轴是 passkey 位置,整个可行区域(passkey 位置不超过序列长度的那半边)全为深绿即 1.0,说明检索准确率处处是 100%
Figure 4 左:Passkey 任务的表现热力图,横轴是序列长度、纵轴是 passkey 位置,整个可行区域(passkey 位置不超过序列长度的那半边)全为深绿即 1.0,说明检索准确率处处是 100%

Figure 4 右:Mixtral 8x7B 在 proof-pile 上的 perplexity 随上下文长度变化的曲线,从约 3.8 单调下降到 32k 处的约 1.9
Figure 4 右:Mixtral 8x7B 在 proof-pile 上的 perplexity 随上下文长度变化的曲线,从约 3.8 单调下降到 32k 处的约 1.9

3.3 偏见 benchmark

为了识别出可以在微调 / 偏好建模阶段修正的潜在缺陷,我们在 Bias Benchmark for QA(BBQ)14和 Bias in Open-Ended Language Generation Dataset(BOLD)15上度量基座模型的表现。BBQ 是一个人工编写的问题集数据集,针对九个社会相关类别上有据可查的社会偏见:年龄、残障状况、性别认同、国籍、外貌、种族/族裔、宗教、社会经济地位、性取向。BOLD 是一个大规模数据集,包含 23,679 条英文文本生成 prompt,用于在五个领域上做偏见评测。

我们用自己的评测框架在 BBQ 和 BOLD 上评测 Llama 2 和 Mixtral,结果报在 Figure 5。相比 Llama 2,Mixtral 在 BBQ benchmark 上表现出更少的偏见(56.0% 对 51.5%)。对 BOLD 里的每个分组,平均情感分数越高意味着情感越正面,标准差越低意味着组内的偏见越小。总体上,Mixtral 展现出比 Llama 2 更正面的情感,各组内的方差则相近。

译注:这张偏见 benchmark 的表在原文里被排进了 wrapfigure 环境、又用了 \caption,于是 LaTeX 把它编成了「Figure 5」,但正文引用它时写的是「Table 5」——而全文另有一张真正的 Table 5(§5 的专家分配重复率)。译文按原文的图注保留「Figure 5」这个编号,正文的指代也一并改成 Figure 5。

Figure 5:偏见 benchmark。相比 Llama 2 70B,Mixtral 表现出更少的偏见(BBQ 上准确率更高、BOLD 上标准差更低),也展现出更正面的情感(BOLD 上均值更高)。

Llama 2 70B Mixtral 8x7B
BBQ accuracy 51.5% 56.0%
BOLD 情感分数(均值 ± 标准差)
gender 0.293 ± 0.073 0.323 ± 0.045
profession 0.218 ± 0.073 0.243 ± 0.087
religious_ideology 0.188 ± 0.133 0.144 ± 0.089
political_ideology 0.149 ± 0.140 0.186 ± 0.146
race 0.232 ± 0.049 0.232 ± 0.052

4 指令微调

我们训练 Mixtral – Instruct 的做法是:先在一个指令数据集上做监督微调(SFT),再在一个成对反馈数据集上做 Direct Preference Optimization(DPO)4。Mixtral – Instruct 在 MT-Bench16 上拿到 8.30 分(见 Table 2),成为截至 2023 年 12 月最好的开放权重模型。LMSys 做的独立人类评测报在 Figure 617,结果显示 Mixtral – Instruct 优于 GPT-3.5-Turbo、Gemini Pro、Claude-2.1 和 Llama 2 70B chat。

译注:原文这里指向的是 Table 2,但 MT-Bench 这一行在 Table 3 里,Table 2 没有 MT Bench 列。

Figure 6:LMSys 排行榜(2023 年 12 月 22 日的截图)。Mixtral 8x7B Instruct v0.1 拿到 1121 的 Arena Elo 评分,超过 Claude-2.1(1117)、所有版本的 GPT-3.5-Turbo(最好的是 1117)、Gemini Pro(1111)和 Llama-2-70b-chat(1077)。Mixtral 目前是最好的开放权重模型,且领先幅度很大
Figure 6:LMSys 排行榜(2023 年 12 月 22 日的截图)。Mixtral 8x7B Instruct v0.1 拿到 1121 的 Arena Elo 评分,超过 Claude-2.1(1117)、所有版本的 GPT-3.5-Turbo(最好的是 1117)、Gemini Pro(1111)和 Llama-2-70b-chat(1077)。Mixtral 目前是最好的开放权重模型,且领先幅度很大

5 路由分析

这一节我们对 router 选择专家的行为做一个小的分析。我们特别感兴趣的是,训练过程中是否有些专家专门化到了某些特定领域(比如数学、生物、哲学等等)。

为了研究这个问题,我们在 The Pile 验证集18的不同子集上度量被选中专家的分布。结果呈现在 Figure 7,包含第 0、15、31 层(第 0 层和第 31 层分别是模型的第一层和最后一层)。出乎意料的是,我们并没有观察到专家分配上基于主题的明显模式。比如在所有层上,ArXiv 论文(用 LaTeX 写的)、生物(PubMed Abstracts)和哲学(PhilPapers)文档的专家分配分布都非常相似。

只有 DM Mathematics 上我们注意到专家的分布略有不同。这种偏离很可能是该数据集的合成性质、以及它对自然语言谱系覆盖有限所导致的,并且在第一层和最后一层上尤为明显——那里的 hidden state 分别与输入和输出 embedding 高度相关。

Figure 7:The Pile 数据集不同领域上分配给每个专家的 token 比例,取第 0、15、31 层。灰色虚线标出 $1/8$,即均匀采样下的期望比例。这里统计的是被 router 选为第一或第二选择的专家。按两种情况分别拆开的分配比例见附录的 Figure 9
Figure 7:The Pile 数据集不同领域上分配给每个专家的 token 比例,取第 0、15、31 层。灰色虚线标出 $1/8$,即均匀采样下的期望比例。这里统计的是被 router 选为第一或第二选择的专家。按两种情况分别拆开的分配比例见附录的 Figure 9

这说明 router 可能确实表现出某种结构化的句法行为。Figure 8 给出了不同领域的文本样例(Python 代码、数学和英文),其中每个 token 都用对应其所选专家的背景色高亮。这张图显示,Python 里的 self、英文里的 Question 这类词经常被路由到同一个专家,尽管它们由多个 token 组成。类似地,在代码里,缩进 token 总是被分配给相同的专家,在第一层和最后一层尤其如此——那里的 hidden state 与模型的输入和输出更相关。

Figure 8:每个 token 按其第一选择专家着色的文本样例,三列分别是第 0、15、31 层,三行分别是 Python 代码、数学题和英文。专家的选择看起来更多地与句法对齐而不是与领域对齐,在最初和最后几层尤其如此
Figure 8:每个 token 按其第一选择专家着色的文本样例,三列分别是第 0、15、31 层,三行分别是 Python 代码、数学题和英文。专家的选择看起来更多地与句法对齐而不是与领域对齐,在最初和最后几层尤其如此

我们还从 Figure 8 注意到,连续的 token 经常被分配到相同的专家。事实上,我们在 The Pile 的各个数据集上都观察到了某种程度的位置局部性。Table 5 给出了按领域和层划分的、拿到相同专家分配的连续 token 的比例。在更高的层上,连续重复分配的比例显著高于随机水平。这对如何优化模型以获得更快的训练和推理是有启示的。举例来说,局部性高的情形在做 Expert Parallelism 时更可能造成某些专家的过载。反过来,这种局部性也可以用来做缓存,Eliseev 与 Mazur 的工作19就是这么做的。所有层、跨各数据集的这个相同专家频率的更完整视图见附录的 Figure 10。

Table 5:专家分配的重复率。我们评估同一个专家被同时分配给 token $i$ 和它的下一个 token $i+1$ 的比例。我们分别报告第一选择的专家是否相同、以及连续 token 中是否有同一个专家出现在第一或第二选择里。作为参照,随机分配下重复的期望比例是:「仅第一选择」为 $\frac{1}{8}=12.5\%$,「第一和第二选择」为 $1-\frac{6}{8} \frac{5}{7} \approx 46\%$。第一层的重复率接近随机,但第 15 层和第 31 层显著更高。重复次数之多说明专家选择在这些层上表现出很高的时间局部性。

仅第一选择 · 第 0 层 仅第一选择 · 第 15 层 仅第一选择 · 第 31 层 第一或第二选择 · 第 0 层 第一或第二选择 · 第 15 层 第一或第二选择 · 第 31 层
ArXiv 14.0% 27.9% 22.7% 46.5% 62.3% 52.9%
DM Mathematics 14.1% 28.4% 19.7% 44.9% 67.0% 44.5%
Github 14.9% 28.1% 19.7% 49.9% 66.9% 49.2%
Gutenberg 13.9% 26.1% 26.3% 49.5% 63.1% 52.2%
PhilPapers 13.6% 25.3% 22.1% 46.9% 61.9% 51.3%
PubMed Abstracts 14.2% 24.6% 22.0% 48.6% 61.6% 51.8%
StackExchange 13.6% 27.2% 23.6% 48.2% 64.6% 53.6%
Wikipedia (en) 14.4% 23.6% 25.3% 49.8% 62.1% 51.8%

6 结论

本文我们介绍了 Mixtral 8x7B,第一个在开源模型中达到 state-of-the-art 表现的专家混合网络。Mixtral 8x7B Instruct 在人类评测 benchmark 上优于 Claude-2.1、Gemini Pro 和 GPT-3.5 Turbo。因为它在每个时间步只用两个专家,Mixtral 每个 token 只用 13B 激活参数,却优于此前那个每个 token 用 70B 参数的最好模型(Llama 2 70B)。我们以 Apache 2.0 许可公开发布训练好的模型和微调后的模型。通过分享我们的模型,我们希望促进新技术和新应用的开发,让广泛的行业和领域从中受益。

致谢

感谢 CoreWeave 和 Scaleway 团队在我们训练模型期间提供的技术支持。感谢 NVIDIA 支持我们集成 TensorRT-LLM 和 Triton,并与我们并肩工作,让稀疏专家混合模型能兼容 TensorRT-LLM。

附录

Figure 9:The Pile 数据集不同子集上分配给每个专家的 token 比例,按专家是被选为第一选择、第二选择、还是两者之一分开统计。「Either choice」这一情形等价于 Figure 7。灰色虚线标出 $\frac{1}{8}$,即均匀采样下的期望比例
Figure 9:The Pile 数据集不同子集上分配给每个专家的 token 比例,按专家是被选为第一选择、第二选择、还是两者之一分开统计。「Either choice」这一情形等价于 Figure 7。灰色虚线标出 $\frac{1}{8}$,即均匀采样下的期望比例

Figure 10:每个 MoE 层上连续重复的分配。重复分配出现的频率远高于均匀分配下的水平(后者由虚线标出)。各数据集的模式相似,DM Mathematics 的重复稍少
Figure 10:每个 MoE 层上连续重复的分配。重复分配出现的频率远高于均匀分配下的水平(后者由虚线标出)。各数据集的模式相似,DM Mathematics 的重复稍少


  1. Mixtral of Experts, https://arxiv.org/abs/2401.04088 ↩︎

  2. mistral-src, https://github.com/mistralai/mistral-src ↩︎

  3. Mixtral of experts(Mistral AI 公告页), https://mistral.ai/news/mixtral-of-experts/ ↩︎ ↩︎

  4. Direct Preference Optimization: Your Language Model is Secretly a Reward Model, https://arxiv.org/abs/2305.18290 ↩︎ ↩︎

  5. Attention Is All You Need, https://arxiv.org/abs/1706.03762 ↩︎

  6. Mistral 7B, https://arxiv.org/abs/2310.06825 ↩︎

  7. A Review of Sparse Expert Models in Deep Learning, https://arxiv.org/abs/2209.01667 ↩︎

  8. Outrageously Large Neural Networks: The Sparsely-Gated Mixture-of-Experts Layer, https://arxiv.org/abs/1701.06538 ↩︎ ↩︎

  9. MegaBlocks: Efficient Sparse Training with Mixture-of-Experts, https://arxiv.org/abs/2211.15841 ↩︎

  10. GShard: Scaling Giant Models with Conditional Computation and Automatic Sharding, https://arxiv.org/abs/2006.16668 ↩︎

  11. 原文脚注:因为 Llama 2 34B 没有开源,我们报告的是 Llama 1 34B 的结果。 ↩︎

  12. Landmark Attention: Random-Access Infinite Context Length for Transformers, https://arxiv.org/abs/2305.16300 ↩︎

  13. Llemma: An Open Language Model for Mathematics, https://arxiv.org/abs/2310.10631 ↩︎

  14. BBQ: A Hand-Built Bias Benchmark for Question Answering, https://arxiv.org/abs/2110.08193 ↩︎

  15. BOLD: Dataset and Metrics for Measuring Biases in Open-Ended Language Generation, ACM FAccT 2021, https://arxiv.org/abs/2101.11718 ↩︎

  16. Judging LLM-as-a-Judge with MT-Bench and Chatbot Arena, https://arxiv.org/abs/2306.05685 ↩︎

  17. Chatbot Arena Leaderboard, https://huggingface.co/spaces/lmsys/chatbot-arena-leaderboard ↩︎

  18. The Pile: An 800GB Dataset of Diverse Text for Language Modeling, https://arxiv.org/abs/2101.00027 ↩︎

  19. Fast Inference of Mixture-of-Experts Language Models with Offloading, https://arxiv.org/abs/2312.17238 ↩︎