⚙️ 系统工程 · 8 分钟
投机解码:用小模型加速大模型
关键洞察:大模型一次"验证"5 个 token 的时间,**远少于**串行"生成"5 个 token 的时间。
用小模型先"猜"几个 token,大模型一次验证——速度提升 2-4 倍,输出完全相同。
🐦 Draft 模型(小、快)
Llama 1B
单 token 推理:50ms
🦅 Target 模型(大、准)
Llama 70B
单 token 推理:500ms(生成)/ 验证 5 个:600ms
已生成 0 个 token
本轮投机过程
Step 1: Draft 模型快速生成 5 个候选
等待开始
Step 2: Target 模型一次性验证全部 5 个
等待开始
Step 3: 本轮接受的 token + 替换(如有)
等待开始
🧠
为什么这能省时间
关键:LLM 推理是 memory-bound——
GPU 算力没用满,主要在等显存。
一次"算 5 个 token 的 prob"——
几乎和"算 1 个"耗时一样(瓶颈在加载参数,算多少 token 几乎免费)。
**大模型并行验证 5 个 ≈ 串行算 1 个的时间**。
✅
关键保证:输出完全相同
和大模型直接生成的结果 数学上相同——
通过特殊的"接受/拒绝"采样算法保证。
Draft 模型猜对就接受、猜错就替换——
**不损失质量,只省时间**。
📝 演示说明: 这里简化了"接受率"逻辑。真实投机解码用专门的拒绝采样算法(Speculative Sampling, DeepMind 2023)确保输出分布与目标模型一致。
主流框架(vLLM, TensorRT-LLM, SGLang)已默认支持。配合本文阅读:L7-03 推理优化。