【生成式人工智能-十一一个不修改模型就能加速语言模型生成的方法】

news/2024/9/23 6:32:12/

一个加速语言模型生成的方法

  • 现在语言模型的一个弊端
  • speculative decoding
    • 预言家预测的问题
  • speculative decoding 模块的实现方法
    • NAT Non-autoregressive
    • 模型压缩
    • 使用搜索引擎
  • 一些更复杂些的speculative decoding 实现方式

speculative decoding 是一个适用于目前生成模型的加速方法,不需要修改模型,就可以大大加速模型的生成速度。

现在语言模型的一个弊端

现在语言模型用autoregressive decoding方法生成输出内容的时候,由于其底层实现机制是decoder按照顺序一步步生成的,没有办法并行,所以生成的速度很慢。

克服它的一个方法就是speculative decoding,模型之外,外挂一个预言家,多预言一个就加速一倍。

speculative decoding

现在就是要多加上一个speculative decoding模块,它生成速度很快,它的所用就是用来预测语言模型下一个要生成的是什么。这样就可以把语言模型原本串行的操作,变成并行的。原本语言模型的输入的,和 输入加 speculative decoding 预测的下一个token 一起输入到语言模型里,这样语言模型就一次可以并行处理两个输入,生成两个输出了,如图:
在这里插入图片描述
还是用机器翻译来举个例子:

  • 原本的输入形式:

输入:机器学习,输出 machine
输入: 机器学习 ,merchine,输出 learning
输入 :机器学习 ,merchine,输出 end

  • 加上预言模块后:
    输入一次变成两个 也就是原本输入中的上面的前两条一起输入给语言模型,也就是:
    不仅输入

机器学习,

,还要用 speculative decoding 预言到的machine ,形成

机器学习,machine
上面两个一起输入给语言模型,让它输出。

如果 speculative decoding一次预测一个,那么速度就可以提升为原来的2倍,一次预测2个token,就可以提升3倍:
在这里插入图片描述
看到这里你i肯定会想,难道预言家不会犯错么,上面一次预测的这两个token万一有错误呢?

预言家预测的问题

预言家必然不可能都预测准确,要不然语言模型还有什么用,下面我们看看预测错误会出现什么情况:
假如正确的输出是一个红一个黄的token,但是预言家预预测出了一个红一个灰的token,也就是预测错误了一个,那情况就如下:
在这里插入图片描述
这情况下,第三步是错误,但是前两步是正确的呢,速度还是提升了。极端的,预言家全部都没预测对,但是不影响原来一个token的输出,只是多了一点预言家的预测时间,和多了一些运算资源,但是几乎可以忽略。
总之,好处多余坏处。那么预言家 speculative decoding 如何实现呢

speculative decoding 模块的实现方法

speculative decoding 诉求就是速度快,可以犯点错,下面有三个方法可以实现这个诉求

NAT Non-autoregressive

我们可以用 Non-autoregressive 来实现这个,它的实现方式就是生成速度快,但是生成的没那么准确。
在这里插入图片描述
把输入放到NAT的模型里面,同时预测多个输出

模型压缩

可以压缩模型,比如模型量化等很多方法可以压缩模型,用小模型去作为预言家

使用搜索引擎

可以直接联网输入,把搜索到的拿出来作为预言的token

一些更复杂些的speculative decoding 实现方式

一个预言家预测准确的情况无法确定,但是我们可以放多个预言家,这样会耗费计算资源,但是预言准确的命中率会大大提升。


http://www.ppmy.cn/news/1509882.html

相关文章

一台佳能G3811彩色喷墨打印机打印没颜色报5200的维修记录

一台佳能G3811彩色喷墨打印机,用户送修,称打印没有颜色,加电开机连电脑安驱动打印测试,确实没有颜色,于是清洗喷头结果打印机那个显示屏上 ,上来就报错P08,电脑提示5200; 话不多说,开始维修,仅记录当时的维修方法及步骤,其它未列出。。。 维修方法: 1、进维…

MDK常见概念

(1)typedef定义结构体类型 typedef struct {uint32_t BaudRate;uint32_t WordLength;uint32_t StopBits;uint32_t Parity;uint32_t Mode;uint32_t HwFlowCtl;uint32_t OverSampling; } UART_InitTypeDef; (2)寄存器 (3)DMA DMA 是…

快速搭建Vue_cli以及ElementUI简单项目学生管理系统雏形

为了帮助大家快速搭建Vue_cli脚手架还有ElementUI的简单项目,今天我给大家提供方法. 因为这个搭建这个项目步骤繁多,容易忘记,所以给大家提供这个资料希望可以帮助到你们. 废话不多说开始搭建项目: 搭建Vue_cli项目 首先点开HBuilder左上角的文件点击新建,点击项目,选择vue项…

uniprot数据库转换ID功能

1.登入uniprot数据库 uniprot 2. 选择ID mapping,输入P31946和P62258等uniprot数据库中的蛋白质ID 然后在To database选项中选择:sequence databases---RefSeq Protein---map 显示已完成,点击ID MAPPING 下方的网址,则可以看到uni…

【React】自动补全标签(包有效果的)

0. react写标签的时候无法自动补全&#xff0c;需要自己敲<xxx> 如图&#xff0c;想写p标签&#xff0c;很麻烦 1. 打开vscode左下角setting 2. 搜索include Languages&#xff0c;点击emment&#xff0c;点击add item 3. 分别输入javascript&#xff0c;javascriptreac…

我标记了一个属性 img loading=“lazy“

img属性loading 一个属性实现图片懒加载。 <!-- 示例代码 --> <img src"demo.jpg" alt"示例图片" loading"lazy">参数&#xff1a; 值描述eager默认&#xff0c;图像立即加载。lazy图像延迟加载&#xff0c;只有鼠标滚动到该图片所…

Tomcat 启动时出现 java.util.zip.ZipException: error in opening zip file

Tomcat启动 java.util.zip.ZipException: error in opening zip file 错误解决 今天做一个Tomcat的Demo时出现了一个小问题&#xff0c;也在网上查询了很多资料&#xff0c;遇到这个问题的人很少&#xff0c;基本上没有遇到过这种情况&#xff0c;在此记录一下。 报错信息 异…

html+css+js网页设计 移动端 京东6个页面

htmlcssjs网页设计 移动端 京东6个页面 网页作品代码简单&#xff0c;可使用任意HTML编辑软件&#xff08;如&#xff1a;Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作&#xff09;。 获取源码 1&#…