Speculative Decoding
了解推测性解码 (speculative decoding) 如何将 AI 推理速度提高 2-3 倍。了解此技术如何优化 LLM 和 Ultralytics YOLO26 以获得更快、高效的输出。
推测解码是一种先进的优化技术,主要用于大语言模型(LLM)和其他序列生成任务,旨在显著加速推理过程,同时不牺牲输出质量。在传统的自回归生成中,模型一次产生一个 token,每一步都必须等待前一步完成。这个过程可能很慢,尤其是在强大的硬件上,此时内存带宽而非计算速度往往成为瓶颈。推测解码通过使用一个更小、更快的“草稿”模型并行预测未来的一系列 token 来解决这一问题,然后由更大、更精确的“目标”模型在单次传递中进行验证。如果草稿正确,系统会一次接受多个 token,从而在生成过程中实现跨越式进步。
推测解码的工作原理#
其核心机制基于这样一个观察:序列中的许多 token(例如“the”、“and”等功能词,或者显而易见的补全内容)很容易预测,不需要消耗大型模型的全部计算能力。通过将这些简单的预测任务卸载到轻量级代理模型上,系统减少了调用重型模型的次数。
当目标模型检查草稿序列时,它会使用并行的验证步骤。由于 GPU 高度优化了批处理,因此同时检查五个草稿 token 所需的时间与生成单个 token 的时间大致相同。如果目标模型同意该草稿,这些 token 就会被最终确定;如果在任何时候不同意,序列就会被截断,插入正确的 token,然后重复该过程。这种方法确保了最终的输出在数学上与目标模型自己生成的输出完全相同,在许多情况下能够将速度提升 2 到 3 倍,同时保持 accuracy 不变。
实际应用#
该技术正在改变行业部署生成式 AI 的方式,特别是在延迟至关重要的领域。
- 实时代码补全: 在集成开发环境 (IDE) 中,AI 编程助手必须在开发人员输入时即时提供建议。推测解码允许这些助手使用小模型起草整行代码,同时大型基础模型在后台验证语法和逻辑。这带来了灵敏、无缝的用户体验,感觉就像实时输入一样,而无需等待服务器响应。
- 边缘设备上的交互式聊天机器人: 由于硬件资源有限,在智能手机或笔记本电脑上运行强大的 LLM 具有挑战性。通过使用推测解码,设备可以在本地运行一个量化的小型模型来起草响应,同时偶尔查询更大的模型(基于云端或更重的本地模型)进行验证。这种混合方法能够以极小的延迟实现高质量的 virtual assistant 交互,使 edge AI 对于复杂任务更具可行性。
与其他概念的关系#
将推测解码与类似的优化策略区分开来很重要。
- Model Quantization: 尽管量化降低了模型权重的精度(例如从 FP16 降至 INT8)以节省内存并加速计算,但它会永久改变模型,并可能稍微降低性能。相反,推测解码不会改变目标模型的权重,并能保证相同的输出分布。
- Knowledge Distillation: 这涉及训练一个较小的学生模型来模仿较大的教师模型,且学生模型会完全取代教师模型。而在推测解码中,小型模型(起草者)和大型模型(验证者)在 inference 期间协同工作,而不是由一个模型取代另一个模型。
实现示例#
虽然推测解码通常内置于服务框架中,但验证预测的概念是高效 AI 的基础。以下是一个使用 PyTorch 的概念性示例,用来说明更大的模型如何对候选输入序列进行评分或验证,这类似于推测解码中的验证步骤。
import torch
def verify_candidate_sequence(model, input_ids, candidate_ids):
"""Simulates the verification step where a target model checks candidate tokens."""
# Concatenate input with candidates for parallel processing
full_sequence = torch.cat([input_ids, candidate_ids], dim=1)
with torch.no_grad():
logits = model(full_sequence) # Single forward pass for all tokens
# Get the model's actual predictions (greedy decoding for simplicity)
predictions = torch.argmax(logits, dim=-1)
# In a real scenario, we check if predictions match candidate_ids
return predictions
# Example tensor setup (conceptual)
# input_ids = torch.tensor([[101, 2054, 2003]])
# candidate_ids = torch.tensor([[1037, 3024]])
# verify_candidate_sequence(my_model, input_ids, candidate_ids)对未来 AI 发展的影响#
随着模型规模不断增长,计算能力与内存带宽之间的差距(通常被称为“内存墙”)也在拉大。推测解码通过最大化每次内存访问的算术强度,来帮助弥合这一差距。这种效率对于大规模可持续部署 generative AI 至关重要,能够同时降低能耗和运营成本。
研究人员目前正在探索将类似推测原理应用于 computer vision 任务的方法。例如,在 video generation 中,轻量级模型可以起草未来的帧,随后由高保真扩散模型对其进行精炼。随着 PyTorch 和 TensorFlow 等框架原生集成这些优化,开发者可以期待在更广泛的模态中获得更快的 inference latency,从文本到由 Ultralytics YOLO26 等先进架构处理的复杂视觉数据。
对于那些管理此类模型生命周期的人来说,使用 Ultralytics Platform 等工具可确保底层数据集和训练管道保持强大,从而为先进的推理技术奠定坚实的基础。无论你使用的是 large language models 还是最先进的 object detection,优化推理管道始终是从原型走向生产的关键一步。






