AI News HubLIVE
站内改写2 分钟阅读

硬件感知的动态投机解码(DSD)| Cohere

Cohere提出了动态投机解码(DSD),根据硬件约束动态调整草稿令牌数量,以提升LLM推理速度。该方法解决了固定K投机解码在高批次大小时性能下降的问题,并在密集和MoE模型上验证了有效性,同时兼容vLLM的异步调度和CUDA图优化。

投机解码(Speculative Decoding, SD)是一种流行的技术,可以在不降低质量的情况下加速大型语言模型(LLM)的推理。标准LLM推理一次生成一个令牌,而SD使用一个较小的草稿模型提出多个令牌,然后由大型目标模型在一个时间步内进行验证。由于每个步骤可以接受多个令牌,这加速了生成过程。

SD通过利用GPU计算与内存带宽之间的权衡来实现加速。批处理多个请求可以提高GPU利用率,但操作模式取决于批处理大小(BS):在小型批处理中,推理受内存带宽限制;在大型批处理中,推理变为计算受限。SD的时间主要由草稿时间(小型草稿模型)和验证时间(大型目标模型)组成。

然而,SD面临一些挑战。在生产环境中,批处理大小动态变化,当批处理大小较大时,普通LLM推理变为计算受限,没有空闲计算供SD利用,此时SD可能比普通推理更慢。在强化学习(RL)中,滚动阶段是主要瓶颈,SD可以帮助处理长尾生成,但在高批处理大小时吞吐量受损,限制了其整体效用。

为此,Cohere提出了硬件感知的动态投机解码(DSD)。DSD改进标准SD之处在于使草稿令牌数量自适应。它根据模型与硬件之间的交互选择最优K:当推理受内存带宽限制时增加K,当受计算限制时减少K。对于密集模型,K随批处理大小单调递减;对于MoE模型,K在批处理大小变化时呈现非单调性:低BS时K较低,中BS时K升高,高BS时再次降低。

为了找到最优草稿令牌数,DSD使用良好度(goodput)指标:goodput = 接受长度(AL)/ 令牌间延迟(ITL)。该指标捕捉了增加草稿令牌的边际贡献与墙钟成本之间的权衡。通过离线分析测量AL和ITL,DSD找到最优K并存储为查找表,运行时使用。这解决了冷启动问题,并且可以通过引擎的运行时指标进行扩展。

实验结果表明,DSD在不同批处理大小下均优于固定K的SD和普通推理。在MT-Bench数据集上,对于Cohere的Command A(密集模型),DSD在低BS时匹配SD的加速,在高BS(64/128)时比SD和普通模型更快,在极高BS(256)时匹配普通模型性能。具体而言,DSD在BS 128和256时比SD快约23%,比普通模型快7.5%(BS 128)和1.82%(BS 256)。对于Command A+(MoE模型),DSD选择了与固定K(K=3)相近的K值,因此加速效果类似,但期望未来方法能显示更明显的增益。

Cohere已将DSD贡献到vLLM推理框架中。实现DSD面临两个主要挑战:与异步调度兼容以及与全CUDA图兼容。在异步调度中,调度器与模型运行器并行运行,DSD打破了每时间步生成与验证相同数量草稿令牌的假设,需要调整调度器和运行器中的簿记。对于全CUDA图,DSD扩展了捕获的元组,使其包括不同的K值,从而在运行时改变K时仍能命中已捕获的CUDA图。这些贡献确保了DSD能与vLLM的高效优化协同工作。