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

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

  • 现在语言模型的一个弊端
  • 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.rhkb.cn/news/400591.html

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

相关文章

WSL 忘记ubuntu的密码

文章目录 1. 以管理员身份打开 PowerShel2.输入命令 wsl.exe -d Ubuntu-20.04 --user root3.输入命令 passwd username 修改用户密码,username即待重置的用户的名称 1. 以管理员身份打开 PowerShel 2.输入命令 wsl.exe -d Ubuntu-20.04 --user root 注意版本号是自…

Springboot整合Flowable入门-学习笔记

目录 1、定义流程(画图) 2、Springboot部署流程 3、Springboot删除所有流程 4、Springboot根据 流程部署ID 查询 流程定义ID 5、Springboot启动(发起)流程 6、Springboot查询任务 6.1全部任务 6.2我的任务(代办任务) 7、…

JVM知识总结(性能调优)

文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 性能调优 何时进行JVM调优? 遇到以下情况&#xff0c…

傻瓜式一步到位Mysql 8.0 密码修改

5.7之前修改密码语句 update user set authentication_string password(“root”) where user “root”; mysql 5.7.9以后废弃了password字段和password()函数;并在user表加了authentication_string:字段表示用户密码 #进入到mysql 安装目录下 #停止 mysql 服务 …

怎么调试python脚本

打开pycharm community 2019.1软件,创建一个项目。 创建一个py后缀的文件作为示范,文件名自己定义。 编写代码,然后右键点击进行运行,查看一下是否有问题。 点击右上角的虫子图标,然后下面会有控制面板出来&#xff0c…

基于C11的简单log,支持C++的‘<<’风格和C的‘可变参数’风格

基于C11的简单log&#xff0c;支持C的‘<<’风格和C的‘可变参数’风格 日志仅由richlog.h单个文件实现功能&#xff0c;软件集成简单。 支持C的std::cout的<<风格的日志打印&#xff0c;也支持C的printf风格的日志打印 日志多线程安全&#xff0c;采用C11 mute…

SpringBoot整合日志功能(slf4j+logback)详解

目录 一、日志门面与日志实现 1.1 什么是日志门面和日志实现&#xff1f; 1.2 为什么需要日志门面&#xff1f; 二、简介 三、日志格式 四、记录日志 4.1 使用日志工厂 4.2 使用Lombok的Slf4j注解 五、日志级别 5.1 日志级别介绍 5.2 配置日志级别 5.3 指定某个包下…

分类预测|基于粒子群优化核极限学习机的Adaboost集成模型数据分类预测Matlab程序 PSO-KELM-Adaboost

分类预测|基于粒子群优化核极限学习机的Adaboost集成模型数据分类预测Matlab程序 PSO-KELM-Adaboost 文章目录 前言分类预测|基于粒子群优化核极限学习机的Adaboost集成模型数据分类预测Matlab程序 PSO-KELM-Adaboost 一、PSO-KELM-Adaboost模型1. 核化极限学习机 (KELM)2. 粒子…

数据库原理面试-核心概念-问题理解

目录 1.数据库、数据库系统与数据库管理系统 2.理解数据独立性 3.数据模型 4.模式、外模式和内模式 5.关系和关系数据库 6.主键与外键 7.SQL语言 8.索引与视图 9.数据库安全 10.数据库完整性 11.数据依赖和函数依赖 12.范式&#xff1f;三范式&#xff1f;为什么要遵…

用栈访问最后若干元素——682、71、388

682. 棒球比赛&#xff08;简单&#xff09; 你现在是一场采用特殊赛制棒球比赛的记录员。这场比赛由若干回合组成&#xff0c;过去几回合的得分可能会影响以后几回合的得分。 比赛开始时&#xff0c;记录是空白的。你会得到一个记录操作的字符串列表 ops&#xff0c;其中 ops[…

【redis的大key问题】

在使用 Redis 的过程中&#xff0c;如果未能及时发现并处理 Big keys&#xff08;下文称为“大Key”&#xff09;&#xff0c;可能会导致服务性能下降、用户体验变差&#xff0c;甚至引发大面积故障。 本文将介绍大Key产生的原因、其可能引发的问题及如何快速找出大Key并将其优…

基于llama.cpp实现Llama3模型的guff格式转换、4bit量化以及GPU推理加速(海光DCU)

重要说明&#xff1a;本文从网上资料整理而来&#xff0c;仅记录博主学习相关知识点的过程&#xff0c;侵删。 序言 本文使用llama.cpp框架&#xff0c;对 Llama3-8B-Instruct 模型进行gguf格式转换&#xff0c;8bit量化&#xff0c;并在CPU和GPU上对8bit模型进行推理。 测试…

基于SpringBoot的企业资产管理系统

TOC springboot117基于SpringBoot的企业资产管理系统 系统概述 1.1 研究背景 智慧养老是面向居家老人、社区及养老机构的传感网系统与信息平台&#xff0c;并在此基础上提供实时、快捷、高效、低成本的&#xff0c;物联化、互联化、智能化的养老服务。 随着科技进步&#…

mysql中log

目录 MySQL 日志系统概述 日志类型 日志的作用和重要性 Mermaid图示 1. Undo Log 和 Redo Log 的协同工作图 2. Redo Log 确保持久性的流程图 Undo Log&#xff08;回滚日志&#xff09; 事务的原子性&#xff08;Atomicity&#xff09;保障 事务回滚机制 MVCC&#…

【二叉树进阶】--- 二叉搜索树转双向链表 最近公共祖先

Welcome to 9ilks Code World (๑•́ ₃ •̀๑) 个人主页: 9ilk (๑•́ ₃ •̀๑) 文章专栏&#xff1a; 数据结构 本篇博客我们继续了解一些二叉树的进阶算法。 &#x1f3e0; 二叉搜索 树转化为双向循环链表 &#x1f4cc; 题目内容 将二叉搜索树转化为排序…

失败:Windows--WSL2--Ubuntuon--Docker

编写目的&#xff1a; 在Windows上安装Docker&#xff0c;用Docker安装Gitlab、Jenkins等软件。 文章记录一下Windows上安装Docker的过程。 参考文档&#xff1a; 旧版 WSL 的手动安装步骤 | Microsoft Learn 下面用"参考文档"代替 目录 第一步&#xff1a;启…

SAP与网易大数据系统集成案例

一、项目环境 江西某药业有限公司是一家以医药产业为主营、资本经营为平台的大型民营企业集团。公司成立迄今&#xff0c;企业经营一直呈现稳健、快速发展的态势集团总销售额超40亿元。 为了帮助企业更有效的进行分配和管理&#xff0c;包括人力、物资、时间和预算等资源&a…

UVa1660/LA3031 Cable TV Network

UVa1660/LA3031 Cable TV Network 题目链接题意分析AC 代码 题目链接 本题是2004年icpc欧洲区域赛东南欧赛区的题目 题意 给定一个n&#xff08;n≤50&#xff09;个点的无向图&#xff0c;求它的点连通度&#xff0c;即最少删除多少个点&#xff0c;使得图不连通。如下图所示…

C语言----约瑟夫环

约瑟夫环 实例说明&#xff1a; 本实例使用循环链表实现约瑟夫环。给定一组编号分别是4、7、5、9、3、2、6、1、8。报数初始值由用户输入&#xff0c;这里输入4&#xff0c;如图12.18所示&#xff0c;按照约瑟夫环原理打印输出队列。 实现过程&#xff1a; (1)在 VC6.0中创建…

GlobalMapper软件安装流程

目录 一、环境准备 二、安装步骤 三、软件激活 一、环境准备 系统&#xff1a;win7操作系统 安装包下载&#xff1a;链接&#xff1a;https://pan.baidu.com/s/1Vb4VVRFBRYawt3MT-5gYOw 提取码&#xff1a;sxdj 二、安装步骤 1、解压&#xff0c;右键global-mapper-23_1-x…