SuperAPI AI 工具集

speculative-decoding

智能体与模型

查看项目

更新于 10-14 05:34

技能介绍

一、用途 Speculative Decoding 技能用于加速大语言模型(LLM)的推理过程,目标是在不损失生成质量的前提下将推理速度提升 1.5-3.6 倍。它适用于以下场景:为聊天机器人、代码生成等实时应用降低延迟;为高并发服务优化吞吐量;在硬件资源有限的情况下高效部署;在不改变模型架构的前提下实现更快的生成。

二、主要能力 该技能涵盖三种关键技术:

  1. 草稿模型投机解码(Draft Model Speculative Decoding) 思路:用小草稿模型生成候选 token,再由大目标模型并行验证。草稿模型先投机生成 K 个 token,目标模型在一次前向传播中并行评估全部 K 个 token,接受草稿与目标一致的 token,在首次不一致处拒绝并从该处继续。文档称其加速比为 1.5-2 倍,零质量损失(数学上等价于目标模型),在草稿模型比目标模型小 5-10 倍时效果最佳。

  2. Medusa(多头解码) 来源为 arXiv 2401.10774(2024)。其创新点是在现有模型上添加多个预测头,无需单独草稿模型即可预测未来 token。架构上 Base LLM 冻结后输出隐藏状态,多个头分别预测 t+1、t+2、t+3、t+4 等位置。训练方式分两种:Medusa-1 冻结基础 LLM 只训练头,加速 2.2 倍且无损;Medusa-2 联合微调基础 LLM 与头,加速 2.3-3.6 倍,质量更好。它使用基于树的注意力,单次前向传播即可评估整棵候选树。优点是无需单独草稿模型、训练量极小(仅训练头)、兼容任意 LLM。

  3. Lookahead Decoding(Jacobi 迭代) 来源为 ICML 2024。核心思想是把自回归解码重构为求解方程组,用 Jacobi 迭代并行求解。含两个分支:前瞻分支并行生成 n-gram,验证分支验证有希望的 n-gram(首个 token 匹配则接受)。文档称加速 1.5-2.3 倍,代码生成场景最高可达 3.6 倍;无需草稿模型或训练,开箱即可用于任意模型。

方法对比(据文档表格):草稿模型投机解码加速 1.5-2 倍、无需训练、需要外部草稿模型、无质量损失;Medusa 加速 2-3.6 倍、需极少训练(仅头)、内置头无需草稿模型、无质量损失;Lookahead 加速 1.5-2.3 倍、无需训练、无需草稿模型、无质量损失;朴素批处理加速 1.2-1.5 倍。

三、使用方式 安装命令(保留原文): 标准投机解码(transformers):pip install transformers accelerate Medusa:git clone https://github.com/FasterDecoding/Medusa,cd Medusa,pip install -e . Lookahead Decoding:git clone https://github.com/hao-ai-lab/LookaheadDecoding,cd LookaheadDecoding,pip install -e . 可选 vLLM:pip install vllm

快速开始方面,文档给出三类代码示例:

  • 基础草稿模型投机解码:使用 transformers 的 AutoModelForCausalLM 加载目标模型与草稿模型,在 generate 中传入 assistant_model=draft_model 启用投机解码(Transformers 4.36+ 支持 assisted generation)。
  • Medusa:使用 MedusaModel.from_pretrained 加载,调用 model.medusa_generate,可设置 posterior_threshold、posterior_alpha 等参数。
  • Lookahead:初始化 LookaheadDecoding,设置 window_size、ngram_size、guess_size 后调用 generate。

高级用法包括训练 Medusa 头(冻结基础模型,仅训练多个线性头,目标为位移后的 token)、Speculative + Medusa 混合(用 Medusa 作为草稿模型供大模型验证)、草稿模型选择规则(草稿应比目标小 5-10 倍,如 70B 目标配 7B 草稿、33B 配 7B、13B 配 1B,目标过小则改用 Medusa/Lookahead)。

生产部署方面,文档给出 vLLM 的用法:LLM(model="meta-llama/Llama-2-70b-hf", speculative_model="meta-llama/Llama-2-7b-hf", num_speculative_tokens=5, use_v2_block_manager=True)。

最佳实践:选择方法上,新部署选 Medusa(整体加速最好、无需草稿模型),已有小模型版本则用草稿模型投机解码,想要零训练零配置则用 Lookahead。超参数方面,草稿模型投机解码 K 默认 4,保守取 2,激进取 8;Medusa 的 posterior_threshold 标准为 0.09,保守 0.05,激进 0.15,树深度标准为 3;Lookahead 的 W、N 在 7B 模型上为 15、5,13B 为 10、5,33B+ 为 7、5。

四、适用场景 实时对话与代码生成等对延迟敏感的应用;高并发在线服务;硬件资源受限的部署环境;希望在不改动模型架构的前提下提速的现有模型。

五、限制 资料未明确列出各方法的具体限制条件。需注意:草稿模型方案需要额外准备合适的小模型;Medusa 需要一定训练(仅头)或联合微调;Lookahead 超参数需按模型规模调整。其他未提供的收费、价格、平台、效果等信息暂未提供,本文档未涉及。