像 GPT-4 和 Llama 3 这样的大型语言模型 (LLMs) 已经成为自然语言处理领域事实上的“专家”。它们处理复杂语言模式的能力很大程度上归功于其巨大的规模。这一普遍认知被称为缩放定律 (scaling law),它表明要获得更智能的模型,我们只需把它们做得更大。
然而,这其中有一个问题。随着模型规模的增长,训练和微调它们的计算成本也呈直线上升。对于指令微调 (Instruction Tuning)——即微调预训练模型以遵循数学、编程和生物学等各个领域的指令的阶段——来说尤其如此。
为了处理截然不同的任务,模型需要高容量。但对于许多研究人员和机构来说,简单地将稠密模型做大在计算上往往是令人望而却步的。这就引出了一个迷人的问题: 如何在不引爆计算预算的情况下扩展模型容量?
在这篇文章中,我们将深入探讨一篇提出巧妙解决方案的论文: 参数高效稀疏化构建 (Parameter-Efficient Sparsity Crafting, PESC) 。 该方法采用标准的稠密模型 (如 Llama-2) ,并将其“升级转化”为混合专家 (Mixture-of-Experts, MoE) 模型。PESC 的天才之处在于,它仅使用通常所需参数的一小部分就实现了这一点,使得在有限的硬件上运行高性能稀疏模型成为可能。

如上图所示,利用该技术生成的模型 (被称为 Camelidae )表现出卓越的性能,在通用基准测试中甚至可以匹敌并击败庞大的专有模型。让我们来探索它是如何工作的。
背景: 对容量的需求
在剖析解决方案之前,我们需要了解架构上的瓶颈。
稠密模型 vs. 混合专家 (MoE)
大多数开源 LLM (如最初的 Llama 系列) 都是稠密 (dense) 的。这意味着对于你输入的每一个 Token (例如单词“cat”) ,网络中的每个参数都会被激活并用于计算。虽然有效,但这效率很低。你不需要模型动用其天体物理学的知识来处理煎饼的食谱。
混合专家 (MoE) 模型通过用一组“专家”替换前馈神经网络 (FFN) 层来解决这个问题。对于任何给定的输入,一个路由 (router) 会决定哪些专家最适合处理该数据。这使得模型拥有巨大的参数量 (高容量) ,但在推理时仅使用其中的一小部分 (低计算量) 。
“稀疏升级”的挑战
一种被称为稀疏升级 (Sparse Upcycling) 的技术允许研究人员使用预训练稠密模型的权重来初始化 MoE 模型。通常,你会多次复制 FFN 权重来创建初始专家。
然而,训练这种升级后的模型非常繁重。如果你有 8 个专家,你在这些层中就有 8 倍的参数需要更新。这需要巨大的 GPU 显存和计算资源,通常使得 MoE 训练超出了标准指令微调环境的承受范围。
核心方法: 参数高效稀疏化构建 (PESC)
作者引入了 PESC 来解决资源问题。其核心思想是将 MoE 的架构与适配器 (Adapters) (参数高效微调或 PEFT 中的一个概念) 的效率相结合。
架构概览
在传统的 Transformer 块中,有注意力层 (Attention layers) 和前馈网络层 (FFN layers)。PESC 将稠密 FFN 层转换为稀疏 MoE 层。

如图 2 (右侧) 所示,新的 MoE 层由一个门控路由 (Gate Router) 和若干参数高效专家 (Parameter-Efficient Experts) 组成。
关键的创新在于专家的构建方式 。 在标准升级中,每个专家都是一个独特的、完全可训练的神经网络。在 PESC 中,作者保持专家巨大的“骨干”权重冻结且共享 , 只训练每个专家独有的微小“适配器”。
详细设计: 共享权重与适配器
让我们分解一下数学原理和结构。
在标准适配器设置中 (公式 1) ,一个小的瓶颈模块被插入到层中。对于输入 \(U\),适配器的输出为:

这里,\(W_{down}\) 和 \(W_{up}\) 是将数据投影到低维再投影回来的小矩阵。这增加的参数非常少。
在 PESC MoE 层中,输出 \(y\) 计算为所选专家的加权求和 (公式 2) :

这里,\(R(x)_i\) 是路由得分 (模型对专家 \(i\) 的“信任”程度) ,\(E_i(x)\) 是专家 \(i\) 的输出。
效率秘诀: 在传统的稀疏化构建中,我们通过将稠密 FFN 权重 (\(\theta_o\)) 复制到每个专家 (\(\theta_i\)) 来初始化专家。然后我们针对每个专家优化目标函数 \(\mathcal{F}\):

这需要更新大量的参数 (\(\theta_i^+\))。
PESC 改变了游戏规则。作者不训练繁重的权重 \(\theta\),而是冻结原始 FFN 权重 (\(\theta_o\)) 并在所有专家之间共享它们。为了区分专家,他们在每个专家中插入一个独特的适配器 (\(\omega_i\))。
优化目标变为寻找最佳适配器权重 \(\omega_i^+\):

为什么这很重要?因为适配器 (\(\omega\)) 中的参数数量相比 FFN 权重 (\(\theta\)) 微乎其微。系统的总参数量保持非常接近原始稠密模型,如下面的数学公式所示:

这个不等式证明了,\(n\) 个适配器加上一个共享 FFN 的大小显著小于 \(n\) 个独立的 FFN。
PESC 层的可视化
图 3 提供了该特定实现的详细视图。

注意不同的组件:
- 共享权重: FFN 层 (在左侧虚线框中) 对于每个专家都是相同的。它们是冻结的。
- 适配器: 每个“专家” (1 到 \(n\)) 都有自己独特的适配器。
- 加权求和: 根据路由的决策组合输出。
从数学上讲,PESC 专家 \(A_i\) 的输出是共享骨干和独特适配器的组合:

最终层的输出结合了这些增强了适配器的专家:

作者认为,由于适配器是“通用近似器” (universal approximators) (理论上它们可以学习任何函数) ,优化这些适配器允许系统在没有内存成本的情况下近似全训练 MoE 的性能。这种近似表示为保持误差 (\(\xi\)) 较低:

路由机制
模型如何知道使用哪个专家?PESC 采用Top-K 门控路由 。
对于每个 Token,路由使用可学习的权重矩阵 \(W_r\) 计算得分。然后它应用 Softmax 函数,但只保留前 \(K\) 个值 (通常是 Top-2) ,将其余值设置为负无穷大 (零概率) 。

这确保了对于任何给定的单词,只有 2 个专家处于活跃状态,保持推理速度快。
负载均衡: MoE 训练中常见的失效模式是“专家坍缩” (expert collapse),即路由将所有内容都发送给同一个专家,而忽略其他专家。为了防止这种情况,作者添加了一个辅助损失函数,鼓励平等使用所有专家:

这里,\(f_i\) 是发送给专家 \(i\) 的 Token 分数,\(p_i\) 是路由概率。最小化该值可确保工作负载的均衡分布。
实验与结果
为了验证 PESC,作者创建了 Camelidae 模型家族。他们将 Llama-2 (7B 和 13B) 和 Yi (34B) 模型升级为每个拥有 8 个专家的 MoE 模型,使用“Top-2”路由策略。
他们将这些模型与原始稠密模型 (称为“Camel”) 以及其他最先进的稀疏模型 (如 Mixtral) 进行了比较。
1. 优于稠密模型
最直接的比较是在相同数据 (IDAE-500K) 上训练的稠密基线 (Camel) 和稀疏 PESC 模型 (Camelidae) 之间。

表 2 显示了一个明显的趋势: 稀疏模型始终优于其稠密对应模型。
- Camelidae-8x34B 在 MMLU 上得分为 75.6 , 而稠密 Camel-34B 为 75.3 。
- 在编程 (HumanEval) 和数学 (GSM8K) 等复杂任务中,差距更大。例如,在 GSM8K 上,稀疏 34B 模型达到 78.3% , 而稠密版本为 76.1% 。
2. 与最先进模型 (SOTA) 的比较
作者通过在更大的数据集 (IDAE-720K) 上进行训练,进一步提升了他们的 34B 模型,创建了 Camelidae-8x34B-pro 。 他们将其与 GPT-3.5、Llama-2-70B 和 Mixtral-8x7B 进行了比较。

如表 1 所示, Camelidae-8x34B-pro 表现强劲。
- MMLU: 它达到了 75.7% , 击败了 GPT-3.5 (70.0%) 和 Mixtral (68.7%)。
- 数学与代码: 它在 GSM8K (数学) 上达到 79.4% , 在 HumanEval (代码) 上达到 48.8% , 在这些重推理领域优于庞大的 Llama2-70B Chat 模型。
3. 专家真的会术业有专攻吗?
MoE 的理论承诺之一是不同的专家将成为不同主题的专家 (例如,一个专家负责数学,另一个负责生物学) 。作者分析了路由决策,看看这种情况是否真的发生了。

图 4 可视化了针对不同数据集选择了哪些专家:
- SlimOrca (通用指令遵循)
- Magicoder (编程)
- MetaMathQA (数学)
结果令人着迷。看看 专家 1 (青色) 。 它在 Magicoder (编程) 中被大量激活,但在数学中较少。相反, 专家 6 (浅黄色) 在 MetaMathQA 中被大量激活。这证实了 PESC 方法成功地鼓励了专家在句法和语义上进行专业化,即使他们共享相同的 FFN 骨干。
4. 专家数量的影响
增加更多专家有帮助吗?

表 4 表明是的。从 4 个专家增加到 16 个专家,在代码、数学和通用知识 (MMLU) 方面都产生了一致的收益。这表明 PESC 方法扩展性良好——你可以添加更多适配器 (廉价参数) 来获得更多容量,而不会造成显着的训练损失。
结论与启示
“Camelidae”论文为大型语言模型的可及性迈出了引人注目的一步。通过引入参数高效稀疏化构建 (PESC) , 作者提供了一个蓝图,可以将标准的稠密模型转化为强大的混合专家系统,而无需承担通常与 MoE 训练相关的令人望而却步的内存成本。
主要收获:
- 效率: PESC 通过共享 FFN 权重并仅训练适配器,大幅减少了创建 MoE 所需的可训练参数数量。
- 性能: 由此产生的稀疏模型优于其稠密父模型,并可与更大的专有模型竞争。
- 专业化: 即使骨干共享,插入的适配器也能让专家在数学或编程等不同领域进行专业化。
这项研究意味着训练高容量、通用模型的门槛正在降低。拥有有限 GPU 资源的学生和研究人员现在可以有效地将开源模型“升级”为能够处理复杂、多领域指令的专家。
](https://deep-paper.org/en/paper/2401.02731/images/cover.png)