DeepSpec 中文教程:小规模跑通数据、训练与评估
DeepSpec 是 DeepSeek 发布的推测解码草稿模型训练与评估代码库。它支持 DSpark、DFlash 和 Eagle3,把数据准备、目标缓存、训练和接受率评估放在同一条流水线里。
1. 先看清楚它会生成什么
- 下载并切分提示数据。
- 调用目标模型重新生成答案。
- 为每个 token 预计算目标模型隐藏状态,写入 target cache。
- 用缓存训练草稿模型。
- 把草稿模型与同一个目标模型组合,评估接受情况。
这几个阶段有严格的上下游关系。换目标模型、采样参数或 thinking 设置后,旧答案和旧缓存不一定还能代表新的实验条件。
2. 建立隔离环境
git clone https://github.com/deepseek-ai/DeepSpec.git cd DeepSpec python -m venv .venv source .venv/bin/activate python -m pip install -r requirements.txt
官方 requirements 固定了 PyTorch 2.9.1、Transformers 5.10.2、Triton 3.5.1 等版本。安装前先根据驱动和 CUDA 选择合适的 PyTorch wheel;不能只看 pip 成功就认定 GPU 环境可用。
3. 用少量数据验证前两步
官方完整命令在 Data Preparation。第一次运行时先把数据量缩到很小,并只启动一个目标服务。目标服务必须提供 OpenAI 兼容的 /v1 接口;示例使用 SGLang,但它不在 requirements.txt 中,需要单独安装。
# 先阅读参数,不直接跑默认 8-worker 脚本 python scripts/data/download_and_split.py --help python scripts/data/generate_train_data.py --help python scripts/data/prepare_target_cache.py --help
验证生成的 JSONL 是否含预期轮次,失败样本是否进入错误文件。停止目标服务后再构建缓存,避免训练前就把同一批 GPU 和显存占满。
4. 控制缓存规模
目标缓存会随样本数、序列长度、隐藏维度和捕获层数增长。先使用小训练集,并在算法配置中减少 model.target_layer_ids。把输出目录放在有配额监控的专用磁盘,运行前后记录:
- 输入样本数和 token 数;
- 捕获层数量;
- 缓存目录实际大小;
- 单步读取速度和峰值内存。
只有小样本比例符合预期,才可以估算更大任务;不要只根据“约 38 TB”反推所有模型的空间。
5. 训练和评估必须使用匹配配置
# 打开脚本,先修改 config_path、target_cache_dir 和 CUDA_VISIBLE_DEVICES sed -n '1,220p' scripts/train/train.sh bash scripts/train/train.sh # 设置相同的 target 与训练后的 draft checkpoint sed -n '1,220p' scripts/eval/eval.sh bash scripts/eval/eval.sh
官方发布的检查点覆盖 Qwen3 4B/8B/14B 和 Gemma 4 12B。论文表格的检查点使用 open-perfectblend 数据,并由对应目标模型在 non-thinking 模式下生成答案。模型、数据或 thinking 模式不一致时,不能把接受率直接并列。
6. DeepSpec 与 SpecForge 的区别
| 维度 | DeepSpec | SpecForge |
|---|---|---|
| 重点 | DeepSeek 的 DSpark、DFlash、Eagle3 训练与论文复现 | 面向 SGLang 的较广训练和部署生态 |
| 公开流程 | 数据重生成、目标缓存、训练、接受率评估 | online/offline、分离式拓扑、FSDP 与导出 |
| 合适场景 | 对齐 DeepSpec 论文设置和发布检查点 | 持续维护多种训练拓扑并接入 SGLang serving |
DeepSpec 的 README 明确说明它有一部分框架和 Eagle3 代码来自 SpecForge。选择时应看实验目标,而不是按 star 数决定。
7. 本次验证边界
验证状态:本次只核对官方 README、requirements、数据准备文档、LICENSE、NOTICE 和 GitHub API;没有下载模型,也没有运行 GPU 任务。
已经确认:三阶段数据流程、三种算法、默认 8 GPU 假设、约 38 TB 缓存警告、评测集合和无正式 Release 均有官方依据。
没有验证:依赖安装、目标推理服务、缓存实际体积、GPU 显存、训练收敛、检查点质量、接受率和端到端加速。本文不把仓库脚本说明写成本站实测结果。
这里仅补原教程没有展开的事实和边界。安装命令与操作步骤仍以前文为准。
先判断这个项目是否适合你
适合谁用
适合研究 DSpark、DFlash 或 Eagle3 的算法复现、消融实验、跨目标模型接受率比较,以及在自有领域数据上重新训练草稿模型。它不是下载后即可替代现有推理服务的终端应用。
采用建议
DeepSpec 适合有多 GPU 和大容量存储、需要复现或改进推测解码草稿模型的研究团队。首次尝试应从小样本和小缓存开始,把数据、目标服务、缓存、训练、评估逐段验通;没有相应硬件或只想部署现成推理服务时,不适合直接照搬默认流水线。
原教程未展开的系统信息
核心功能
三阶段数据流水线
下载并切分提示数据,通过 OpenAI 兼容推理服务重生成答案,再预计算训练所需的目标模型隐藏状态缓存。
常见问题
DeepSpec 第一次运行真的需要准备约 38 TB 吗?
默认 Qwen3-4B 全量目标缓存约 38 TB,但首次验证不应照跑全量。可以缩小训练集,并减少配置中的目标层数量,让缓存随样本、序列长度和隐藏维度下降。
DeepSpec 自带目标模型推理服务吗?
不自带完整推理引擎。重生成答案需要另行启动 OpenAI 兼容服务;官方示例使用 SGLang,也允许替换为 vLLM、TGI 等兼容实现。
少于 8 张 GPU 能运行 DeepSpec 吗?
可以调整示例脚本中的 CUDA_VISIBLE_DEVICES 和 worker 数,但速度、显存和配置是否合适要自行验证。README 只说明默认脚本按单机 8 GPU 设置。
DeepSpec 有可直接安装的稳定 Release 吗?
截至 2026-09-23,官方 GitHub Releases 页面为空。当前只能以主分支代码和官方发布的 Hugging Face 检查点作为明确基线。