这个模型建立在 Mistral 7B 的架构上,但每层由8个前馈模块(即专家)组成。对于每个 token,路由网络在每层选择两个专家来处理当前状态并合并它们的输出。尽管每个 token 只能看到 2 个专家,但在每个时间步骤上选择的专家可以不同。因此虽然在推理过程中只能使用 13B 个活跃参数,但在访问过程中每个 token 可以访问 47B 个参数。
- Mixtral 支持高达32,000个token的完整密集上下文长度;
- 采用了混合专家层(Mixture of Experts,MoE)来替代原先的前馈网络块。
给定 n 个专家网络 { E 0 , E 1 , ... ... , E n } \{E_0,E_1,......,E_n\} {E0,E1,......,En} ,每个专家层的输出值是通过将 x 输入门控网络 G ( x ) G(x) G(x) 的输出加权后,与每个专家网络 E i ( x ) E_i(x) Ei(x) 的输出相乘得到: ∑ i = 0 n − 1 G ( x ) ⋅ E i ( x ) \sum_{i=0}^{n-1}G(x)·E_i(x) ∑i=0n−1G(x)⋅Ei(x)。
如果门控向量是稀疏的,就可以避免那些门控制为 0 的专家输出,一个简单有效的方法是采用 Top-K 进行 softmax 运算: G ( x ) : = S o f t m a x ( T o p K ( x ⋅ W g ) ) G(x):=Softmax(TopK(x·W_g)) G(x):=Softmax(TopK(x⋅Wg))
在 Transformer 中,MoE 层替代了 Transformer 的前馈子块,并独立应用于每个 token。Mixtral 采用与 SwiGLU 架构相同的专家函数 E i ( x ) E_i(x) Ei(x),并设 K = 2,即每个 token 被路由到 2 个具有不同权重的 SwiGLU 子块:
y = ∑ i = 0 n − 1 S o f t m a x ( T o p 2 ( x ⋅ W g ) ) i ⋅ S w i G L U i ( x ) y=\sum_{i=0}^{n-1}Softmax(Top2(x·W_g))_i · SwiGLU_i(x) y=i=0∑n−1Softmax(Top2(x⋅Wg))i⋅SwiGLUi(x)
实验结果
- 常识推理(零样本):使用了包括 Hellaswag、Winogrande、PIQA、SIQA、OpenbookQA、ARC-Easy/Challenge、CommonsenseQA 等在内的多个测试。
- 世界知识(少样本,5个):选择了 NaturalQuestions 和 TriviaQA 作为评估工具。
- 阅读理解(零样本):采用了 BoolQ 和 QuAC 进行测试。
- 数学题解:使用 GSM8K(8个样本)和 MATH(4个样本)进行测试。
- 编程任务:在 Humaneval(零样本)和 MBPP(3个样本)上进行评估。
- 综合流行结果 :涵盖了 MMLU(5个样本)、BBH(3个样本)和 AGI Eval(3-5个样本,仅限英语多项选择题)。
Mixtral 在编程和数学方面相较于 LLaMA 2 表现更出色。
作者注意到连续的 token 经常被分配给相同的专家 ,且观察到有一定位置局部性,层编号越高,重复连续高于随机分配的比例越显著。