Speculative decoding的碎碎念
4

推测解码一些碎碎念

大语言模型在众多领域上展现出很强的能力,但是decode架构使得只能token by token,这种顺序性会造成严重的延迟瓶颈。但最近的研究侧重于通过新颖算法和系统级创新,在保证输出质量的同时打破顺序依赖关系。

由此提出了生成-细化框架来解决这种顺序依赖关系,主要步骤是生成draft标记,然后再细化。

核心挑战出现在推理阶段,推理阶段由两个主要阶段:prefill预填充阶段和decode解码阶段。预填充阶段是计算密集型,它可以并行处理输入序列,并得到kv cache。但是解码阶段是IO密集型,需要读取prefill阶段的kv cache,按照顺序预测每个token,并生成新的kv cache进行缓存供后续预测,因此随着序列长度增加,内存访问延迟将显著增加。

推测解码引入两个阶段,首先是一个规模较小,速度较快的draft模型,并行预测多个token,然后使用目标模型进行验证。Draft模型支持并行token生成。目标模型的验证步骤是通过接受/拒绝token,来保证输出的质量。

事实证明这种策略对于实时系统有很大的帮助,能显著提升输出token的吞吐量。

那么如何预测未来的多个token?主要有两种策略,一种是非模型的方式,一种是模型方式。

非模型方式,利用LLM输出和参考文档的重叠部分;N-gram的方式,用一个自适应的N-gram系统进行上下文更新预测,例如lookahead,通过收集并利用先前迭代中的n-gram进行token预测。

模型方式:模型方式可以分为两种,独立式,依赖式以及多token预测

EAGLE:上下文感知树的构建,来提升接受率

验证:基于树的验证,更加高效利用并行计算资源。

如何提升接受率?

Speculative decoding的碎碎念
https://lihuigu.cn//archives/speculative-decodingde-sui-sui-nian
作者
lihuigu
发布于
更新于
许可协议