腾讯发布 torch-native 框架支持块并行推测解码,为大规模 LLM 训练和推理优化速度。对从事 LLM 工程的开发者实用价值高。
人工智能
腾讯发布了 AngelSpec,这是一个开源、基于原生 PyTorch 的 speculative decoding 草稿模型训练框架,同时覆盖自回归多 token 预测(MTP)与 block-parallel DFlash 系列。
大多数 speculative decoding 研究都在寻找一个能在混合基准测试的平均分上表现良好的通用 drafter。但真实的线上服务流量并不像这种人工构造的混合数据。AngelSpec 将工作负载的异构性视为首要设计约束,并围绕不同负载分别优化模型结构、训练数据和验证深度。
Speculative decoding 是无损的。一个轻量级 drafter 会提出若干未来 token,随后 target model 使用 rejection sampling,在一次 forward pass 中统一验证这些 token。最终的加速效果取决于两个因素:有多少草稿 token 能被接受,以及完成整个草稿生成与验证轮次需要多长时间。
在不同领域中,这两个指标往往朝着相反的方向变化。在高熵、开放式的对话中,符合语义的续写可能有很多种。target model 可能选择其中任何一种,因此随着 proposal depth 增加,接受率会迅速下降。生成并验证一个很长的 token 块只会浪费计算资源。自回归 MTP drafting 更适合这种场景,因为它提出的是较短的候选序列。
代码和数学推理则有所不同。编程语法、重复出现的标识符、形式化表达式以及逐步推导,会对未来 token 形成更强的约束。这类工作负载能够产生更长的可预测区间,而 block-parallel drafting 恰好可以有效摊薄这些区间的生成成本。
因此,AngelSpec 提供了两个相互补充的 drafter,而不是一个折中的通用模型。MTP 模型使用丰富、多样且以对话为导向的数据进行训练;block-diffusion 模型则通过聚焦代码和数学的样本进行强化。
原始 Hy3 模型只使用单个 MTP 层进行训练,没有采用循环式的自条件展开。在 inference 阶段,这个模块可以被循环复用,但训练目标从未让它为较长的自生成链做好准备。误差会随着深度不断累积,因此第二和第三个草稿位置的接受率明显低于第一个位置。
AngelSpec 通过一种参数共享的多深度方案,解决了训练与 inference 之间的不匹配问题。它保留 D 个逻辑预测深度,但只复用一个物理 MTP 模块。在训练过程中,该模块会以自回归方式展开 D 步,每一步的预测结果都会作为下一次调用的输入。遵循 EAGLE-3 的 Training-Time Test 原则,深度 k+1 接收的是深度 k 的 arg max 预测,而不是真实 token。不同深度共享参数,但监督信号仍然与深度一一对应:teacher target 在每个深度都会向未来移动一个位置。
另外两项设计贡献了大部分收益。第一,target backbone 与 target language-model head 均被冻结,同时来自 backbone 的 MTP 输入会被 detach。这样,drafter 可以改进自己的 proposal distribution,而不会改变验证过程必须保持的分布。第二,训练采用 target-model rollout:response 由冻结的 target model 生成,而不是直接取自原始参考语料库。这样产生的 token 选择、hidden-state 轨迹以及局部不确定性模式,都与 MTP 在实际服务中需要逼近的对象完全一致。
测得的提升恰好集中在预期的位置。在 T = 0 时,平均接受率从 52.8% 提升至 66.4%,平均接受长度从 2.58 提升至 2.99。第一个位置的接受率基本保持不变,从 0.799 小幅升至 0.814。真正拉开差距的是更深位置:在 GSM8K 上,p3 从 0.290 提升至 0.706;在 HumanEval 上,则从 0.387 提升至 0.757。
DFly 是一种 block-diffusion 架构。它以 DFlash 为基础,引入了两项结构性改进。
**混合 target-conditioning backbone:**DFlash 将 target model 多个层的 hidden state 拼接起来,再通过一个 fully connected layer 进行转换,生成共享的 context feature。随后,每个草稿层都会接收同一份 context,这限制了不同层的专业化能力。DFlare 则为每个层学习各自的融合权重,使每个草稿层都能以独立视角观察 target model 的层级结构,但它舍弃了 DFlash 中可学习的跨层转换。DFly 将二者结合起来:FC 分支负责建立统一的语义基础,per-layer fusion 则在此基础上作为残差细化。新增分支只引入 D × T 个标量权重,其 softmax 系数可以在训练完成后预先计算。
**Predecessor-conditioned autoregressive head:**并行 backbone 只能根据已经接受的 context 预测 block 中的各个位置。它无法知道前面草稿位置实际选择了哪个续写结果,从而造成越靠后的 token 接受率越低。DFly 在并行 backbone 之后增加了一个小型 sequential head,将每个位置的 marginal prediction 转换为基于前缀条件的分布。计算成本较高的 backbone 仍然保持完全并行,只有这个小型 head 需要从左到右依次运行。
在 Qwen3-8B 上,DFly 的平均接受长度达到 5.41,而 DSpark 为 5.32、DFlash 为 4.57、MTP 为 3.24。在全部五个数学和代码 benchmark 上,DFly 都取得了最佳结果。DSpark 在 MT-Bench 上仍以 3.77 略微领先于 DFly 的 3.67,这也符合 DFly 主要面向代码和数学场景的定位。
在 Hy3-A21B 上,差距更加明显。DFly 达到 4.79,DFlash 为 3.69,MTP 为 3.00,相对增幅分别为 29.8% 和 59.7%。在报告的全部六个 benchmark 上,DFly 都实现了提升。
Hy3-A21B 在 greedy decoding 下的累积消融实验展示了这些收益的来源:DFlash backbone 为 3.77;DFly backbone 提升至 4.40;加入 Markov head 后达到 4.56;再加入 hidden correction 后达到 4.60;最后引入代码和数学数据后达到 4.75。扩充的数据集新增了 70 万条 prompt,其中 50 万条代码数据来自 OpenCodeInstruct 和 OpenCodeReasoning,20 万条数学数据来自 Big-Math。在生成 response 之前,任何与评估样本共享一段连续 16-token 序列的 prompt 都会被移除。
AngelSpec 构建于 TorchSpec 之上,并在多个方面对其进行了扩展。其底层采用解耦式架构:inference engine 运行冻结的 target model,并通过由 Mooncake 支持的 RDMA store,将 hidden state 直接以流式方式传输到分布式训练 worker。系统通过公开的 vLLM API,在 vLLM worker 进程内部捕获 hidden state,包括 speculative hidden-state extraction hook 和自定义 KV connector,无需 fork inference engine。
对这项工作至关重要的扩展包括:
TTT rollout 会在整个序列上并行展开。系统通过编译后的 FlexAttention 与 logsumexp merging,隐式复现 causal-prefix-plus-diagonal attention 结构。内存占用仍接近单次 causal pass。
使用 Ulysses sequence parallelism 进行长上下文训练,并已在最长 128k token 的上下文长度上通过验证。每个本地 shard 都携带一个 D-token halo,使经过深度偏移的监督信号能够始终保留在当前 rank 内。
支持 document-aware sequence packing,并采用三种隔离机制:attention document gate、MTP 路径专用的 depth-shift document gate,以及 document-local position encoding。系统通过单元测试验证跨文档 attention 泄漏为零,从而保证文档之间相互隔离。
evaluation server 会定期在专用 GPU 上,针对最新 checkpoint 执行真实的 speculative decoding,并直接报告 serving engine 实际测得的平均接受长度和各位置接受率。
系统在三个层面提供可插拔接口:target(通过运行时 vLLM plugin 作为入口,无需修改源码)、objective(在共享 base 之上组合,并通过配置选择),以及 optimizer(Muon 可以作为 AdamW 的即插即用替代方案)。
后端按支持等级划分:vLLM 属于 first-class 后端,SGLang 和 HuggingFace Transformers 则由社区级支持。
项目在 Hugging Face 和 ModelScope 上发布了七个 checkpoint,其中包括 no-think 和 high-think 两种 DFly 变体。
AngelSpec 使用一套由配置驱动的 pipeline,统一训练六种草稿架构:DFly、DFlash、DFlare、Eagle3、DSpark 和 MTP。
DFly 将 Hy3-A21B 上的平均接受长度提升至 4.79,相比之下,DFlash 为 3.69,MTP 为 3.00。
在 HY3-295B-A21B、TP=8 的配置下,当并发数从 4 增加到 64 时,DFly-8 相比 autoregressive decoding 可实现 1.98–2.40× 的加速。
D-cut 将真实流量下的吞吐量提升至 c64 时的 981 tok/s,比 DFly 高出 15.7%,代价是接受率下降 2.8%。
请查看论文、GitHub Repo、Documentation、Hugging Face Collection 和 ModelScope Collection。这项研究的全部荣誉归属于该项目的研究人员。
Michal Sutter 是一位数据科学专业人士,拥有帕多瓦大学数据科学理学硕士学位。凭借在统计分析、machine learning 和 data engineering 方面的扎实基础,Michal 擅长将复杂数据集转化为可落地的洞察。