SpecForge
SGLang 团队出品的投机解码训练框架,训练 draft model 加速大模型推理达 2-4 倍
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
SGLang 团队出品的投机解码训练框架,训练 draft model 加速大模型推理达 2-4 倍
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
在 AI 应用落地的战场上,推理速度始终是绕不开的痛点。一个 70B 参数的大模型在 GPU 上生成一个 token 可能需要数百毫秒,这对于实时对话、代码补全等场景来说简直是灾难。开发者们绞尽脑汁优化,却常常发现"暴力堆硬件"成本太高。SpecForge 的出现,给这个问题提供了一个优雅的技术解法——投机解码(Speculative Decoding)训练框架。
图1:SpecForge 项目 Logo,由 SGLang 团队(LMSYS)出品
SpecForge 诞生于 2025 年 7 月,背后站着大名鼎鼎的 SGLang 团队——也就是 LMSYS 组织的主力开发者。LMSYS 可能对部分读者稍显陌生,但提到 ChatBot Arena(大模型竞技场),几乎每个关注 AI 的人都用过这个平台来对比 GPT-4、Claude、DeepSeek 等模型的强弱。
SGLang 团队在构建高速推理框架 SGLang 的过程中,遇到了一个尴尬的现实:虽然投机解码能显著加速大模型推理,但市面上大多数投机解码的训练实现要么年久失修、要么与 SGLang 不兼容。于是,SpecForge 应运而生——他们决定自己打造一个维护活跃、 开箱即用、无缝对接 SGLang 的训练框架。
项目的官方定位说得很清楚:
"我们看到了很多投机解码的开源项目,但大多数维护不善或无法直接兼容 SGLang。我们希望社区能享有一个定期维护、开箱即用、无缝移植到 SGLang 的投机解码训练框架。"
从 2025 年 7 月发布至今,项目保持了极高的迭代频率:2025 年 12 月发布 SpecBundle v1、2026 年 1 月加入 DFlash 块级并行训练、2026 年 3 月和 6 月又陆续引入 D-PACE 损失函数和 Domino 在线训练。不到一年时间,star 数已突破 892,成为投机解码领域最受关注的训练工具之一。
要理解 SpecForge 在做什么,先得明白投机解码的基本逻辑。
传统的大模型推理是一个严格串行的过程:每生成一个 token,必须等待前一个 token 完全计算完毕,才能继续下一步。这就像流水线上一道道关卡,每个关卡都必须完成才能放行——效率瓶颈明显。
投机解码引入了"草稿模型(Draft Model)"的概念:用一个小模型(计算量约为大模型的 1/10)批量预测接下来 N 个可能的 token,然后再让大模型(Target Model)并行验证这些预测。小模型猜对了,直接跳过;猜错了,大模型"兜底"纠正。
这个过程最关键的一步是:草稿模型不是随便选一个小模型就行,而是必须"学会"与大模型的行为模式对齐。SpecForge 正是做这件事的——训练一个 draft model,使其在给定上下文后,输出的 token 分布与 target model 高度一致,从而最大化预测命中率。
SpecForge 不搞单一方案,而是同时支持三种互补的投机解码训练方法,给不同场景提供了灵活的选择空间:
EAGLE3(Tree-based Feature-based Drafting) 是项目的主打方法,论文发表于 2025 年 3 月。它的核心思想是:训练一个轻量级回归模型,学习 target model 每一步的隐藏状态(hidden states),然后用这些特征直接预测下一个 token 序列。EAGLE3 的优势在于训练稳定、兼容性好,配套的 LK Loss(Logits Knowledge Distillation Loss) 进一步提升了预测精度。目前支持的模型覆盖极广:Llama3-8B/70B、Qwen2.5-7B/32B、Qwen3 全系列(含 Code 模型)、DeepSeek-V2/V3、Phi4、Gemma3、LLaMA4 Scout、Qwen2.5-VL 多模态模型等。
DFlash(Block-parallel Drafting) 是 2026 年 1 月新加入的方法,论文见 arXiv:2602.06036。它的特点是块级并行:草稿模型一次性生成一整块(block)候选 token,而不是逐个预测。这种方式特别适合长序列生成场景,配套的 D-PACE 损失函数进一步优化了块级预测的准确性。
Domino(DFlash + GRU Correction) 是 2026 年 6 月的最新成果,在 DFlash 的基础上引入了 GRU(Gated Recurrent Unit) 来对预测 logit 进行校正。GRU 能够捕捉 token 序列之间的依赖关系,修正单个 token 预测可能产生的累积误差,效果比纯 DFlash 更稳定。
深入源码可以看到 SpecForge 采用了一套清晰的分层架构:
specforge/
├── core/ # 核心训练算法实现
│ ├── eagle3.py # EAGLE3 训练逻辑(31KB,核心文件)
│ ├── dflash.py # DFlash 训练逻辑
│ ├── domino.py # Domino 训练逻辑(GRU校正)
│ ├── loss.py # 损失函数(LK Loss + D-PACE)
│ └── lk_loss.py # LK Loss 专用实现
├── modeling/ # 模型结构定义
│ ├── auto.py # 自动模型加载(AutoModel)
│ ├── draft/ # 草稿模型结构
│ └── target/ # 目标模型结构
├── data/ # 数据处理流水线
│ ├── preprocessing.py # 数据预处理(29KB,复杂逻辑)
│ ├── parse.py # 数据解析
│ └── template.py # Chat 模板处理
├── layers/ # 自定义神经网络层
│ ├── embedding.py # 词嵌入层
│ ├── linear.py # 线性层
│ └── lm_head.py # 语言模型头
├── distributed.py # 分布式训练(8×并行策略)
├── args.py # 命令行参数(9KB)
├── tracker.py # 训练监控(WandB/TensorBoard)
└── lr_scheduler.py # 学习率调度器
distributed.py 特别值得关注:它实现了完整的 8 种并行训练策略,包括:
配置通过 configs/*.json 文件管理,每个预置模型都有专属配置,覆盖超参、batch size、学习率等关键设置。
SpecForge 的数据处理流程颇为精巧。在线训练模式下,框架会:
离线训练模式则分两步走:先用 prepare_hidden_states.py 预先生成并缓存 hidden states,再在后续训练中直接加载缓存、跳过推理阶段——适合数据集固定、需要多次微调的场景。
数据格式采用标准 JSONL(JSON Lines),配合 chat template 系统(支持 Qwen、LLaMA 等主流模板),确保训练数据与推理时的 prompt 格式完全一致。
必须坦诚地说,SpecForge 不是为普通开发者准备的开箱即用工具。它本质上是一个研究级训练框架,核心用户画像是:
硬件门槛相当高:至少一块 NVIDIA GPU(推荐 A100/H100 或同等算力卡),VRAM 需求取决于模型规模——8B 模型至少 16GB,70B 模型通常需要 8 卡并行才能放入。存储方面,缓存的 hidden states 可能占用数百 GB 空间。
上手路径建议:先用项目提供的 30+ 个 examples/run_*.sh 脚本跑通一个 8B 模型(如 Qwen3-8B-Eagle3),积累手感后再根据实际需求调整配置。
行业意义方面,SpecForge 的出现填补了投机解码领域"训练工具链"的空白。它让研究者和工程师不再需要从零实现复杂的投机解码训练逻辑,而可以专注在模型选择、数据工程和性能调优上。结合 SGLang 的高速推理后端和已发布的 SpecBundle 预训练模型库,SpecForge 正在构建一个从训练到推理的完整生态闭环。LMSYS 也将 SpecForge 列为旗舰项目,背书力度可见一斑。
局限性也客观存在:
| 指标 | 数值 |
|---|---|
| GitHub Stars | 892 |
| Fork 数 | 253 |
| 支持的预置模型 | 30+(Qwen/Llama/DeepSeek/Phi/Gemma 等) |
| 支持的投机解码方法 | EAGLE3、DFlash、Domino |
| 训练模式 | 在线(SGLang 实时推理)、离线(预生成 hidden states) |
| 并行策略 | FSDP、Tensor Parallel、混合并行 |
| 依赖框架 | PyTorch 2.9、Transformers 4.57、SGLang 0.5 |
| License | MIT 2.0 |
| 维护活跃度 | 极高(2025-07 至今持续迭代) |
图2:SpecForge 项目鸣谢列表,感谢 EAGLE 团队、NVIDIA、Google 和美团的贡献
本分析由 PIFS 平台自动生成,基于 GitHub 仓库代码结构、README 文档及源码综合分析,数据截止 2026 年 6 月。