当前位置: 首页 > news >正文

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

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

  • 现在语言模型的一个弊端
  • 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 实现方式

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

相关文章:

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

一个加速语言模型生成的方法 现在语言模型的一个弊端speculative decoding预言家预测的问题 speculative decoding 模块的实现方法NAT Non-autoregressive模型压缩使用搜索引擎 一些更复杂些的speculative decoding 实现方式 speculative decoding 是一个适用于目前生成模型的加…...

Rust 错误处理

Rust 错误处理 Rust 是一种系统编程语言,以其内存安全、高并发和实用性而著称。在 Rust 中,错误处理是一个核心概念,它通过提供 Result 和 Option 类型来鼓励开发者显式地处理可能出现的错误,而不是依赖异常机制。本文将深入探讨 Rust 中的错误处理机制,包括 Result 和 O…...

程序与进程 linux系统

程序与进程 程序 ( program ): 通常为 binary program ,放置在储存媒体中(如硬盘、光盘、软盘、磁带等), 为实体文件的型态存在;二进制文件,比如静态 /bin/date…...

使用MongoDB构建AI:Story Tools Studio将生成式AI引入Myth Maker AI游戏

Story Tools Studio利用先进的生成式AI技术,打造沉浸式、个性化、无穷尽的情景体验。 Story Tools Studio创始人兼首席执行官Roy Altman表示:“我们的旗舰游戏Myth Maker AI采用的是我们自主研发的、以AI为驱动的专家指导型故事生成器MUSE,它…...

鸿蒙UIAbility组件概述(二)

鸿蒙UIAbility组件概述 UIAbility组件基本用法指定UIAbility的启动页面获取UIAbility的上下文信息 UIAbility组件与UI的数据同步使用EventHub进行数据通信使用AppStorage/LocalStorage进行数据同步 UIAbility组件间交互(设备内)启动应用内的UIAbility启动…...

Oracle(70)如何优化SQL查询?

优化SQL查询是数据库管理的重要部分,旨在提高查询性能,减少响应时间和资源消耗。以下是一些常见的SQL查询优化技术,结合代码示例详细说明。 1. 使用索引 索引是优化查询性能的最常见方法之一。索引可以显著减少数据检索的时间。 示例 假设…...

深度剖析:Jenkins构建任务无法中断的原因及解决方案

个人名片 🎓作者简介:java领域优质创作者 🌐个人主页:码农阿豪 📞工作室:新空间代码工作室(提供各种软件服务) 💌个人邮箱:[2435024119qq.com] &#x1f4f1…...

【YOLO】常用脚本

目录 VOC转YOLO划分训练集、测试集与验证集 VOC转YOLO import os import xml.etree.ElementTree as ETdef convert(size, box):dw 1. / size[0]dh 1. / size[1]x (box[0] box[1]) / 2.0y (box[2] box[3]) / 2.0w box[1] - box[0]h box[3] - box[2]x x * dww w * dwy…...

Springboot IOC DI理解及实现+JUnit的引入+参数配置

一、JavaConfig 我们通常使用 Spring 都会使用 XML 配置,随着功能以及业务逻辑的日益复杂,应用伴随着大量的 XML 配置文件以及复杂的 bean 依赖关系,使用起来很不方便。 在 Spring 3.0 开始,Spring 官方就已经开始推荐使用 Java…...

CeresPCL 最小二乘插值(曲线拟合)

一、简介 在多项式插值时,当数据点个数较多时,插值会导致多项式曲线阶数过高,带来不稳定因素。因此我们可以通过固定幂基函数的最高次数 m(m < n),来对我们要拟合的曲线进行降阶。之前的函数形式就可以变为: 既然是最小二乘问题,那么就仍然可以使用Ceres来进行求解。 …...

【TCP/IP】自定义应用层协议,常见端口号

互联网中&#xff0c;主流的是 TCP/IP 五层协议 5G/4G 上网&#xff0c;是有自己的协议栈&#xff0c;要比 TCP/IP 更复杂&#xff08;能够把 TCP/IP 的一部分内容给包含进去了&#xff09; 应用层 可以代表我们所编写的应用程序&#xff0c;只要应用程序里面用到了网络通信…...

Frida 的下载和安装

首先要安装好 python 环境 安装 frida 和 工具包 pip install frida frida-tools 查看版本&#xff1a; frida --version 16.4.8 然后到 github 上下载对应 server &#xff08; 和frida 的版本一致 16.4.8&#xff09; Releases frida/frida (github.com) 查看手机或…...

后端开发刷题 | 链表内指定区间反转【链表篇】

描述 将一个节点数为 size 链表 m 位置到 n 位置之间的区间反转&#xff0c;要求时间复杂度 O(n)O(n)&#xff0c;空间复杂度 O(1)O(1)。 例如&#xff1a; 给出的链表为 1→2→3→4→5→NULL1→2→3→4→5→NULL, m2,n4 返回 1→4→3→2→5→NULL 数据范围&#xff1a; 链表…...

【NVMe系列-提问页与文章总结页面】

NVMe系列-提问页与文章总结页面 问题汇总NVMe协议是什么&#xff1f;PRP 与 PRP List是做什么的&#xff1f; 已写文章汇总 问题汇总 NVMe协议是什么&#xff1f; PRP 与 PRP List是做什么的&#xff1f; 已写文章汇总...

用生成器函数生成表单各字段

生成器函数生成表单字段是非常合适的用法,避免你要用纯javascript做后台时频繁的制作表单&#xff0c;而不能重复利用 //这里是javascript部分&#xff0c;formfiled.js //生成器函数对字段的处理&#xff0c;让各字段name\className\label\value\placeholder赋值到input的属性…...

【xilinx】O-RAN 无线电接口 - Vivado 2020.1 及更新工具版本的发行说明

描述 记录包含 O-RAN 无线电接口 LogiCORE IP 的发行说明和已知问题&#xff0c;包括以下内容&#xff1a; 一般信息已知和已解决的问题 解决方案 一般信息 可以在以下三个位置找到支持的设备&#xff1a; O-RAN 无线电接口 IP 产品指南&#xff08;需要访问O-RAN 安全站点&…...

结营考试- 算法进阶营地 - DAY11

结营考试 - 算法进阶营地 - DAY11 测评链接&#xff1b; A - 打卡题 考点&#xff1a;枚举&#xff1b; 分析 枚举 a _①_ b _②_ c d&#xff0c;中两个运算符的 3 3 3 种可能性&#xff0c;尝试寻找一种符合要求的答案。 参考代码 #include <bits/stdc.h> usi…...

设计模式: 访问者模式

文章目录 一、介绍二、模式结构三、优缺点1、优点2、缺点 四、应用场景 一、介绍 Visitor 模式&#xff08;访问者模式&#xff09;是一种行为设计模式&#xff0c;它允许在不修改对象结构的前提下&#xff0c;增加作用于一组对象上新的操作。就增加新的操作而言&#xff0c;V…...

selenium底层原理详解

目录 1、selenium版本的演变 1.1、Selenium 1.x&#xff08;Selenium RC时代&#xff09; 1.2、Selenium 2.x&#xff08;WebDriver整合时代&#xff09; 1.3、Selenium 3.x 2、selenium原理说明 3、源码说明 3.1、启动webdriver服务建立连接 3.2、发送操作 1、seleni…...

【Solidity】继承

继承 Solidity 中使用 is 关键字实现继承&#xff1a; contract Father {function getNumber() public pure returns (uint) {return 10;}function getNumber2() public pure virtual returns (uint) {return 20;} }contract Son is Father {}现在 Son 就可以调用 Father 的 …...

RT-Thread Smart用户态开发:基于xmake的嵌入式高性能应用构建实践

1. 项目概述与核心价值最近在嵌入式圈子里&#xff0c;和几位做工业网关和智能设备的朋友聊天&#xff0c;大家普遍有个痛点&#xff1a;项目从单片机往更高性能的处理器&#xff08;比如Cortex-A系列&#xff09;迁移时&#xff0c;开发体验有点“开倒车”。在资源受限的单片机…...

AI数据标注实战:如何高效、准确地标注训练数据

在AI模型的开发与迭代过程中&#xff0c;数据标注是连接原始数据与智能算法的关键桥梁&#xff0c;其质量与效率直接决定了模型的性能上限。对于软件测试从业者而言&#xff0c;掌握高效、准确的数据标注方法&#xff0c;不仅能为AI模型提供可靠的训练“食粮”&#xff0c;更能…...

Ubuntu 16.04 32位系统下RT-Thread开发环境搭建全攻略

1. 项目概述&#xff1a;为何要重温一个“过时”的旧系统环境&#xff1f;如果你在2024年看到这个标题&#xff0c;第一反应可能是&#xff1a;“Ubuntu 16.04&#xff1f;还是32位&#xff1f;这都什么年代的配置了&#xff0c;现在不都用Ubuntu 22.04或者24.04了吗&#xff1…...

get_kline_serial 用法:K 线序列长度、末尾行与新 bar 判定

前言 分钟线、小时线策略里&#xff0c;指标几乎都挂在 get_kline_serial 返回的序列上。我常见三类报错&#xff1a;长度不够就访问 iloc[-20]、把未收盘的 close 当成定稿信号、以及同一根 K 线里重复下单。下面按天勤量化里的订阅方式、长度防护和与 is_changing 的配合写一…...

初创团队如何利用 Taotoken 的 Token Plan 有效控制 AI 开发成本

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 初创团队如何利用 Taotoken 的 Token Plan 有效控制 AI 开发成本 对于资源有限的初创团队而言&#xff0c;在产品原型开发或内部工…...

TS9580,TS3440,TS3400,G3000,G1810,G2810,G3810,G4810,TS9020,TS9120报错5B00,P07,E08,1700,5b04废墨垫清零,亲测有用。

下载&#xff1a;点这里下载 备用下载&#xff1a;https://pan.baidu.com/s/1WrPFvdV8sq-qI3_NgO2EvA?pwd0000 常见型号如下&#xff1a; G系列 G1000、G1100、G1200、G1400、G1500、G1800、G1900、G1010、G1110、G1120、G1410、G1420、G1411、G1510、G1520、G1810、G1820、…...

从‘假阳性’到精准匹配:深入解读NAAF如何用‘负面线索’优化你的多模态搜索系统

从‘假阳性’到精准匹配&#xff1a;NAAF框架如何重塑多模态搜索系统的评估逻辑 当用户在电商平台搜索"白色连衣裙 蕾丝边 长袖"时&#xff0c;系统返回的前几条结果中混入了无袖款式&#xff1b;内容审核系统将"沙滩排球比赛"的文本描述错误匹配到一群孩子…...

【Perplexity法规查询功能深度解密】:20年合规专家亲授3大避坑指南与5步精准检索法

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;Perplexity法规查询功能的核心定位与演进逻辑 Perplexity法规查询功能并非通用搜索引擎的简单延伸&#xff0c;而是面向法律合规、金融风控与企业治理场景构建的垂直智能体。其核心定位在于实现“可溯源、可验…...

百考通:AI赋能期刊论文写作,智能生成优质内容

在学术研究领域&#xff0c;期刊论文的撰写是成果输出的关键环节&#xff0c;却也让众多科研工作者与学生倍感压力&#xff1a;选题迷茫、逻辑梳理困难、格式规范复杂、内容提炼耗时&#xff0c;严重拖慢了学术成果的发表节奏。百考通&#xff08;https://www.baikaotongai.com…...

告别Nginx配置!用miniserve在Windows/Mac/Linux三分钟内搞定文件共享

告别Nginx配置&#xff01;用miniserve在Windows/Mac/Linux三分钟内搞定文件共享 你是否曾在团队协作时&#xff0c;为了快速分享一个安装包或设计稿&#xff0c;不得不忍受FTP的繁琐配置&#xff1f;或是被Nginx的虚拟主机设置搞得头晕目眩&#xff1f;现在&#xff0c;这一切…...