[ICML 2023] Fast inference from transformers via speculative decoding

news2024/9/20 12:36:05

Contents

  • Introduction
  • Speculative Decoding
    • Standardized Sampling
    • Speculative Sampling
  • Analysis
  • Experiments
  • References

Introduction

  • 为了提升自回归 LLM 的推理速度,作者提出 speculative decoding,用小语言模型去加速 LLM 推理,从而在一个 decoding step 解码出多个 tokens,并且不改变 LLM 的输出 (1. inference from large models is often not bottlenecked on arithmetic operations, but rather on memory bandwidth and communication; 2. computing the logits of a short continuation of K K K tokens in parallel has a very similar latency to that of sampling a single token)
  • speculative decoding 能给 T5-XXL (11B) 的推理带来 2X-3X 的加速

在这里插入图片描述

Speculative Decoding

  • Notation. M p M_p Mp 为要推理加速的 target model, p ( x ) p(x) p(x) 为 prefix 为 x < t x_{<t} x<t M p M_p Mp 输出的概率分布 p ( x t ∣ x < t ) p(x_t|x_{<t}) p(xtx<t). M q M_q Mq 为 approximation model, q ( x ) q(x) q(x) 为 prefix 为 x < t x_{<t} x<t M q M_q Mq 输出的概率分布 q ( x t ∣ x < t ) q(x_t|x_{<t}) q(xtx<t)

Standardized Sampling

  • argmax, top-k, nucleus 等采样方法都可以被转化为从一个调整过的概率分布中依概率采样,例如 argmax sampling 可以看作是将模型输出的概率分布的非最大值全部设为 0,然后从归一化后的概率分布中采样,因此作者下面只考虑从概率分布中依概率采样的情况,但实际上各种采样方法都可以转化为该问题

Speculative Sampling

  • Speculative Sampling. 先采样 x ∼ q ( x ) x\sim q(x) xq(x),如果 q ( x ) ≤ p ( x ) q(x)\leq p(x) q(x)p(x) 则接受该采样,反之以 1 − p ( x ) q ( x ) 1-\frac{p(x)}{q(x)} 1q(x)p(x) 的概率拒绝该采样,然后重新从概率分布 p ′ ( x ) = n o r m ( m a x ( 0 , p ( x ) − q ( x ) ) ) p'(x)=norm(max(0,p(x)-q(x))) p(x)=norm(max(0,p(x)q(x))) 中采样。可以证明,上述采样方法采样得到的 x x x 满足 x ∼ p ( x ) x\sim p(x) xp(x) (见 “Correctness of Speculative Sampling”)
  • Speculative Decoding Step. 首先 M q M_q Mq 用自回归的方式采样出 γ \gamma γ 个 tokens,然后将其连同 prompt 一起送入 M p M_p Mp 从而并行输出 γ + 1 \gamma+1 γ+1 个 tokens 的 p ( x ) p(x) p(x). 如果 γ \gamma γ 个 tokens 都被接受了,则再从 p γ + 1 ( x ) p_{\gamma+1}(x) pγ+1(x) 中采样出 token t t t. 如果有 token 被拒绝,则对前 γ \gamma γ 个 tokens,找到其中最先被拒绝的 token (假设是第 n + 1 n+1 n+1 个 token),将其重新从调整后的分布 p ′ ( x ) p'(x) p(x) 中采样出 token t t t,接受前 n n n 个 tokens 和 token t t t,这样一个 step 能解码出 1 ∼ γ + 1 1 \sim \gamma+1 1γ+1 个 tokens
    在这里插入图片描述

Correctness of Speculative Sampling
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

Analysis

Number of Generated Tokens

  • 首先定义 acceptance rate β \beta β
    在这里插入图片描述
  • 假设 β \beta β 独立同分布并记 α = E ( β ) \alpha=E(\beta) α=E(β),则 # generated tokens 为 capped geometric variable,成功概率为 1 − α 1-\alpha 1α,cap 为 γ + 1 \gamma+1 γ+1Expected number of tokens produced by a single run of Algorithm 1
    在这里插入图片描述在这里插入图片描述

Calculating α \alpha α

在这里插入图片描述在这里插入图片描述在这里插入图片描述

Corollary 3.6 最后的式子期望里少了求和号?

Walltime Improvement

  • 作者假设有足够的计算资源支持 increased concurrency,即 LLM 对 γ + 1 \gamma+1 γ+1 个 tokens 并行验证不会增加 walltime,speculative decoding 带来的额外开销仅为 approximation model M q M_q Mq
  • cost coefficient c c c. In our experiments where M q M_q Mq is typically a couple of orders of magnitude smaller than M p M_p Mp, c c c was always less than 0.05 and often negligibly close to 0.
    在这里插入图片描述
  • expected improvement factor in total walltime. 假如 c c c 忽略不计,则 expected improvement factor 最大可以达到 1 1 − α \frac{1}{1-\alpha} 1α1 ( γ → ∞ \gamma\rightarrow\infty γ)
    在这里插入图片描述在这里插入图片描述

Number of Arithmetic Operations

在这里插入图片描述

Choosing γ \gamma γ

  • 给定 c c c α \alpha α 并假设有足够的计算资源,则最优的 γ \gamma γ 需要最大化 walltime Improvement factor (i.e., Theorem 3.8). 由于 γ \gamma γ 为整数,因此很容易找到数值解
    在这里插入图片描述
  • trade-off between inference speed and the total number of arithmetic operations (assuming c = c ^ = 0 c = \hat c = 0 c=c^=0)
    在这里插入图片描述在这里插入图片描述

Experiments

  • Empirical Walltime Improvement. M p M_p Mp: T5-XXL (11B). M q M_q Mq: T5-large (800M), T5-base (250M), and T5-small (77M)
    在这里插入图片描述
  • Theoretical Predictions vs. Empirical Runtimes
    在这里插入图片描述
  • Empirical α α α Values. 可以发现对于所有模型而言,都有标准采样的 α \alpha α 低于 arg max ⁡ \argmax argmax α \alpha α (the sharper the adjusted distribution, the higher the α \alpha α values.)
    在这里插入图片描述

References

  • Leviathan, Yaniv, Matan Kalman, and Yossi Matias. “Fast inference from transformers via speculative decoding.” International Conference on Machine Learning. PMLR, 2023.

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

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

相关文章

springboot+vue膳食营养健康网站零食美食品商城_4d8g9

随着社会的不断进步与发展&#xff0c;人们对生活质量要求逐步提升。如果开发一款膳食营养健康网站&#xff0c;可以让用户在最短的时间里享受到最好的服务&#xff1b;而开发本网站&#xff0c;又能够提高网站整体工作水平&#xff0c;简化工作程序&#xff0c;这对管理员和用…

北京“数据二十条”发布,筑牢数据安全根基,加速释放数据产能

要实现2000亿的目标&#xff0c;基础保障如何做好&#xff1f; 7月5日&#xff0c;中共北京市委、北京市人民政府印发《关于更好发挥数据要素作用进一步加快发展数字经济的实施意见》&#xff08;《实施意见》分为9个部分&#xff0c;共涉及20项具体任务&#xff0c;也被称作“…

TypeScript 中的 enum 枚举类型的使用解读。

前言 在 TypeScript 中&#xff0c;新增了很多具有特性的一些数据类型处理方法&#xff0c;enum 【枚举】就是其中&#xff0c;很具有代表性的一种&#xff0c;所以本章节就来聊聊 在 TypeScript 中如何去运用 enum 【枚举】。 枚举得的概念&#xff1a; 枚举&#xff08;Enum&…

Web前端工程师笔试题(合集)

Web前端开发工程师笔试题篇1 1. 在一个框架的属性面板中&#xff0c;不能设置下面哪一项。( C ) A.源文件 ; B.边框颜色 ; C.边框宽度 D.滚动条 2. CSS样式表根据所在网页的位置&#xff0c;可分为?(B ) A.行内样式表、内嵌样式表、混合样式表 B.行内样式表、内嵌样式表…

MySQL数据库——多表查询练习2

一、练习素材 创建表 --创建部门表dept create table dept ( dept1 int , dept_name varchar(11));--创建员工表emp create table emp ( sid int , name varchar(11), age int, worktime_start date, incoming int, dept2 int); 插入数据 --部门表插入数据 insert into dep…

C++ 栈和队列(stack and queue)语法使用及底层实现原理

本篇文章会对C中的容器stack和queue用法进行详解&#xff0c;也包含对优先队列&#xff08;priority_queue&#xff09;的讲解。同时会模拟实现stack、queue和priority_queue底层。希望本篇文章会对你有所帮助&#xff01; 目录 一、stack 栈 1、1 什么是适配器 1、2 stack 语法…

C++ 线程池实现

思路 创建多个工作线程同时维护一个公共的任务队列, 任务队列非空时通过信号量唤醒阻塞等待的工作线程, 工作线程通过互斥锁互斥的从任务队列中取出任务, 然后执行任务 实现 信号量类 class sem {//封装信号量类 public:sem(int num 0) {if (sem_init(&m_sem, 0, num)…

Kernel-Pwn-FGKASLR保护绕过

FGKASLR FGASLR&#xff08;Function Granular KASLR&#xff09;是KASLR的加强版&#xff0c;增加了更细粒度的地址随机化。因此在开启了FGASLR的内核中&#xff0c;即使泄露了内核的程序基地址也不能调用任意的内核函数。 layout_randomized_image 在fgkaslr.c文件中存在着…

支持中文手写和多画布的Handraw

什么是 Handraw ? Handraw 是支持中文手写和多画布的 Excalidraw 白板工具。 官网上项目名称还是 Excalidraw-CN&#xff0c;所以 Handraw 应该是基于 Excalidraw 二开的&#xff0c;特点是支持中文手写字体和多画布 官方也提供了免费使用的站点&#xff1a;https://handraw.t…

ModaHub魔搭社区:向量数据库Zilliz Cloud插入 Entity教程

目录 开始前 插入单个 Entity 批量插入 Entity 准备数据 插入数据 写入操作 本文介绍如何将 Entity 插入到 Zilliz Cloud 集群中的 Collection。 Entity 是 Collection 中的基本数据单元。同一个 Collection 中的 Entity 具有相同的属性,这些属性共同定义在 Schema 中…

低代码开发平台助力解决企业开发效率问题

编者按&#xff1a;随着企业应用需求的不断增加&#xff0c;提高企业开发效率已经成为许多企业的目标。传统的开发方法显然不适用&#xff0c;开发平台通过可视化拖拉拽搭建等易用性和高扩展性可以帮助企业解决这个问题。 关键词&#xff1a;可视化开发、私有化部署、前后端分离…

设计模式--------行为型模式

行为型模式 行为型模式用于描述程序在运行时复杂的流程控制&#xff0c;即描述多个类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务&#xff0c;它涉及算法与对象间职责的分配。 行为型模式分为类行为模式和对象行为模式&#xff0c;前者采用继承机制来在类间…

飞控学习笔记-IMU姿态算法

扩展卡尔曼滤波算法 传感器融合算法 卡尔曼滤波算法 最小二乘法 毕卡逼近法 对上式进行泰勒展开 得到四元数各阶近似算法&#xff1a; 梯度下降算法 梯度下降 互补滤波算法 chatgpt解释&#xff1a; 互补滤波&#xff08;Complementary Filter&#xff09;算法是一种常用…

zk-IMG:对抗虚假信息

1. 引言 前序博客&#xff1a; ZKP图片授权——PhotoProof&#xff1a;proofs of permissible photo edits Daniel Kang等人2022年论文《ZK-IMG: Attested Images via Zero-Knowledge Proofs to Fight Disinformation》&#xff0c;在该论文中提供了一个简单的deep fake ima…

高级编程技巧之Python装饰器详解

概要 装饰器是Python中一种强大而灵活的编程技巧&#xff0c;它可以用于修改或扩展函数的行为&#xff0c;同时又不需要修改函数的源代码。本文将介绍Python中的装饰器的基本概念、使用方法以及高级技巧&#xff0c;帮助你从入门到精通装饰器的使用。 一、基本概念 在深入学习…

【面试必考点】这一次带你彻底学会this的指向问题

文章目录 前言一、this的指向问题1.1 全局中的this1.2 普通函数中的this1.3 定时器中的this1.4 事件处理函数中的this1.5 构造函数中的this1.6 构造函数静态方法中的this1.7 箭头函数中的this 二、修改函数中的this指向2.1 call2.2 apply2.3 bind 三、 this指向练习3.1 某小游戏…

【软件分析/静态分析】chapter6 课程08 指针分析(Pointer Analysis)

&#x1f517; 课程链接&#xff1a;李樾老师和谭天老师的&#xff1a; 南京大学《软件分析》课程08&#xff08;Pointer Analysis&#xff09;_哔哩哔哩_bilibili 目录 第六章 指针分析&#xff08;Pointer Analysis&#xff09; 6.1 为什么需要指针分析 6.2 指针分析的基本…

AMAT 工业输入输出模块0100-77037

W;① ⑧ 0 ③ 0 ① 7 7 7 ⑤ 9 AMAT 工业输入输出模块0100-77037 0100-76124 0100-71313 0100-71311 0100-71309 0100-71278 0100-71267 0100-71229 0100-71224 0100-20100 IGBT 和 IGCT 是四层器件&#xff0c;乍一看并没有什么不同。但是&#xff0c;当您“ 深入了解…

Spring Boot原理分析(三):IoC容器的继承层次

文章目录 一、Spring Ioc容器的继承层次1.BeanFactory2.ListableBeanFactory3.HierarchicalBeanFactory4.ApplicationContext 二、常用的ApplicationContext的实现类1.ClassPathXmlApplicationContext&#xff08;基于XML配置&#xff09;2.AnnotationConfigApplicationContext…

[Android]使用jni实现高斯模糊

1.高斯模糊的原理&#xff1a; 根据周边的像素值来确定自己的像素值&#xff0c;平均值&#xff0c;最大值&#xff0c;最小值&#xff0c;正太分布值 2.均值模糊blur 函数声明&#xff1a; CV_EXPORTS_W void blur( InputArray src, OutputArray dst,Size ksize, Point anc…