**MTP 与块并行投机解码的统一训练框架**
[](https://arxiv.org/abs/2607.25852)
[](https://angelspec.readthedocs.io)
[](https://huggingface.co/collections/AngelSlim/angelspec)
[](LICENSE)
AngelSpec 是一个原生的 torch 框架,用于训练投机解码的 draft 模型,涵盖了自回归 MTP 起草和块并行 DFlash 系列。它是 [AngelSpec 技术报告](https://arxiv.org/abs/2607.25852)背后的训练框架:报告中的所有 draft 模型——即经过 TTT 训练的 MTP drafter 和 DFly 系列——都是使用该框架训练并发布的。
## 最新消息
- **[2026/07/29]** 我们发布了 AngelSpec v0.1.0,支持 MTP 和块并行投机解码训练。请查看我们的[技术报告](https://arxiv.org/abs/2607.25852)和[已发布的模型](https://huggingface.co/collections/AngelSlim/angelspec)。
## 核心特性
- **6 种 draft 架构** —— DFly、DFlash、DFlare、Eagle3、DSpark、MTP —— 集成于同一个训练流水线中;只需修改配置即可切换
- **基于 TTT 的 MTP 训练** —— on-policy 的多深度 rollout,显存占用接近单次因果遍历;通过 Ulysses 序列并行支持长达 128k 的长上下文训练
- **与接受率对齐的目标** —— 包含 CE、top-k KL、LK 损失,D-PACE 加权,以及端到端 TV,均可通过配置灵活组合
- **感知文档的序列拼接** —— 采用 Megatron 风格的定长拼接,在 DFlash 和 MTP 路径上均严格执行跨文档隔离
- **在线评估** —— 训练期间使用最新的 checkpoint 执行真正的投机解码,报告由服务引擎测量的平均接受长度和按位置计算的接受率
## 架构
推理和训练作为独立的 GPU worker 组运行,它们通过 [Mooncake](https://github.com/kvcache-ai/Mooncake) tensor 存储进行连接,因此 hidden-state 的生成和优化可以独立扩展。这种解耦的基础架构源自 [TorchSpec](https://github.com/lightseekorg/TorchSpec);AngelSpec 在此基础上扩展了上述架构、目标和训练特性。
## Draft 架构
| 架构 | 方法 | 核心思想 |
|-------------|--------|----------|
| **DFly** | 块并行 | 混合目标条件 + hidden-correction AR head |
| **DFlash** | 块并行 | Anchor 采样 + 并行块生成 |
| **DFlare** | 块并行 | DFlash + 可学习的逐层目标融合 |
| **Eagle3** | 自回归 TTT | 带有输入融合的测试时训练 |
| **DSpark** | 混合 | DFlash 主干 + EAGLE 风格的自回归 head |
| **MTP** | 单头 TTT | 完整的 MoE decoder 层作为 draft (原生支持 Hy3) |
有关详细信息和权衡,请参阅 [draft 模型系列](https://angelspec.readthedocs.io/en/latest/concepts/draft_model_family.html)文档。
## 快速开始
```
# 安装 AngelSpec + vLLM backend
pip install -e ".[vllm]"
pip install mooncake-transfer-engine
# 单节点快速入门(8 GPUs:4 inference + 4 training)
./examples/qwen3-8b-dfly/run.sh
# 从 CLI 覆盖 config 值
./examples/qwen3-8b-dfly/run.sh training.learning_rate=5e-5 training.num_train_steps=500
```
或者设置一个 conda 环境(也会安装 mooncake):
```
./tools/build_conda.sh 1 vllm # or: sglang
micromamba activate angelspec
```
## 示例
多节点(目标模型为 Hy3)
| 示例 | 架构 | 模式 | 已发布的模型 |
|---------|-------------|------|----------------|
| [hy3-dfly](examples/hy3-dfly/) | DFly | 从零开始训练 | [AngelSlim/Hy3-DFly-Block8](https://huggingface.co/AngelSlim/Hy3-DFly-Block8) |
| [hy3-mtp](examples/hy3-mtp/) | MTP | 从零开始训练 | [AngelSlim/Hy3-MTP-TTT3](https://huggingface.co/AngelSlim/Hy3-MTP-TTT3) |
单节点(目标模型为 Qwen3-8B)
| 示例 | 架构 | 模式 | 已发布的模型 |
|---------|-------------|------|----------------|
| [qwen3-8b-dspark](examples/qwen3-8b-dspark/) | DSpark | 从零开始训练 | — |
| [qwen3-8b-dfly](examples/qwen3-8b-dfly/) | DFly | 从零开始训练 | [AngelSlim/Qwen3-8B-DFly-Block8](https://huggingface.co/AngelSlim/Qwen3-8B-DFly-Block8) |
| [qwen3-8b-mtp](examples/qwen3-8b-mtp/) | MTP | 从零开始训练 | [AngelSlim/Qwen3-8B-MTP-TTT3](https://huggingface.co/AngelSlim/Qwen3-8B-MTP-TTT3) |
| [qwen3-8b-dfly-cpt](examples/qwen3-8b-dfly-cpt/) | DFly | CPT (从 ckpt 开始) | 从 AngelSlim/Qwen3-8B-DFly-Block8 继续训练 |
可用的训练配置
| 配置 | 架构 | 特性 |
|--------|-------------|----------|
| `configs/vllm_qwen3_8b_dfly.yaml` | DFly | 块并行 + hidden correction |
| `configs/vllm_qwen3_8b_dflare.yaml` | DFlare | 逐层目标融合 |
| `configs/sglang_qwen3_8b_dflash.yaml` | DFlash | SGLang 后端 |
| `configs/sglang_qwen3_8b_dspark.yaml` | DSpark | Markov head + 置信度 |
| `configs/vllm_qwen3_8b_mtp_pack_usp_40k.yaml` | MTP | 拼接 + USP 40k 序列 |
## 已发布的模型
使用 AngelSpec 训练的 draft 模型:
| 模型 | 架构 | 目标模型 | 模式 |
|-------|-------------|--------|------|
| [AngelSlim/Hy3-DFly-Block8](https://huggingface.co/AngelSlim/Hy3-DFly-Block8) | DFly | Hy3 | No-think |
| [AngelSlim/Hy3-DFly-Block8-Think-High](https://huggingface.co/AngelSlim/Hy3-DFly-Block8-Think-High) | DFly | Hy3 | High-think |
| [AngelSlim/Hy3-MTP-TTT3](https://huggingface.co/AngelSlim/Hy3-MTP-TTT3) | MTP | Hy3 | No-think |
| [AngelSlim/Qwen3-8B-DFly-Block8](https://huggingface.co/AngelSlim/Qwen3-8B-DFly-Block8) | DFly | Qwen3-8B | No-think |
| [AngelSlim/Qwen3-8B-MTP-TTT3](https://huggingface.co/AngelSlim/Qwen3-8B-MTP-TTT3) | MTP | Qwen3-8B | No-think |
## 基准测试
### 离线吞吐量 (HY3-295B-A21B, TP=8)
在 temperature 为 1 时,不同并发级别下的 output-token 吞吐量 (Tok/s) 以及相对于 AR 的加速比。每个单元格使用 3 个 120 秒的窗口;Avg. 为六个数据集的算术平均值。
### 线上流量吞吐量 (D-cut)
在 Hy3 线上流量上的 D-cut (Hy3-295B-A21B, TP=8, 8× H20;并发 2–64)。**(a)** 总吞吐量与每用户解码速度的对比 —— 越靠右上方越好。**(b)** 总吞吐量与并发的对比 —— 当并发超过 48 时 DFly 已达到饱和,而 D-cut 仍能继续将额外的负载转化为吞吐量。
## 许可证
本项目采用 [LICENSE](LICENSE) 发布。AngelSpec 基于 LightSeek Foundation 开发的 [TorchSpec](https://github.com/lightseekorg/TorchSpec) 构建,并使用 [Mooncake](https://github.com/kvcache-ai/Mooncake) 进行解耦的 hidden-state 传输。
## 引用
如果您觉得 AngelSpec 对您有帮助,请引用:
```
@article{angelspec2026,
title = {AngelSpec: Towards Real-World High Performance Inference with Speculative Decoding},
author = {Liu, Hong and Cen, Rui and Shi, Junhan and Qin, Guangshuo and Zhang, Jiebin and Liu, Tianyu and Fan, Runzhi and Zhao, Guoliang and Xie, Ruobing and Zhang, Kai and Liu, Song and Yu, Guanghua and Zhu, Jianchen},
journal = {arXiv preprint arXiv:2607.25852},
year = {2026}
}
```