今年 8 月,DeepSeek 发布了 DeepSeek-V4-Pro 的正式版:1.6 万亿参数,权重开放,谁都可以下载。月之暗面的 Kimi K3 更是达到 2.8 万亿。这种规模的模型,看起来根本搬不动。可是,V4-Pro 每写一个词,只用 490 亿参数:3%。

这不是特例。2026 年几乎所有大型开放模型都是这样工作的:DeepSeek、Kimi、通义千问(Qwen)、Llama 4、OpenAI 的 gpt-oss,还有谷歌中等尺寸的 Gemma 4。它们叫作混合专家模型(Mixture of Experts,简称 MoE)。于是,这个傻问题非问不可:既然只用 3%,剩下的 97% 留着干什么?

先说明一点:语言模型读的不是词,而是 token,也就是词的片段。为了不绕晕大家,下文一律说“词”。

一间有专科厨师的厨房

传统的大语言模型,也就是技术人员说的稠密模型,就像一个超大厨师包办所有菜。它每写一个词,整个模型都要干活:所有参数,每一次都用上。

MoE 则是一间有很多厨师和一位厨师长的厨房。订单(也就是词)进来,厨师长看一眼是什么,交给两三位厨师。其余的人休息。

一个超大厨师,对比一间有专科厨师的厨房左边是稠密模型:只有一个超大厨师,所有菜都由他做,所以每个词都要动用整个模型。右边是 MoE:厨师长接单后,把它交给 8 位厨师中的 2 位;另外 6 位休息,但 8 位都占着厨房的位置。干活是计算,占位置是内存。
右边的厨房有 8 位厨师,和 Mixtral 一样。2026 年的模型,厨房里有几百位。

从这个比喻里,能得出本文的两个要点:

  1. 每道菜只花两位厨师的工夫,而不是全体员工的。所以可以多请很多厨师,每道菜却不会变贵。厨师越多,模型里存的知识就越多。
  2. 厨房得给所有人都留位置,不管他们干不干活。这个位置就是电脑的内存。休息的厨师不拿工钱,但照样占地方。

换成技术名词:干活的厨师是激活参数,全体员工是总参数。

里面发生了什么

大语言模型是一层层叠起来的,每一层有两部分。第一部分是注意力:每个词看看其他词,理解上下文。第二部分是一个网络,单独处理每个词,模型的大部分参数都在这里。MoE 只改第二部分:把它拆成许多小网络,也就是专家,再加一个路由器,充当厨师长。

MoE 模型里的一层一个词进入这一层。先经过注意力,这部分是共用的:所有词都要用。然后路由器给 8 个专家打分,选出 2 个:专家 2 权重 60%,专家 7 权重 40%。其余 6 个专家对这个词什么也不做。两个被选中的专家的输出按权重相加,结果送到下一层。每一层都重复这个过程,每次的选择都不同。
一层的结构。这里的分配(专家 2 和 7,60% 和 40%)只是举例;路由器在每一层、对每个词都要重新决定。

路由器给所有专家打分,留下得分最高的几个(Mixtral 是 8 选 2,DeepSeek-V3 是 256 选 8,Kimi K3 是 896 选 16),再按权重把它们的结果混合起来。这个选择对每个词、在每一层都要做一次:同一句话里,每个词可能交给不同的厨师,到了下一层又换一批。

提醒一句,因为这个名字很容易误导:“专家”不是说一个懂医学、另一个懂诗歌。Mixtral 的作者查看了生物、哲学和科学论文这几类文本分别交给了哪些专家,结果没有发现按话题分工。它们真正的分工更奇怪,也更有意思,详见《MoE 的误解》。

为什么大家都在用

因为学习变便宜了。同样的计算预算,MoE 可以拥有多得多的参数,而训练充分的参数越多,模型就越好。谷歌在 2021 年用 Switch Transformer 测过:资源相同的情况下,它的训练速度最高是对应稠密模型的 7 倍,是最大的 T5 的 4 倍。2023 年,Mixtral 8x7B 在论文的所有测试中都追平或超过了 Llama 2 70B(一个 700 亿参数的稠密模型),而它每个词只用 130 亿参数。

这个想法并不新:1991 年就有一篇论文提出了它,作者之一是杰弗里·辛顿。但直到几年前,它都很难训练,动不动就失控。如今它已经是常规做法:

总参数,对比每个词实际干活的参数线性坐标的横条,按模型从小到大排列。整条是总参数,红色部分是每个词实际干活的参数。 gpt-oss-120b: 117 B 中的 5.1 B · 4.4%. Qwen3-235B-A22B: 235 B 中的 22 B · 9.4%. Llama 4 Maverick: 400 B 中的 17 B · 4.3%. DeepSeek-V3: 671 B 中的 37 B · 5.5%. Kimi K2: 1,000 B 中的 32 B · 3.2%. DeepSeek-V4-Pro: 1,600 B 中的 49 B · 3.1%. Kimi K3: 2,800 B 中的 104 B · 3.7%.
故意用了线性坐标:红色部分,也就是每个词实际干活的部分,几乎看不见。数据来自各模型的官方模型卡。

那闭源模型呢,比如 Claude、GPT 或 Gemini?这些公司不公开架构,外人无从得知。例外是 Gemini 1.5 Pro,它的技术报告写明是 MoE。

小字条款:算起来像小模型,占起来像大模型

陷阱就在这里,也是想在自己电脑上跑这些模型的人最容易搞混的地方:

  • 计算量取决于激活参数。算得少,每个词就出得快、成本低。
  • 占用的内存取决于总参数。所有专家都得装进显卡内存,因为下一个词路由器可能要用到任何一个。

最清楚的例子是 OpenAI 的开放模型 gpt-oss-120b:每个词用 51 亿参数,但总共有 1170 亿。算起来像小模型,占起来像大模型。它能放进一块 80 GB 的服务器 GPU,是因为它的专家权重压缩到了每个参数约 4 位,而不是因为它是 MoE。

试试这个计算器:选一个模型,或者拖动滑块,看看放在哪里才装得下。

计算器:占多少内存,算多少?

每个权重的位数
每个词用到模型的多少100 个方格亮了 4 个:每个词用到模型的 4.4%。 权重占用的内存(对数坐标),附三种参考硬件内存:59 GB。需要一块 80 GB 的服务器 GPU。

100 个方格亮了 4 个:每个词用到模型的 4.4%。
内存:59 GB。需要一块 80 GB 的服务器 GPU。
计算量:每个词约 10 GFLOP。

计算量像 5.1 B 的稠密模型,内存却像 117 B 的:内存是计算的 23 倍。

117 B
5.1 B

在家运行通常用 4 位;16 位是训练时的精度。 这里只算权重。对话的内存(KV 缓存)另算,而且随每个词、每个用户增长。

有两组值得对比,因为它们出自同一个家族:Qwen3-32B(稠密)对比 Qwen3-30B-A3B(MoE),以及 Gemma 4 31B 对比 Gemma 4 26B A4B。每组占的内存差不多,但 MoE 每个词的计算量少 8 到 10 倍。谷歌介绍自家的 MoE 时说,它几乎和 40 亿参数的模型一样快。

要是有人说他的模型“只用 5B”,你就问问它占多少内存。这就像炫耀自家厨房很省煤气,却不提它占了一整个工业区。

还是没看明白?看看厨师长怎么分配

点一个字,看厨师长把它交给谁

8 位厨师(专家),以及每位接了几个字

  1. 厨师 1 · 2 个字
  2. 厨师 2 · 2 个字
  3. 厨师 3 49% 5 个字
  4. 厨师 4 51% 5 个字
  5. 厨师 5 · 2 个字
  6. 厨师 6 · 2 个字
  7. 厨师 7 · 4 个字
  8. 厨师 8 · 4 个字

“厨”交给厨师 4(51%)和厨师 3(49%)。处理这个字时,其余六位在休息。

这里的分配是为了说明原理而编的:由每个字的一个固定算式得出。在真正的模型里,厨师长是在训练中学会分配的,几十层里每一层各分一次,而且不按话题分。

什么时候用哪种

如果你用的是 ChatGPT、Claude 或者任何 API,就什么都不用选:你按词付费,MoE 省下的钱(如果有的话)已经体现在价格里了。只有模型要你自己来跑时,这个问题才重要。

什么时候用稠密模型,什么时候用 MoE二乘二的图。横轴:可用内存,从少(一块显卡)到多(一台服务器)。纵轴:同时在用的用户,从少到多。内存少、用户少:稠密模型。内存少、用户多:小的稠密模型,或者干脆用 API。内存多、用户少:两种都行,放得下的话 MoE 质量更高。内存多、用户多:MoE,这里最省。另外:如果你用的是 API,就不用选,MoE 省下的钱已经体现在价格里。
示意图:分界线取决于你的硬件和访问量。请用自己的场景实测。
如果…更合适原因
只有一块显卡,内存不多稠密模型内存相同时,稠密模型每个词都能用上全部参数
用户少,希望每次回答的耗时都一样稠密模型没有路由器,就没有意外:每个词的成本都一样
要用少量数据再训练(微调)稠密模型MoE 更早过拟合,调起来也更麻烦
同时在用的用户多,内存充足MoE这时每个词省下的计算量就变成了真金白银
想让每一份计算预算换来最高的质量MoE存下更多知识,却不用每个词都为它付费

三个常见的误解

  • “它每个词只用 5B,所以 5B 模型放得下的地方,它也放得下。” 不对:内存由总参数决定。gpt-oss-120b 得给 1170 亿参数都留位置,对话本身的内存还要另算。
  • “每个专家精通一个话题。” 不对:在 Mixtral 里,生物、哲学和科学论文这几类文本分给各个专家的比例几乎一样。它们实际在做什么,详见《MoE 的误解》。
  • “MoE 总是更快。” 它算得少,没错。但用户一多,每个词要找的专家各不相同,几乎每个专家都得读一遍,而最忙的那个专家决定了速度。请用自己的场景实测,别只看模型卡。

三句话总结

  1. 稠密模型每个词都用上它的全部;MoE 存得多,用得少。
  2. 激活参数 → 计算量。总参数 → 内存。 两个数字都要问清楚。
  3. 内存少、用户少,用稠密模型。内存多、访问量大,或者中间隔着 API,用 MoE。

如果你还不清楚参数或神经元是什么,可以先看这节课:逻辑回归还是神经网络?

现在你知道了:为什么 Kimi K3 有 896 位厨师,每个词却只有十六位干活。其余的都在内存里等着,把 GPU 吃得满满的。

参考资料

查阅于 2026 年 10 月 5 日。计算器的算式是我自己列的:内存 = 总参数 × 位数 ÷ 8;计算量 ≈ 每个词、每个激活参数 2 次运算(Kaplan 等人,公式 2.2)。

**本文是怎么写的:**根据我的笔记,由 Claude 协助调研和撰写。数字来自上面的模型卡和论文。模型更新很快,所以这张表很快就会过时。插图都是原创的。中文版由 Claude 从西班牙语翻译。