腾讯混元把投机解码做成了一整套开源工具链
7月29日,腾讯混元团队把投机解码整套训练 + 部署栈搬到了 GitHub 上:AngelSpec(GitHub: Tencent/AngelSpec),MIT 协议,目前 47 stars / 3 forks(发布首日)。这不是单点开源一个 drafter 权重,而是把混元自研的两类 drafter、统一的训练 pipeline、vLLM / SGLang 部署后端,以及配套的 paper / docs 一起打包放出来,顺带把 Hy3-295B-A21B 上跑出来的核心 benchmark 也贴在了 README 里。
它到底在解决什么问题
LLM 自回归解码是「一次前向只能出一个 token」的瓶颈。投机解码(speculative decoding)用一个轻量 drafter 先猜一串候选 token,再让目标模型用一次前向整体验证、提交可接受的前缀和奖励 token,从而把「一次迭代推进多个 token」变成现实。AngelSpec 把这件事拆成三层:
- 训练层:为不同 workload 定制互补的 drafter——MTP drafter 用丰富、对话风格的数据训练,适合高熵开放式对话;块扩散 drafter(DFly)用代码 + 数学数据加强,吃结构化长可预测片段的红利。
- 架构层:提出 DFly——一个块扩散框架,hybrid target-conditioning backbone + 前驱条件自回归头,既保留 DFlash 的并行吞吐,又把「位置间依赖」这件事修了回来。
- 推理层:集成 D-cut,把 target 验证算力视作 batch 级共享资源,根据在线负载与各请求的置信度动态分配验证深度,避免固定验证深度在高并发下浪费 batch 容量。
关键数字(Hy3-295B-A21B, TP=8)
- DFly 平均接受长度 4.79(MTP 3.00 / DFlash 3.69),相当于相对 MTP +59.7%、相对 DFlash +29.8%。
- 吞吐加速:在 4-64 并发下,DFly 相对自回归解码实现 1.98–2.40× 加速,比 DFlash 再高 10.5–11.8%。
- 结构化场景优势最大:HumanEval 上平均接受长度 5.52,Math500 上 5.23,GSM8K 上 5.53。
- 线上流量:在 Hy3 live traffic(TP=8, 8× H20, 并发 2-64)上,DFly 在高置信前缀上跑赢 D-cut 的 aggregate throughput 拐点(并发 ≥48 后饱和)。
Qwen3-8B 同样被验证,DFly 平均接受长度 5.41,所有 5 个数学/代码 benchmark 上都是第一;MT-Bench 上 DSpark(5.32 平均)略好,也契合作者对「DFly 主打代码/数学,对话交给 MTP」的定位。
这件事值得多看一眼的几个角度
1. 框架一体化的方向感。 AngelSpec 不是「再加一种 drafter」,而是把 6 种 draft 架构(DFly / DFlash / DFlare / Eagle3 / DSpark / MTP)统一塞进同一套训练 pipeline——切架构是改配置,不再重写训练代码。配合 Mooncake 做 disaggregated hidden-state 生成,推理引擎和工作进程是两组 GPU,通过 tensor store 解耦,能各自独立扩缩容。这条路和 LightSeek Foundation 的 TorchSpec 一脉相承,但工程化完整度明显上了一个台阶。
2. 「workload heterogeneity」是这次的核心论点。 论文开篇就讲:不要在均匀数据混合上训一个「通用 drafter」——对话高熵场景需要 MTP 这种短 draft,代码/数学低熵长可预测场景需要块扩散。AngelSpec 用同一框架训出两种互补的 drafter,再用 D-cut 在推理时按请求/在线负载动态分配验证深度。这是一条「训练数据 + 架构 + 推理策略」协同设计的路线,而不是单点优化。
3. DFly 的两个具体技术贡献值得拎出来。 一是 hybrid target-conditioning:DFlash 的全局非线性变换(ct)+ DFlare 的 per-layer 标量加权(ft(i))做加性组合 + RMSNorm,既保留跨层交互的表征能力,又给每一层 draft 单独的 target view,代价只是 D×T 个标量权重(softmax 后可预计算)。二是 hidden-correction head:在并行 backbone 之后挂一个轻量顺序头,把位置 i 的 draft 表示和「位置 i-1 采样出的 token embedding」一起喂进 SwiGLU,得到位置 i 的条件分布,把并行预测从「边际分布」升级成「前缀条件分布」。消融实验里 hidden-correction 比 Markov head 在所有 benchmark 上都更优。
4. 训练侧的两个易被忽略的工程化能力。 一是 TTT(Training-Time Test):MTP 块在训练时按自回归方式展开 D 步,每个深度都用 argmax 预测喂下一步,显式制造 train-inference mismatch 后再学着恢复——这是 EAGLE-3 的做法,在 MoE + 长上下文场景下尤其值钱。二是 online acceptance evaluation:训练过程中挂一个真投机解码评估服务,直接读当前 checkpoint 在 serving engine 里的接受长度和按位接受率,而不是离线算 proxy 指标。
5. 实际的硬件和数据成本。 8 GPU 单机 quickstart(4 推理 + 4 训练)就能跑 Qwen3-8B DFly。多节点示例直指 Hy3(DFly 训出 ,MTP 训出 ),并且同时给了 High-think 变体()以覆盖推理场景。文档里明确提示 CUDA 12 主机要装对应版本的 wheel(PyPI 默认 CUDA 13),这是个真实会踩的坑。
所以呢
LLM 推理优化的竞争点已经从「训出更大的模型」明显转向「同样模型如何跑得更便宜」。AngelSpec 给出的不是某个新数字,而是一套「workload-aware 训练 + 异构 drafter + 自适应验证深度」的完整打法,把投机解码从 paper trick 推进到 production stack。腾讯混元这次走的是 EAGLE / DFlash 之后开源生态里少见的「全家桶式」路线——对做 LLM serving 的工程团队而言,这意味着少走很多重复造轮子的路;对研究者而言,MoE + 长上下文 + 在线 batch 这三个真实生产约束,终于有了可复现的基线。
如果只看一个数字:DFly 在 Hy3-A21B 上把平均接受长度从 3.00(MTP)拉到 4.79,对应 1.98–2.40× 自回归加速——这是当下一线大模型(295B MoE)上,公开报告中能拿到的最好投机解码结果之一。开源意味着同行可以直接在自己的 serving 集群上复现这条数字。