Speculative decoding 投机采样原理和验证

概念

做法有很多,这里介绍最广泛被人认识的一种(朴素投机采样

瓶颈

        大模型推理自回归采样,逐步串行解码。

        生成的每个Token都需要将所有参数从存储单元传输到计算单元。

        因此:内存访问带宽成为重要的瓶颈

大模型的推理有2个阶段,prefill(prompt的推理,可并行)和decode(generater过程,不可并行

前者速度可以1k-50k token/sec,后者速度往往只有10-500 token/sec,最大相差两个数量级。

制约decode速度的最大瓶颈就是GEMV计算访存比太低了

        现有的推理速度优化有很多办法,比如:in-flight batching、prefix cache等。

        结果:内存访问得到了缓解,但带宽瓶颈依然存在。

投机采样(speculative decoding)

----       一种解决内存访问带宽的根本性的方法

定义如下:

  1. 给定2个生成式模型:Target和Draft,它们共享相同的词汇表,但具有不同的参数量P1和P2,保证P1远远大于P2

  2. 在相同的数据上训练,保证Draft和Target,在生成任务上的结果近似。

  3. 由于参数量的关系,Draft模型一次迭代(即生成一个token)的时间,Target模型可以生成多个token。

推理流程:

  1. 给定输入为:X = \{x_{1},x_{2},x_{3}...x_{m}\} ,由Draft模型生成k个token得到Y = \{y_{1},y_{2},y_{3}...x_{k}\}

  2. 拼接输入X和Draft模型输出Y,得到Z = \{x_{1},x_{2},x_{3}...x_{m},y_{1},y_{2},y_{3}..y_{k}\},由Target模型对Z进行推理

  3. 评估Target模型在\{y_{1},y_{2},y_{3},...,y_{k}\}每个位置上的概率分布

  4. 选取保留前n\in\{1,2,3,...,k\}个大模型Target、小模型Draft输出一致的token,作为一次迭代的输出

 如下图所示:

  • 结果

    • 最好的情况

      • 小模型生成的k个token和大模型都是一致的。

      • 那么小模型推理k次,大模型推理一次,就有k+1个可用的token。

      • 结果:节省了k次大模型的推理

    • 相对差的情况

      • 小模型生成的k个token和大模型都不是一致的。

      • 那么小模型推理k次,大模型推理一次,只有1个可用的token。

      • 结果:和原始推理性能相当

  • 也就是说
    • 然后,在小模型足够近似的情况下,可以大幅度的提升推理性能。

    • 投机采样完全不影响大模型的实际输出结果(推理精度)。

  • 相关实验

        Draft模型的选取4B,Target大模型选取70B。 https://arxiv.org/pdf/2302.01318

        加速明显,尤其在HumanEval的加速几乎达到了2.5倍。 

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

  • 如中图,随着k的增大,接受概率会逐渐降低

  • 如右图,随着k的增大,平均每次调用的时长会增加,原因是小模型每次需要decode的K变大了。但此时大模型步长变大,当接受概率没有明显下降的时候,最终时长会出现下降,如左图

  • 编程数据集Human Eval上的接受率要明显高于XSum,推测是因为编程的字符搭配更加有规律,更好预测

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/865556.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python gdal 压缩栅格数据

1 压缩方法LZW 使用 LZW(Lempel-Ziv-Welch),主要对图像数据压缩,可逆 2 代码 函数gdal_translate():转换栅格的不同格式 我们使用的数据是GTiff格式的数据 GTiff – GeoTIFF File Format — GDAL documentation 参…

怎样保存python文件

按下“CtrlS”键即可快速保存Python文件。 或者点击“File”,在下拉菜单中选择“Save”。 打开后我们就会看到这样的一个页面窗口了。 我们还能在这里进行路径的保存位置的查找。 然后在这里选择文件类型,并输入文件名。 接下来我们点击保存就可以完成操…

上位机网络通讯

目录 一 设计原型 二 后台源码 一 设计原型 二 后台源码 using System; using System.Net.Sockets; using System.Text; using System.Threading.Tasks; using System.Windows.Forms;namespace 上位机网络通讯 {public partial class Form1 : Form{public Form1(){Initializ…

实习总结 --- 其他业务

一. 回归测试:回归测试与测新是对应的,当需求准入交付测试的时候首先要进行的就是测新,也就是对新功能对测试,一般是在sim环境下测试的;当测新通过后才会进行回归测试,回归测试的目的是为了保证老功能的正确…

串口通信、IIC时序整理

一、串行通信与并行通信 并行通信是指多个比特同时通过并行线进行传输,这种方式的传输速率较高,但会占用大量的芯片资源; 串行通信是指将数据拆分成一个个比特,按照先后次序在一根总线上进行发送,串行通信有着系统占…

代码随想录第42天|动态规划

198.打家劫舍 参考 dp[j] 表示偷盗的总金额, j 表示前 j 间房(包括j)的总偷盗金额初始化: dp[0] 一定要偷, dp[1] 则取房间0,1的最大值遍历顺序: 从小到大 class Solution { public:int rob(vector<int>& nums) {if (nums.size() < 2) {return nums[0];}vector&…

【Rust入门教程】安装Rust

文章目录 前言Rust简介Rust的安装更新与卸载rust更新卸载 总结 前言 在当今的编程世界中&#xff0c;Rust语言以其独特的安全性和高效性吸引了大量开发者的关注。Rust是一种系统编程语言&#xff0c;专注于速度、内存安全和并行性。它具有现代化的特性&#xff0c;同时提供了低…

地理信息科学:生态保护的智慧经纬

在地球这颗蓝色星球上&#xff0c;每一片森林的呼吸、每一条河流的流淌&#xff0c;都是生命交响曲中不可或缺的音符。而地理信息科学&#xff08;GIS&#xff09;&#xff0c;正是我们手中解读自然密码、护航生态平衡的精密仪器。今天&#xff0c;让我们深入探讨GIS如何在生物…

STM32之五:TIM定时器(2-通用定时器)

目录 通用定时器&#xff08;TIM2~5&#xff09;框图 1、 输入时钟源选择 2、 时基单元 3 、输入捕获&#xff1a;&#xff08;IC—Input Capture&#xff09; 3.1 输入捕获通道框图&#xff08;TI1为例&#xff09; 3.1.1 滤波器&#xff1a; 3.1.2 边沿检测器&#xf…

小米MIX Fold 4折叠屏手机背面渲染图曝光

ChatGPT狂飙160天&#xff0c;世界已经不是之前的样子。 更多资源欢迎关注 7 月 3 日消息&#xff0c;消息源 Evan Blass 今天在 X 平台发布推文&#xff0c;分享了小米 MIX Fold 4 折叠屏手机的高清渲染图&#xff08;图片有加工成分在&#xff0c;最终零售版本可能会存在差异…

列表数据合并

WPS: 使用“&”符号合并单元格内容&#xff1a; 在需要合并的单元格中输入A1&B1&C1以此类推&#xff0c;这样可以将多个单元格的内容合并到一个单元格中。 EXCEL: 使用合并连接符号& 在E2单元格中输入B2&C2&D2&#xff0c;然后按enter回车&#x…

基于Vue.js和SpringBoot的地方美食分享网站系统设计与实现

你好&#xff0c;我是计算机专业的学姐&#xff0c;专注于前端开发和系统设计。如果你对地方美食分享网站感兴趣或有相关需求&#xff0c;欢迎随时联系我。 开发语言 Java 数据库 MySQL 技术 Vue.js SpringBoot Java 工具 Eclipse, MySQL Workbench, Maven 系统展示…

英灵神殿mac能玩吗 英灵神殿对电脑配置要求《英灵神殿》新手攻略查询 PD虚拟机能玩英灵神殿吗

近年来&#xff0c;随着《英灵神殿》&#xff08;Valheim&#xff09;游戏的火热&#xff0c;越来越多的玩家被其独特的北欧神话题材和丰富的生存挑战所吸引。然而&#xff0c;对于Mac用户来说&#xff0c;如何在Mac平台上运行这款游戏可能是一个问题。此外&#xff0c;作为一名…

数据库day1

MySQL的安装&#xff1a; 采用MySQL的zip格式安装

原创作品—— 文旅类、教育类网站设计

文旅类网站设计应追求简约风格&#xff0c;利用空白和少量文字突出关键信息&#xff0c;吸引用户眼球。同时&#xff0c;采用高质量图片和视频展示文化特色&#xff0c;提升视觉体验。 确保核心功能如搜索、预订、景点介绍等显眼易用&#xff0c;提供清晰的导航栏和响应式设计&…

基于OpenMV识别数字及程序说明

OpenMV简介 OpenMV是一个开源、低成本且功能强大的机器视觉模块。它基于STM32F427CPU&#xff0c;集成了OV7725摄像头芯片&#xff0c;能在小巧的硬件模块上&#xff0c;用C语言高效地实现核心机器视觉算法&#xff0c;并提供了Python编程接口&#xff0c;使得图像处理的复杂度…

探索迁移学习:通过实例深入理解机器学习的强大方法

探索迁移学习&#xff1a;通过实例深入理解机器学习的强大方法 &#x1f341;1. 迁移学习的概念&#x1f341;2. 迁移学习的应用领域&#x1f341;2.1 计算机视觉&#x1f341;2.2 自然语言处理&#xff08;NLP&#xff09;&#x1f341;2.3 医学图像分析&#x1f341;2.4 语音…

数字信号处理教程(2)——时域离散信号与时域离散系统

上回书说到数字信号处理中基本的一个通用模型框架图。今天咱们继续&#xff0c;可以说今天要讲的东西必须是学习数字信号处理必备的观念——模拟与数字&#xff0c;连续和离散。 时域离散序列 由于数字信号基本都来自模拟信号&#xff0c;所以先来谈谈模拟信号。模拟信号就是…

Mybatis一级缓存

缓存 MyBatis 包含一个非常强大的查询缓存特性,它可以非常方便地配置和定制。MyBatis 3 中的缓存实现的很多改进都已经实现了,使得它更加强大而且易于配置。 Mybatis和Hibernate一样&#xff0c;也有一级和二级缓存&#xff0c;同样默认开启的只有一级缓存&#xff0c;二级缓…

奇瑞被曝强制加班,“896”成常态且没有加班费

ChatGPT狂飙160天&#xff0c;世界已经不是之前的样子。 更多资源欢迎关注 7 月 2 日消息&#xff0c;一位认证为“奇瑞员工”的网友近期发帖引发热议&#xff0c;奇瑞汽车内部存在强制加班行为&#xff0c;每周加班时长需大于 20 小时并且没有加班费&#xff0c;仅补贴 10 元…