好论文2026-04-29 10:00

稀疏反而让"投机"更便宜——Cohere 给 MoE × speculative decoding 算的一笔账

导读

直觉是这样的:speculative decoding 让一个小 draft 模型先猜 K 个 token,再让大模型一次性 "验证"——验证步骤是 batched forward,意味着 batch size 突然从 1 跳到 K。批越大,每个 token 越省时间,是 dense 模型的传统加速来源。

直觉以为稀疏架构会让 speculative decoding 的"批量验证"更难做。Cohere 一篇刚发的工程稿反过来:MoE 的低算术强度让验证在中等 batch size 上几乎免费,再叠加"相邻 token 经过同一批专家"的时间相关性,二阶收益还能再砍 20–31%。

Cover for Cohere's blog post on MoE × speculative decoding
图注:Cohere 4 月 24 日博文配图。来源:[Cohere](https://cohere.com/blog/mixture-of-experts-models-get-more-from-speculative-decoding)。

但这条直觉到了 MoE 上反过来。Cohere Foundations 团队的 Ekagra Ranjan 在 4 月 24 日发的一篇博文里给出一个反直觉断言:MoE 的稀疏,看起来像是 batched 验证的复杂化,实际上让 speculative decoding 在多个方向上一起变快。

先搞清楚 speculative decoding 解决的是什么

LLM 推理在小 batch size(即"用户单聊"那种场景)下,几乎完全是带宽受限的——卡的瓶颈不是算力,而是把权重从 HBM 搬到片上 SRAM 的速度。每解码一个 token,整组权重就要被搬一次,可贵的算力大部分时间在等。

Speculative decoding 用一个轻量 draft 模型先一口气猜 K 个 token,再用大模型一次性验证——把 K 个独立解码塞进一次 forward 里,摊薄权重搬运的成本。如果 draft 模型猜得够准,每次 forward 的"实际产出"从 1 个 token 变成 K 个。

经典实现里,K 通常是 4-8。

Dense 模型的故事:速度收益随 batch 上升而递减

Ranjan 的对照组是 Cohere 的 Command A(111B)dense 模型。它的曲线很经典:BS=1 时 speculative decoding 给出最大加速比,BS 上升时加速比单调下降——因为 dense 模型在更大 batch 上会从带宽受限切换到算力受限,验证那一步就不再"免费"了。

也就是说,dense 模型里 speculative decoding 是单聊场景的优化,越是高并发服务,这个 trick 越没用。

MoE 模型的反直觉:曲线不再单调

Cohere MoE(k=8,N=128——每个 token 只激活 128 个专家中的 8 个)做 speculative decoding 时,加速曲线不再单调

Empirical / theoretical expected active experts under speculative decoding
图注:speculative decoding 下"被激活的专家数"——经验值(实线)vs 假设独立的理论值(虚线)。token 越多,理论值线性涨;实际值由于"相邻 token 走同一群专家"的时间相关性,涨得更慢。来源:[Cohere](https://cohere.com/blog/mixture-of-experts-models-get-more-from-speculative-decoding)。

机制是这样的——MoE 的算术强度由 k/N 决定(被激活的专家比例)。k=8 / N=128 = 6.25%。这个值很低,意味着即使 batch 涨到中等大小,模型仍然在带宽受限的区间里——验证的边际成本几乎为零

具体数字:Cohere MoE 在 BS=1 上拿到 1.95× 的端到端加速;当 batch 升到 BS=4 做验证时,验证那一步相对单 token 的成本比 (Tt(4) / Tt(1)) 是 1.25×——等于花 1.25 倍的时间做了 4 倍的活。

二阶收益:时间相关性

文章里更耐看的是第二个发现:speculative decoding 一次验证 K 个 token,理论上每个 token 会激活自己的 8 个专家——总活跃专家数是 8K。但实际数据显示,相邻 token 的专家选择高度重叠——k=8 设定下,相邻两 token 的专家重叠系数是 0.381(38.1%)。

把这个相关性算进去,K=3 时实际唯一专家数是 20.36 个,而独立假设下应该是 25.4 个。相邻 token 同走一群专家这件事——把内存搬运需求又砍掉了 20–31%。

意思是:MoE 模型在 speculative decoding 下不仅"算术强度低让验证免费",还附赠"专家路由的时间局部性"——这是 dense 模型完全不存在的二阶收益。

这篇没测到的事

Ranjan 自己列出了一处机制失效的边界:

  • 他用了一个 Amdahl 定律近似估算验证成本占比,估出来是 1.46×,但实际测出来是 1.25×。也就是这个简化模型高估了验证成本约 17%——好消息是真实表现比估算更好;坏消息是预测能力还不够强。

文章本身没测的事还有几样:

  • 只测了 Cohere MoE 这一个家族——k=8 / N=128 是个特定配比;DeepSeek V3(k=8 / N=256)、Qwen3-MoE 这些不同配比的开源 MoE 不一定服从同一条曲线
  • 没测大 batch 区间(BS > 16)——服务化场景的真实 batch 通常更大;Cohere 的甜蜜点在中等 BS,更大区间能不能保住还不知道
  • 没测 K(draft 长度)的扫描——速度增益对 draft 模型质量极敏感,draft 模型差一点点,"猜中率"就掉,加速比会掉得很快

对 AI 产线意味着什么

speculative decoding 长期以来被当作 dense 模型的 inference trick;这篇 paper 说它其实是 MoE 的更天然客户——稀疏架构的算术强度让"批量验证"几乎免费,专家路由的时间相关性又附赠了二阶收益。

往下推两步:在中端 BS 区间,MoE 服务的边际成本可以比 dense 服务降得更多;以及,"哪种架构最便宜地服务"这件事,正在从"算力"转向"算力 × 路由相关性"——后者是个 MoE 独占的维度,dense 模型再怎么扩规模都拿不到。

把互动收束在正文之后

第一版正式上线会把点赞、收藏和评论放在正文之后,保留杂志式留白,同时让登录用户能留下真实反馈。

互动

评论区

评论会在审核通过后公开显示。

0/500· ⌘/Ctrl + Enter 提交

当前环境尚未配置 Supabase,互动功能暂时不可用。

想参与互动?前往登录

  • 还没有公开评论 — 欢迎成为第一位留言的人。累计历史互动 0,新评论将从这里重新开始。

相关阅读