引言
在大语言模型 (LLMs) 的世界里,我们一直在与“缩放定律 (Scaling Laws) ”作斗争。通常的经验法则是: 如果你想要一个更聪明的模型,你就需要一个更大的模型。然而,更大的模型伴随着高昂的代价——它们需要巨大的计算能力 (FLOPs) 和海量的显存 (VRAM) 。
为了解决计算问题,研究人员转向了 混合专家 (Mixture-of-Experts, MoE) 架构 (如 Mixtral 8x7B 或 DeepSeek-MoE) 。MoE 模型非常聪明;它们拥有大量参数,但生成每个 Token 时只使用其中的一小部分。这使得推理在计算成本上既快又便宜。
但有一个棘手的问题。虽然 MoE 减少了计算量,但并没有降低内存需求。你仍然需要存储那数十亿个参数。对于显卡资源有限的学生和研究人员来说,这通常意味着要依赖“卸载 (offloading) ”技术——将模型存储在系统内存或硬盘上,并在需要时交换到 GPU 中。正如你可能猜到的那样,这种交换过程会产生巨大的瓶颈,严重拖慢推理速度。
Mixture of Lookup Experts (MoLE) 登场了,这是在 ICML 2025 上发表的一种新颖架构。MoLE 提出了一个激进的转变: 如果我们设计的专家在推理过程中不需要计算会怎样?通过将复杂的神经网络转化为简单的查找表,MoLE 实现了 MoE 模型的高性能,同时具备密集 (Dense) 模型的速度和低内存占用。
在这篇文章中,我们将剖析 MoLE 论文,解释它是如何将神经网络转化为静态表格的,并看看证明其有效性的数据。
问题所在: 显存瓶颈
要理解为什么需要 MoLE,我们首先需要看看标准混合专家 (MoE) 模型的局限性。
在标准 MoE 中,一个“路由 (Router) ”决定哪个“专家 (Expert) ” (通常是前馈网络或 FFNs) 来处理特定的输入 Token。例如,在 Mixtral-8x7B 中,有 8 个专家,但对于任何给定的 Token,只有 2 个专家是活跃的。这种稀疏激活正是 MoE 计算效率高的原因。
然而,内存成本完全是另一回事。即使你只使用了 2 个专家,你必须存储全部 8 个。如果你的 GPU 显存太小 (例如在 24GB 的消费级显卡上运行 80GB 的模型) ,你就必须使用 专家卸载 (Expert Offloading) 。
专家卸载将活跃的专家保留在显存中,其余的存储在 CPU 内存或 SSD 上。当路由选择了一个不在 GPU 上的专家时,系统必须暂停,从 CPU/硬盘获取权重,加载它们,然后再继续。
这引入了两个主要问题:
- 高延迟: 与 GPU 上的计算相比,通过 PCIe 移动数据是很慢的。
- 批处理问题: 如果你同时为 32 个用户生成文本,他们可能都需要不同的专家。你最终可能需要在每一步都将所有专家加载到显存中,这违背了卸载的初衷。
下图总结了当前的格局。

如图 Figure 1 所示,请注意其中的权衡:
- 密集模型 (Dense - 橙色): 速度快 (低延迟) 且显存占用低,但准确率较低。
- MoE (Cyan - 青色): 准确率高,但显存占用巨大。
- MoE 卸载 (MoE Offloading - 蓝色): 解决了显存问题,但延迟飙升 (慢 10 倍) 。
- MoLE (Green - 绿色/我们的): “黄金平衡点”。高准确率、低显存且低延迟。
MoLE 是如何做到这一点的?通过从根本上改变“专家”的作用。
核心方法: 查找专家混合 (Mixture of Lookup Experts)
研究人员意识到,卸载的瓶颈不仅仅在于专家的大小,还在于专家是需要计算的函数 。 你必须加载权重来执行矩阵乘法。
MoLE 提出了一个问题: 我们可以预先计算答案吗?
如果我们能预先计算出专家对每一个可能输入的输出,我们就不需要加载专家的权重了。我们只需要在表中查找答案即可。
架构变更
为了使预计算成为可能,MoLE 在训练期间引入了一个约束,这个约束在推理时带来了回报。
在标准的 Transformer 中,专家的输入是“隐藏状态 (hidden state) ”——这是基于句子完整上下文动态变化的中间特征。因为每个句子的上下文都是独一无二的,隐藏状态是无限的。你无法为无限的输入预计算答案。
MoLE 改变了输入。MoLE 的专家不使用动态的隐藏状态,而是将 嵌入 Token (Embedding Token) 作为输入。

如 Figure 2 所示:
- 左侧 (Standard MoE): 路由和 FFNs 接收上一层 Attention 层的输出。
- 中间 (MoLE): 路由仍然观察动态上下文,但 专家 (FFNs) 将“嵌入 (Embedding) ” (即单词的原始向量表示) 作为输入。
这为什么重要?因为嵌入 Token 的数量是有限的。它完全等于词表的大小 (例如 32,000 或 50,000 个单词) 。
训练阶段
在训练期间,MoLE 的行为有点像标准的 MoE,但有两个关键区别:
- 输入源: 如前所述,专家处理的是嵌入 \(e\),而不是隐藏状态 \(h\)。
- 全激活: 标准 MoE 只训练 top-k 个专家。MoLE 在训练期间为每个 Token 激活 所有 专家。这避免了“专家坍塌 (expert collapse) ” (即只有一个专家变聪明) ,并消除了对复杂的辅助损失函数的需求。
训练期间 MoLE 层的最终输出 \(h'\) 的方程如下所示:

这里,\(g_j\) 是门控权重 (来自路由) ,\(FFN_i(e)\) 是处理嵌入 \(e\) 的专家。请注意,路由仍然使用动态隐藏状态 \(h\) 来决定多少权重分配给每个专家,从而保留了上下文敏感性。
推理阶段: 向 LUT 的转变
这就是奇迹发生的地方。一旦训练完成,专家 (FFNs) 就被冻结了。因为专家只接受嵌入作为输入,而词表的嵌入永远不会改变,所以每个专家对每个单词的输出都是确定性的。
我们可以定义专家 \(j\) 对单词 ID \(i\) 的输出向量 \(v\) 为:

由于词表大小 \(|\mathcal{V}|\) 是有限的,我们可以计算字典中每个单词的这个向量并将其存储起来。神经网络专家被替换为 查找表 (Lookup Table, LUT) :

在推理过程中,我们扔掉专家权重。我们不对专家进行矩阵乘法。相反,我们使用输入 ID 从 LUT 中检索预计算的向量。
推理计算简化为:

专家现在是“免计算”的。
为什么这更高效
你可能会想,“等等,每个专家对每个单词的答案表不是很大吗?”
是的,查找表很大。但是,我们可以将此表存储在 CPU 内存或 SSD (卸载) 上。效率的提升来自于 通信带宽 。
让我们看看复杂度对比:

关注 # Param Loaded per Token (每个 Token 加载的参数量) 这一列:
- MoE 卸载 (MoE Offloading): 在最坏的情况下,你必须加载所选特定专家的权重。这些是巨大的矩阵 (\(2 \cdot d \cdot k \cdot D_r\)) 。
- MoLE: 你只加载专家的结果向量 (\(d \cdot N\)) 。
这种差异是惊人的。加载一个向量比加载创建该向量所需的权重快几个数量级。论文指出,对于 1B 参数的模型,MoLE 中每个 Token 加载的数据量大约是标准 MoE 加载量的 1/2000 。
由于数据传输量如此之小,将 LUT 保存在慢速存储设备 (如 SSD) 上的延迟代价变得可以忽略不计。
实验与结果
理论听起来很扎实,但将动态隐藏状态换成静态嵌入是否会损害模型的智能?研究人员在“Pile”数据集上测试了 MoLE 与密集模型 (Dense) 和标准 MoE 模型在不同规模 (1.6 亿、4.1 亿、10 亿参数) 下的表现。
准确率 vs. 复杂度

Table 3 强调了主要发现:
- MoLE vs. Dense: MoLE 始终优于密集模型 (橙色行 vs 绿色行) ,同时保持相似的推理延迟。
- MoLE vs. MoE: MoLE 的表现与标准 MoE 相当,甚至通常更好。例如,在 410M 类别中, MoLE-16E (16 个专家) 的平均得分为 45.7 , 而 MoE-10E 的得分为 43.9 。
- 数据传输: 看一看“Param Loaded per Token”列。对于 1B 模型,MoLE 每个 Token 仅加载 0.26M 参数,而 MoE 加载 537M 。 这种巨大的减少解释了为什么 MoLE 即使在卸载时也如此之快。
解码延迟
用户体验最关键的指标是延迟——生成下一个单词所需的时间。

Figure 3 显示了随着批量大小 (Batch Size) 增加时的延迟 (毫秒) 。
- MoE (蓝色柱): 随着批量大小增加 (从 1 到 32) ,延迟爆炸式增长。这是因为批次中的不同序列请求不同的专家,迫使系统从内存中加载几乎所有的专家。
- MoLE (绿色柱): 延迟保持平稳且低,几乎与密集模型 (橙色) 完全相同。因为获取向量很便宜,增加批量大小不会阻塞带宽。
解决“上下文”权衡
对 MoLE 的一个合理批评是,通过仅向专家提供嵌入 Token,专家失去了“上下文”。他们不知道前面出现了什么词。
作者在消融实验 (论文中的 Table 7) 中解决了这个问题。他们发现,虽然切换到嵌入输入确实会导致轻微的性能下降,但能够全激活所有专家 (因为它们是免费计算的) 足以弥补这一损失。
此外,上下文并没有完全丢失。 路由 (Router) 仍然可以看到完整的上下文 (隐藏状态) ,因此它可以动态决定哪个静态专家结果与当前上下文最相关。共享专家 (Shared Expert) 和注意力层 (Attention layers) 也继续处理完整的上下文信息。
结论与启示
“Mixture of Lookup Experts” (MoLE) 论文介绍了一种巧妙的工程变通方案,以应对现代 AI 的硬件限制。通过意识到我们可以用存储 (廉价 SSD 上的大型查找表) 来换取计算和带宽 (昂贵的 VRAM 和 PCIe 传输) ,MoLE 让强大的 MoE 架构在消费级硬件上变得触手可及。
关键要点:
- 免计算专家: 专家在训练后被转化为静态查找表 (LUTs) 。
- 巨大的带宽节省: 与标准 MoE 相比,MoLE 将卸载所需的数据传输减少了数千倍。
- 高性能: 它保留了 MoE 模型的准确性,同时匹配了密集模型的速度。
- 对批处理友好: 与标准专家卸载不同,MoLE 可以毫不费力地随着批量大小扩展。
对于致力于边缘 AI 或 GPU 集群受限的学生和开发人员来说,MoLE 代表了一个充满希望的方向。它表明,高效 LLM 的未来可能不仅仅在于使模型变小,还在于重新思考计算发生的时间和地点。
](https://deep-paper.org/en/paper/626_mixture_of_lookup_experts-1883/images/cover.png)