专家混合(MoE)

F17
概念 · AI 基础

专家混合(MoE)。

一个四千亿参数的模型,每令牌成本可以比一个七百亿参数的更低——这一次反转,悄悄让你在"参数量即成本"的年代攒下的所有经验法则全部作废。专家混合把账单劈成两份:算力只跟着每个令牌真正激活的那部分参数走,显存却要跟着全部参数走。所以同一个模型,租别人的 API 是笔划算买卖,放到自己的 GPU 上却是一次昂贵的误判。

STEP 1

一个数字变成了两个。

在稠密 Transformer 里,每一个参数都参与每一个令牌。喂进一个令牌,七百亿个权重全部与它相乘。专家混合模型则把每一层里的前馈块换成一排并列的块——也就是专家——外加一个小小的路由器:它读一眼令牌,从中挑出少数几个。这一层其余的权重,对这个令牌而言就闲着。

于是单一的参数量不再足以描述一个模型。你需要一对数字:

  • 总参数——必须常驻显存的全部,因为路由器下一个令牌可能伸手去拿任何一个专家。
  • 激活参数——每个令牌真正参与相乘的部分,也就是算力实际要付的账。

2026 年公开权重的这批模型,把这个落差摆得很清楚。Qwen3-235B-A22B 总量 2350 亿、激活约 220 亿,从 128 个专家的池子里路由出 8 个。Llama 4 Maverick 总量约 4000 亿、激活约 170 亿,除 128 个可路由专家外还有一个每个令牌都要经过的共享专家。Mistral Large 3 是 6750 亿总量、410 亿激活。DeepSeek-V4 的 Pro 配置约 1.6 万亿总量、490 亿激活,Flash 配置则是 2840 亿对 130 亿。注意它们在哪里收敛:总量相差七倍,激活量却全部落在大约 130 亿到 500 亿这一档——因为这一档才是一支服务集群能经济地推动令牌的区间。

厂商愿意讲清楚的时候,命名本身就编码了这一点——Qwen3-235B-A22B 就是"总量 2350 亿,A22B = 激活 220 亿"。而当一个模型只被描述成"一个 400B 的模型"时,你被告知的是显存账单,关于算力账单则一无所知。拿它跟任何东西比较之前,先把另一个数字要来。

STEP 2

为什么同一个模型租着便宜、自己养着贵。

租和买,向你收费的是不同的资源;而在把这两种资源拉开这件事上,专家混合比任何别的架构选择都更狠。

  • 用 API,你是按激活参数被计价的。服务商的每令牌成本由算术运算主导,而一个 235B/22B 的模型所做的运算量大致等同于一个 220 亿的稠密模型。这就是为什么开源 MoE 模型的挂牌价——各家托管商普遍落在每百万输入令牌 $0.15–$0.30 这个区间——摆在它们的名义体量旁边显得不可能。
  • 用自己的硬件,你是按总参数被计价的。每一个专家都得常驻,因为你无从得知下一个令牌需要哪一个。以 bf16 计,4000 亿总量大约是 800 GB 权重——在你为 KV 缓存分配第一个字节之前,就已经是十张 80 GB 的加速卡。量化到 4 比特能降到约 240 GB,但为了服务一个算力上相当于 170 亿的模型,那仍然是三张卡。
  • 真正的成本是闲置的资本。你在为一批显存付钱、供电、散热,而它在大多数令牌上什么也没干。对一家把上千个并发请求铺满整个专家池的服务商来说,这笔交易棒极了;对一支在固定集群上跑单一负载的团队来说,它糟透了——这正是 为智能体自建推理 里展开的那个论点。

这是本站最干净的一个"成本随部署形态反转"的例子。几乎所有其他的 成本、质量与延迟 权衡,无论你租还是买,方向都是一致的。唯独这一个指向相反的两边,而团队会在两个方向上同时犯错:看着 API 价格便宜就把 MoE 模型自建起来,或者一边嫌它"太大"一边按令牌为它的托管版本付钱。

STEP 3

批大小如何改变这笔买卖。

真正决定 MoE 对是否成立的那个微妙之处在于:这份节省会随并发度改变形状。

  • 批大小为一时,MoE 是本地部署的真实胜利——前提是装得下。生成单条流受限于显存带宽:加速卡读取权重的速度比给它派活的速度还快。MoE 模型每个令牌只读取被路由到的那些专家,所以一个 235B/22B 的模型解码速度大致等同于一个 220 亿的稠密模型,却带着大得多的知识量。这个前提毫不通融:一旦常驻权重溢出到系统内存或 SSD,搬运开销会把你省下的一切吞掉。
  • 批大小高时,每令牌的节省消退,吞吐的节省登场。六十个并发请求会路由到不同的专家,所以一个服务步骤反正也会碰到池子里的大部分——但它把这次读取摊到了六十个令牌上,而不是一个。这正是托管服务商实际运行的区间,也是为什么他们的定价反映的是一套单租户部署永远复现不了的激活参数经济学。
  • 该看的指标是利用率,不是每秒令牌数。一个跑在负载不足集群上的 MoE 模型,两份账单里最差的部分它全占了:总参数的显存,批大小为一的吞吐。如果你的流量是突发而非持续的,预置吞吐量与容量承诺 里那笔账在这里加倍成立。

还有一个值得在它于评测中突袭你之前先知道的可复现性小坑:在那些对每个专家每步可接收令牌数设上限的实现里,溢出的令牌会被改路或直接丢弃——于是哪些请求和你同批会改变你的输出。温度 0 救不了你。如果一个结果复现不出来、而你已经排除了采样,去看 可复现性与确定性;批次构成该被列进你的嫌疑名单。

STEP 4

它改变了你挑模型、跑模型的方式。

提示词写法和 智能体循环 设计几乎什么都不用改。变的是你所做的每一次比较的形状。

  • 别再把参数量读成能力。一个 1.6 万亿的 MoE 模型和一个 1.6 万亿的稠密模型不是可比的对象,也永远不会同时存在于同一个市场。按任务评测、每令牌价格,以及在你自己的并发度下的延迟去比较——就是 如何挑选模型 里那份清单——并把体量当作一个部署事实,而非质量信号。
  • "开放权重"和"你跑得动"已经分家了。如今许可最宽松的那批最强模型,都是总量超出你手上任何一台机器的 MoE 模型。许可证是真开放的;门槛在硬件账单上。这是 开放权重与封闭模型 那条界线眼下最锋利的版本。
  • 量化在这里回报更高,伤害方式也不同。因为显存是那个卡脖子的约束,降到 4 比特会直接换算成你不必再买的卡——但专家单个都很小,对一个很少被路由到的专家做激进量化,退化的恰恰是当初需要它的那类输入,而这在平均分的基准上看不出来。请在你自己的分布上测;见 蒸馏与量化
  • 稀疏性和你其他的加速手段并不像你以为的那样叠加。投机解码 依然有用,因为它同样是拿闲置算力换延迟——而闲置算力正是 MoE 模型多出来的东西。提示词缓存和批处理一如既往地有用。真正无法迁移的,是你照着稠密模型写下的任何一份容量规划。

默认做法:MoE 模型去租,稠密模型才自己养。托管这条路买到的是这套架构的好处——前沿级质量配小模型的算术开销——却不必买下让它成为可能的那批显存,而服务商的批处理是你复现不了的东西。只有当总权重能装进你的卡、还留得出 KV 缓存的余量,并且你能让整支集群保持满载时,才考虑自建 MoE;否则在同样的硬件上,一个体量减半的稠密模型会把你的流量服务得更好。当一家厂商只报一个参数量时,他告诉你的要么是显存账单、要么是算力账单,而你分不出是哪一个——先把这一对数字拿到手,再据以规划。

延伸:小模型与本地模型 讲你自己的机器上究竟装得下什么,预填充与解码 讲为何是带宽而非算术决定你的令牌速率,推理服务与获取方式 讲显存账单最终由谁吸收,以及 模型路由——同一个想法在系统层面的版本:把每个请求送到能答得了它的最小的那个东西上。