推测解码:实现2-3倍LLM推理加速

推测解码正从研究阶段走向生产标准。NVIDIA在H200 GPU上展示了3.6倍的吞吐量提升。vLLM和TensorRT-LLM均已包含原生支持。草稿模型并行提议5-8个token进行验证——充分利用单token生成时未被充分使用的GPU容量。输出质量不变,延迟降低2-3倍。

推测解码:实现2-3倍LLM推理加速

推测解码:实现2-3倍LLM推理加速

更新于2025年12月11日

2025年12月更新: 推测解码正从研究阶段走向生产标准。NVIDIA在H200 GPU上展示了3.6倍的吞吐量提升。vLLM和TensorRT-LLM均已包含原生支持。草稿模型并行提议5-8个token进行验证——充分利用单token生成时未被充分使用的GPU容量。输出质量不变,延迟降低2-3倍。

大语言模型逐token生成文本,每个token都需要对数十亿参数进行完整的前向传播。这种顺序瓶颈导致用户等待响应时产生延迟,即使GPU在计算过程中处于部分空闲状态。推测解码通过使用小型快速的草稿模型提议多个token,再由大型目标模型并行验证,打破了这一瓶颈,在不改变输出质量的情况下实现2-3倍加速。¹

该技术已从2025年的研究新奇发展为生产标准。vLLM和TensorRT-LLM都包含了原生推测解码支持,NVIDIA在H200 GPU上展示了3.6倍的吞吐量提升。²了解推测解码何时有效、如何选择草稿模型以及哪些框架提供最佳实现,能够帮助组织大幅降低推理成本和延迟。

推测解码的工作原理

传统的自回归生成按顺序产生token:

  1. 模型接收提示词,生成下一个token的logits
  2. 从分布中采样token
  3. 将token追加到上下文,重复前向传播
  4. 继续直到完成

每一步都需要完整模型的计算,但GPU的容量远超单token生成所能利用的程度。推测解码利用了这些未使用的容量:

草稿阶段: 一个小型快速模型快速生成K个推测token。在目标模型生成一个token的时间内,草稿模型可能产生5-8个候选续写。

验证阶段: 目标模型在单次并行前向传播中处理所有K个token,同时计算每个位置的概率。GPU并行性使得验证K个token的成本与生成一个token相近。

接受/拒绝: 在每个位置比较草稿和目标的分布。分布一致时接受token;分布不一致时拒绝并重新采样。该算法保证输出与目标模型独立生成的结果完全一致。³

加速来自于每次目标模型前向传播接受多个token。如果草稿模型的平均接受率为60%且提议8个token,每次验证传播大约产生5个token,而不使用推测时只有1个。

性能基准测试

生产部署在各模型系列中展示了显著的加速效果:

Llama模型在vLLM上的表现:⁴ - Llama 3.1-70B配合1B草稿:2.31倍加速 - Llama 3.1-8B在单个A100上:1.8倍延迟降低 - Llama 3.1-70B在低请求率下:1.6倍延迟降低

TensorRT-LLM在H200上的表现:⁵ - Llama 3.1-405B配合不同草稿模型:>3倍吞吐量 - 结合FP8量化:总计3.6倍提升

SGLang配合SpecForge:⁶ - Llama 4 Maverick:在MT-Bench上2.18倍加速 - Llama 4 Scout:2.0倍加速

EAGLE方法(最佳表现):⁷ - 约0.8的草稿准确率(80%接受率) - 典型加速2.5-2.8倍 - 在Spec-Bench排行榜上达到最先进水平

加速效果因工作负载特性而显著不同。同步、延迟敏感的用例获益最大。高吞吐量批处理获益较少,因为GPU计算成为瓶颈而非顺序生成。

框架实现

vLLM推测解码

vLLM支持多种推测解码方法,包括草稿模型、ngram匹配和EAGLE:

# 启用草稿模型推测
vllm serve meta-llama/Llama-3.1-70B-Instruct \
    --speculative-model meta-llama/Llama-3.2-1B-Instruct \
    --num-speculative-tokens 5 \
    --speculative-draft-tensor-parallel-size 1

EAGLE集成(推荐):

# EAGLE实现更高的接受率
vllm serve meta-llama/Llama-3.1-70B-Instruct \
    --speculative-model yuhuili/EAGLE-LLaMA3.1-Instruct-70B \
    --speculative-method eagle \
    --num-speculative-tokens 8

vLLM的Eagle 3集成在各种场景下可实现高达2.5倍的加速。⁸该框架自动处理token验证和拒绝采样,保持输出与非推测生成等效。

TensorRT-LLM推测解码

TensorRT-LLM为NVIDIA硬件提供更深层的优化:

# 构建带推测解码的引擎
trtllm-build \
    --speculative_decoding_mode draft_tokens_external \
    --max_draft_len 8 \
    --checkpoint_dir $TARGET_CHECKPOINT \
    --output_dir $ENGINE_DIR

草稿模型配置:

# 使用独立引擎的草稿模型
trtllm-build \
    --checkpoint_dir $DRAFT_CHECKPOINT \
    --output_dir $DRAFT_ENGINE \
    --max_batch_size 256

TensorRT-LLM的自定义内核优化了草稿生成和验证阶段,从Tensor Core和内存带宽中提取最大性能。

Triton Inference Server集成

NVIDIA Triton Inference Server通过vLLM后端支持推测解码:⁹

model_repository/
└── speculative_llm/
    ├── config.pbtxt
    └── 1/
        └── model.py

Triton集成支持生产规模部署,具备请求批处理、指标收集和Kubernetes原生扩展功能,同时保持推测解码的优势。

草稿模型选择

草稿模型的质量决定推测解码的效果。质量差的草稿模型会在被目标模型拒绝的提议上浪费计算资源。

选择标准

架构对齐: 与目标模型同系列的草稿模型能实现更高的接受率。Llama 3.2-1B为Llama 3.1-70B提供草稿的效果优于通用小型模型,因为训练数据和分词方式是对齐的。¹⁰

大小比例: 草稿模型通常是目标模型大小的1/10到1/50。更小的草稿生成更快但可能接受率较低。测试多种大小以找到适合您工作负载的最佳比例。

接受率阈值: 目标接受率60%以上。低于50%时,验证开销可能抵消推测带来的收益。使用性能分析来测量您特定提示词的实际接受率。

微调草稿模型

开箱即用的草稿模型在领域特定任务上往往表现不佳。微调能显著提高接受率:¹¹

# 在目标分布上微调草稿模型
from transformers import Trainer, TrainingArguments

# 通过从目标模型采样生成训练数据
# 微调草稿以匹配目标的输出分布

training_args = TrainingArguments(
    output_dir="./draft_finetuned",
    per_device_train_batch_size=8,
    num_train_epochs=3,
    learning_rate=2e-5,
)

trainer = Trainer(
    model=draft_model,
    args=training_args,
    train_dataset=target_samples,
)
trainer.train()

组织报告称,领域特定的草稿微调可将接受率提高20-40%。这项投资对高容量推理工作负载带来可观回报。

SGLang的SpecForge

SpecForge为训练草稿模型提供专门构建的生态系统:¹²

  • 原生SGLang集成
  • 针对Llama 4变体的优化训练配方
  • 常见模型的预训练推测器

Red Hat的Speculators项目通过统一的Hugging Face格式和vLLM集成来标准化推测解码,简化了草稿模型的发现和部署。¹³

高级技术

自推测解码(SWIFT)

SWIFT通过自适应跳过目标LLM的中间层来消除对独立草稿模型的需求:¹⁴

  • 无需辅助模型
  • 无需额外训练
  • 在保持输出分布的同时实现1.3x-1.6x加速

该技术通过根据token置信度预测哪些层可以跳过来工作。简单的续写跳过更多层;复杂的推理使用完整模型深度。

# SWIFT概念配置
config = SwiftConfig(
    skip_threshold=0.8,  # 置信度>0.8时跳过层
    min_layers=16,       # 始终至少使用16层
    adaptive=True        # 每个token动态调整
)

SWIFT适合那些维护独立草稿模型会增加不必要复杂性的场景。

Ngram推测

对于结构化输出或可预测模式,ngram匹配可在不使用神经网络的情况下提供推测:

# vLLM ngram推测
vllm serve meta-llama/Llama-3.1-70B-Instruct \
    --speculative-model "[ngram]" \
    --ngram-prompt-lookup-max 4 \
    --num-speculative-tokens 4

Ngram推测识别提示词或生成历史中的重复模式,基于观察到的序列提议token。这种方法对代码生成、结构化数据和重复性内容效果良好。

Medusa头

Medusa在目标模型上附加额外的预测头,并行生成多个候选token:

# Medusa需要修改模型
model = load_medusa_model("path/to/medusa_llama_70b")
# 额外的头预测位置+1、+2、+3等处的token

Medusa完全消除了草稿模型,但需要修改模型和重新训练。拥有自定义模型部署的组织可能会发现Medusa值得尝试,尽管集成复杂度较高。

推测解码何时有效

推测解码在特定条件下回报最高:

有利场景: - 优先考虑延迟的交互式聊天应用 - GPU利用率不足较高的单用户推理 - 长文本生成(故事、文档、代码) - 具有可预测token模式的工作负载

不太有利的场景: - 已使GPU饱和的高吞吐量批处理 - 非常短的响应(很少的token可供推测) - 接受率低的高度创意/随机生成 - 内存受限、草稿模型无法装入的部署

决策框架:

IF (生成过程中GPU利用率< 50%)
    AND (平均响应长度> 100 token)
    AND (草稿模型可装入内存)
     启用推测解码

IF (GPU利用率> 80%)
    OR (内存压力高)
     改为专注于批处理优化

基础设施考虑

推测解码引入了特定的基础设施需求:

内存开销: 草稿模型消耗额外的GPU内存。确保足够的余量: - 草稿模型权重:根据大小约1-8GB - 草稿token的额外KV缓存 - 验证张量分配

计算模式: 验证阶段产生的突发计算模式与稳定的自回归生成不同。监控GPU利用率变化并相应调整批量大小。

草稿模型服务: 选项包括: - 共置:草稿与目标在同一GPU上运行 - 分离:专用GPU用于草稿生成 - CPU卸载:小型草稿可在CPU上运行以节省内存

大规模部署推测解码的组织可以利用Introl的GPU基础设施专业知识来优化硬件配置和容量规划。

生产部署检查清单

在生产环境启用推测解码前:

1. 基线测量 - 测量当前延迟和吞吐量 - 分析生成过程中的GPU利用率 - 识别瓶颈(内存、计算、通信)

2. 草稿模型选择 - 使用代表性提示词测试多种草稿大小 - 测量您特定分布的接受率 - 如果接受率低于60%考虑微调

3. 配置调优 - 实验num_speculative_tokens(通常4-8) - 平衡接受率与草稿开销 - 使用目标批量大小分析内存使用

**4. 推出

申请报价_

告诉我们您的项目需求,我们将在72小时内回复。

> 传输完成

请求已收到_

感谢您的咨询。我们的团队将审核您的请求并在72小时内回复。

排队处理中