
智能
直觉是这样的:speculative decoding 让一个小 draft 模型先猜 K 个 token,再让大模型一次性 "验证"——验证步骤是 batched forward,意味着 batch size 突然从 1 跳到 K。批越大,每个 token 越省时间,是 dense 模型的传统加速来源。
直觉以为稀疏架构会让 speculative decoding 的"批量验证"更难做。Cohere 一篇刚发的工程稿反过来:MoE 的低算术强度让验证在中等 batch size 上几乎免费,再叠加"相邻 token 经过同一批专家"的时间相关性,二阶收益还能再砍 20–31%。

但这条直觉到了 MoE 上反过来。Cohere Foundations 团队的 Ekagra Ranjan 在 4 月 24 日发的一篇博文里给出一个反直觉断言:MoE 的稀疏,看起来像是 batched 验证的复杂化,实际上让 speculative decoding 在多个方向上一起变快。
LLM 推理在小 batch size(即"用户单聊"那种场景)下,几乎完全是带宽受限的——卡的瓶颈不是算力,而是把权重从 HBM 搬到片上 SRAM 的速度。每解码一个 token,整组权重就要被搬一次,可贵的算力大部分时间在等。
Speculative decoding 用一个轻量 draft 模型先一口气猜 K 个 token,再用大模型一次性验证——把 K 个独立解码塞进一次 forward 里,摊薄权重搬运的成本。如果 draft 模型猜得够准,每次 forward 的"实际产出"从 1 个 token 变成 K 个。
经典实现里,K 通常是 4-8。
Ranjan 的对照组是 Cohere 的 Command A(111B)dense 模型。它的曲线很经典:BS=1 时 speculative decoding 给出最大加速比,BS 上升时加速比单调下降——因为 dense 模型在更大 batch 上会从带宽受限切换到算力受限,验证那一步就不再"免费"了。
也就是说,dense 模型里 speculative decoding 是单聊场景的优化,越是高并发服务,这个 trick 越没用。
Cohere MoE(k=8,N=128——每个 token 只激活 128 个专家中的 8 个)做 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 自己列出了一处机制失效的边界:
文章本身没测的事还有几样:
speculative decoding 长期以来被当作 dense 模型的 inference trick;这篇 paper 说它其实是 MoE 的更天然客户——稀疏架构的算术强度让"批量验证"几乎免费,专家路由的时间相关性又附赠了二阶收益。
往下推两步:在中端 BS 区间,MoE 服务的边际成本可以比 dense 服务降得更多;以及,"哪种架构最便宜地服务"这件事,正在从"算力"转向"算力 × 路由相关性"——后者是个 MoE 独占的维度,dense 模型再怎么扩规模都拿不到。
第一版正式上线会把点赞、收藏和评论放在正文之后,保留杂志式留白,同时让登录用户能留下真实反馈。
互动
评论区
评论会在审核通过后公开显示。
当前环境尚未配置 Supabase,互动功能暂时不可用。
想参与互动?前往登录