问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

投机采样(Speculative Decoding)原理与实验验证

创作时间:
作者:
@小白创作中心

投机采样(Speculative Decoding)原理与实验验证

引用
CSDN
1.
https://blog.csdn.net/qq_41664845/article/details/86470705

投机采样(Speculative Decoding)是一种用于解决大模型推理中内存访问带宽瓶颈的技术。通过使用一个参数量较小的Draft模型和一个参数量较大的Target模型,可以在保持推理精度的同时显著提升推理速度。本文将详细介绍投机采样的原理、实现流程,并通过实验数据展示其效果。

概念

大模型推理中的自回归采样过程存在一个主要瓶颈:每个生成的Token都需要将所有参数从存储单元传输到计算单元,导致内存访问带宽成为重要的性能瓶颈。具体来说,大模型的推理分为两个阶段:prefill(prompt的推理,可并行)和decode(generater过程,不可并行)。前者的速度可以达到1k-50k token/sec,而后者往往只有10-500 token/sec,相差两个数量级。制约decode速度的最大瓶颈是GEMV计算的访存比过低。

尽管已有in-flight batching、prefix cache等优化方法,但内存访问带宽的瓶颈依然存在。投机采样(speculative decoding)提供了一种根本性的解决方案。

投机采样的定义

投机采样通过使用两个生成式模型来优化推理过程:一个参数量较大的Target模型和一个参数量较小的Draft模型。这两个模型共享相同的词汇表,但参数量不同(P1远大于P2)。通过在相同的数据上训练,确保Draft模型和Target模型在生成任务上的结果近似。

推理流程如下:

  1. 给定输入,由Draft模型生成K个token得到输出。
  2. 将输入和Draft模型的输出拼接,得到新的输入序列,由Target模型进行推理。
  3. 评估Target模型在每个位置上的概率分布。
  4. 选取保留前K个大模型Target和小模型Draft输出一致的token,作为一次迭代的输出。

最佳与最差情况分析

  • 最佳情况:小模型生成的K个token和大模型完全一致。此时,小模型推理K次,大模型推理一次,就有K个可用的token,节省了K-1次大模型的推理。
  • 最差情况:小模型生成的K个token和大模型都不一致。此时,小模型推理K次,大模型推理一次,只有1个可用的token,性能与原始推理相当。

在小模型足够近似的情况下,投机采样可以大幅度提升推理性能,且完全不影响大模型的实际输出结果(推理精度)。

实验验证

实验中选择4B参数量的Draft模型和70B参数量的Target大模型进行对比。实验结果表明,在HumanEval数据集上,投机采样的加速效果非常明显,几乎达到了2.5倍。

随着K值的增大,考察固定128个token的总耗时,会出现先降再增的现象。在XSum数据集上,最优值是k=3。分析如下:

  • 如中图所示,随着k的增大,接受概率会逐渐降低。
  • 如右图所示,随着k的增大,平均每次调用的时长会增加,原因是小模型每次需要decode的K变大了。但此时大模型步长变大,当接受概率没有明显下降的时候,最终时长会出现下降,如左图所示。
  • 在编程数据集Human Eval上的接受率要明显高于XSum,推测是因为编程的字符搭配更加有规律,更好预测。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号