2024.8.14-算法学习(原创+转载)

一、投机采样

图源自投机采样推理原理 - 66Ring's Blog

投机采样(Speculative Decoding)是Google和DeepMind在2022年同时发现的大模型推理加速方法。它可以在不损失生成效果前提下,获得3x以上的加速比。

大型语言模型(LLM)的推理通常需要使用自回归采样。它们的推理过程相当缓慢,需要逐个token地进行串行解码。生成每个标记都需要将所有参数从存储单元传输到计算单元,因此内存访问带宽成为严重的瓶颈。

投机采样(Speculative Decoding)使用两个模型:一个是原始目标模型,另一个是比原始模型小得多的近似模型。

核心:近似模型用于进行自回归串行采样,而大型模型则用于评估采样结果。

解码过程中,某些token的解码相对容易,某些token的解码则很困难。因此,简单的token生成可以交给小型模型处理,而困难的token则交给大型模型处理。

这里的小型模型可以采用与原始模型相同的结构,但参数更少,或者干脆使用n-gram模型。小型模型不仅计算量较小,更重要的是减少了内存访问的需求。

投机采样过程

过程如下:

  1. 用小模型Mq做自回归采样连续生成X个tokens。
  2. 把生成的X个tokens和前缀拼接一起送进大模Mp执行一次forwards。
  3. 使用大、小模型logits结果做比对,如果发现某个token小模型生成的不好,重新采样这个token。重复步骤1。
  4. 如果小模型生成结果都满意,则用大模型采样下一个token。重复步骤1。

第2步,将X个tokens和前缀拼成一起作为大模型输入,和自回归相比,尽管计算量一样,但是

个tokens可以同时参与计算,计算访存比显著提升

第3步,如何评价一个token生成的不好?如果q(x) > p(x)(p,q表示在大小模型采样概率,也就是logits归一化后的概率分布)则以一定1-p(x)/q(x)为概率拒绝这个token的生成,从一个新的概率分布p’(x) = norm(max(0, p(x) − q(x)))中重新采样一个token。

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值