Speculative Decoding
了解推测性解码 (speculative decoding) 如何将 AI 推理速度提高 2-3 倍。了解此技术如何优化 LLM 和 Ultralytics YOLO26 以获得更快、高效的输出。
推测解码是一种先进的优化技术,主要用于大语言模型(LLM)和其他序列生成任务,旨在显著加速推理过程,同时不牺牲输出质量。在传统的自回归生成中,模型一次产生一个 token,每一步都必须等待前一步完成。这个过程可能很慢,尤其是在强大的硬件上,此时内存带宽而非计算速度往往成为瓶颈。推测解码通过使用一个更小、更快的“草稿”模型并行预测未来的一系列 token 来解决这一问题,然后由更大、更精确的“目标”模型在单次传递中进行验证。如果草稿正确,系统会一次接受多个 token,从而在生成过程中实现跨越式进步。
Link to this section推测解码的工作原理#
其核心机制基于这样一个观察:序列中的许多 token(例如“the”、“and”等功能词,或者显而易见的补全内容)很容易预测,不需要消耗大型模型的全部计算能力。通过将这些简单的预测任务卸载到轻量级代理模型上,系统减少了调用重型模型的次数。
当目标模型审核草稿序列时,它使用并行验证步骤。由于 GPU 对批处理进行了高度优化,同时检查五个草稿 token 所花费的时间与生成单个 token 的时间大致相同。如果目标模型同意草稿内容,这些 token 就会被最终确定。如果它在任何一点上不同意,序列就会被截断,插入正确的 token,然后重复该过程。这种方法确保了最终输出在数学上与目标模型独自生成的结果完全相同,在许多场景中,它在保持 准确率 的同时,将速度提高了 2 到 3 倍。
Link to this section实际应用#
该技术正在改变行业部署生成式 AI 的方式,特别是在延迟至关重要的领域。
- 实时代码补全: 在集成开发环境 (IDE) 中,AI 编程助手必须在开发人员输入时即时提供建议。推测解码允许这些助手使用小模型起草整行代码,同时大型基础模型在后台验证语法和逻辑。这带来了灵敏、无缝的用户体验,感觉就像实时输入一样,而无需等待服务器响应。
- 边缘设备上的交互式聊天机器人: 由于硬件资源有限,在智能手机或笔记本电脑上运行强大的 LLM 充满挑战。通过使用推测解码,设备可以在本地运行量化的小型模型来起草响应,同时偶尔查询更大的模型(基于云端或更重的本地模型)进行验证。这种混合方法实现了低延迟的高质量 虚拟助手 交互,使 边缘 AI 在复杂任务中更具可行性。
Link to this section与其他概念的关系#
将推测解码与类似的优化策略区分开来很重要。
- 模型量化: 虽然量化通过降低模型权重的精度(例如从 FP16 到 INT8)来节省内存并加速计算,但它会永久改变模型,并可能轻微降低性能。相反,推测解码不会改变目标模型的权重,并保证相同的输出分布。
- 知识蒸馏: 这涉及训练一个较小的学生模型来模仿较大的教师模型。学生模型会完全取代教师模型。在推测解码中,小模型(草稿模型)和大模型(验证模型)在 推理 期间协同工作,而不是一个取代另一个。
Link to this section实现示例#
虽然推测解码通常内置于服务框架中,但验证预测的概念是高效 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)Link to this section对未来 AI 发展的影响#
随着模型规模不断扩大,计算能力与内存带宽之间的差距(通常称为“内存墙”)也在扩大。推测解码通过最大化每次内存访问的算术强度来帮助弥合这一差距。这种效率对于 生成式 AI 的可持续大规模部署至关重要,既减少了能源消耗,又降低了运营成本。
研究人员目前正在探索将类似的推测原则应用于 计算机视觉 任务。例如,在 视频生成 中,轻量级模型可以起草未来的帧,随后由高保真扩散模型进行细化。随着 PyTorch 和 TensorFlow 等框架原生集成这些优化,开发人员可以期待在更广泛的模态中获得更快的 推理延迟,从文本到由 Ultralytics YOLO26 等先进架构处理的复杂视觉数据。
对于那些管理此类模型生命周期的人来说,利用 Ultralytics Platform 等工具可确保底层数据集和训练流水线稳健可靠,从而为先进的推理技术打下坚实基础。无论你是在处理 大语言模型 还是最先进的 目标检测,优化推理流水线始终是从原型走向生产的关键步骤。






