最高20倍!压缩ChatGPT等模型文本提示,极大节省AI算力

news2024/11/23 19:38:40

最高20倍!压缩ChatGPT等模型文本提示,极大节省AI算力_信息_段落_问题

在长文本场景中,ChatGPT 等大语言模型经常面临更高算力成本、更长的延迟以及更差的性能。为了解决这三大难题,微软开源了 LongLLMLingua。

据悉,LongLLMLingua 的核心技术原理是将“文本提示”实现最高 20 倍的极限压缩,同时又可以准确评估提示中内容与问题的相关程度,消除无关内容保留关键信息,达到降本增效目的。

实验结果显示,经过 LongLLMLingua 压缩后的提示,比原始提示的性能提升了 17.1%, 同时输入 GPT-3.5-Turbo 的 tokens 减少了 4 倍。在 LongBench 和 ZeroScrolls 测试中显示,每 1,000 个样本节省 28.5 美元和 27.4 美元的成本。

当压缩约 10 k tokens 的提示,压缩率在 2-10 倍范围内时,端到端延迟可以降低 1.4-3.8 倍,显著加速了推理速率。

论文地址:‌

开源地址:‌https://github.com/microsoft/LLMLingua

 github       https://github.com/microsoft/LLMLingua

从介绍论文来看,LongLLMLingua主要由问题感知的粗细粒度压缩、文档重排序、动态压缩比率和压缩后子序列恢复4大模块组成。

问题感知的粗粒度压缩模块

该模块的设计思路是,使用问题文本进行条件化,评估每个段落与问题的相关程度,保留相关度更高的段落。

具体来说,通过计算问题文本与各段落的条件困惑度,判断二者的逻辑关联程度,条件困惑度越低表示相关性越高。

在此基础上,设置阈值保留困惑度较低的段落,过滤掉与问题不相关的段落。这实现了根据问题快速移除大量冗余信息的粗粒度压缩。

文档重排序模块

研究表明,在提示中,靠近开始和结束位置的内容对语言模型的影响最大。所以该模块根据各段落的相关程度对其进行重新排序,使关键信息出现在对模型更敏感的位置,减少中间位置信息损失。

通过利用粗粒度压缩模块计算出的各段落与问题的关联度,对段落进行排序,使关联度最高的段落排在最前面。这进一步增强了模型对关键信息的感知。

在获取重排序后的相关段落后,需要进一步压缩每个段落内的词量。此时动态压缩比率模块对提示进行精细调控。

动态压缩比率模块

对更相关的段落使用更低的压缩比率,分配更多的保留词语预算,而对相关性较弱的段落则使用更高的压缩比率。

通过利用粗粒度压缩结果中的段落关联度,动态确定每个段落的压缩比率。关联度最高的段落压缩比率最低,依次类推。

实现自适应、细粒度的压缩控制,有效保留关键信息。压缩后还需要提高结果的可靠性,这就需要下面的压缩后子序列恢复模块。

压缩后子序列恢复模块

在压缩过程中,一些关键词可能被过度删除,影响信息的完整性,而该模块可以检测并恢复这些关键词。

工作原理是,利用源文本、压缩文本、生成文本之间的子序列关系,从生成结果中恢复完整的关键名词词组,修复压缩带来的信息缺失,提高结果的准确性。

整个过程有点像我们快速浏览文章、筛选信息、整合要点的工作流程等,使模型快速捕捉文本的关键信息,生成高质量的摘要。

LongLLMLingua实验数据

研究人员构建了一个基于Natural Questions的多文档问答数据集,其中每个示例包含一个问题及20个相关文档,并需要从这20个文档中查找到答案。

该数据集模拟了实际的搜索引擎和问答场景,可以评估模型在长文档中的问答性能。

此外,研究人员还采用了更为通用的长文本理解基准测试集,包括LongBench和ZeroSCROLLS,以评估方法在更广泛场景下的效果。

其中,LongBench覆盖单文档问答、多文档问答、文本摘要、少样本学习等任务,包含英文数据集。ZeroSCROLLS则包括文本摘要、问答理解、情感分析等典型语言理解任务。

在这些数据集上,研究人员比较了LongLLMLingua压缩后的提示与原始提示在大语言模型上的性能。同时,也与其他提示压缩方法进行了对比,如基于困惑度的LLMLingua和基于检索的方法,评估了LongLLMLingua的有效性。

实验结果显示,LongLLMLingua压缩后的提示在问答准确率、生成文本质量等指标上普遍优于原始提示

例如,在NaturalQuestions上,压缩4倍的提示提升了17.1%的问答准确率。当压缩约10k tokens的提示,压缩率在2-10倍范围内时,端到端延迟可以降低1.4-3.8倍。这充分证明LongLLMLingua可以在压缩提示的同时提升关键信息提取。

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

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

相关文章

如何在docker容器中安装Elasticsearch中的IK分词器

目录 (1)准备IK分词器的压缩包 (2)进入docker容器 (3)移动ik分词器到指定文件夹 (4)解压分词器压缩包 (5)测试IK分词器是否安装成功 (1&#…

【Image captioning】论文阅读八—ClipCap: CLIP Prefix for Image Captioning_2021

中文标题:ClipCap: CLIP前缀用于图像描述(ClipCap: CLIP Prefix for Image Captioning) 文章目录 1. 介绍2. 相关工作3. 方法3.1 综述3.2 语言模型微调3.3 映射网络架构3.4 推理 4. 结果5. 结论 摘要:图像描述是视觉语言理解中的…

C语言——操作符详解2

目录 0.过渡0.1 不创建临时变量,交换两数0.2 求整数转成二进制后1的总数 1.单目表达式2. 逗号表达式3. 下标访问[ ]、函数调用( )3.1 下标访问[ ]3.2 函数调用( ) 4. 结构体成员访问操作符4.1 结构体4.1.1 结构体的申明4.1.2 结构体变量的定义和初始化 4.2 结构体成…

SpringBoot 配置类解析

全局流程解析 配置类解析入口 postProcessBeanDefinitionRegistry逻辑 processConfigBeanDefinitions逻辑 执行逻辑解析 执行入口 ConfigurationClassPostProcessor.processConfigBeanDefinitions()方法中的do while循环体中 循环体逻辑 parse方法调用链 doProcessConfigurat…

【C++中STL】list链表

List链表 基本概念构造函数赋值和交换大小操作插入和删除数据存取反转和排序 基本概念 将数据进行链式存储 链表list是一种物理存储单元上非连续的存储结构,数据元素的逻辑顺序是通过链表中的指针链接实现的,链表是由一系列结点组成,结点的组…

Android studio环境搭建过程异常

异常:Connect timed out 创建新项目时,提示time out 解决方案:修改gradle下载地址,使用国内镜像地址 distributionUrlhttps\://services.gradle.org/distributions/gradle-8.2-bin.zip修改成distributionUrlhttps\://mirrors.c…

fatal error:require():Failed opening required

今天部署网站遇到了个错误 fatal error:require():Failed opening required 这个错误经常遇到 大多是网站 是开启了 open_basedir 但今天这个错误很神奇 先说解决方法 1. 检测一下是不是真的 不存在这个文件 即使100%确定 也建议你再仔细看一下 这个文件存不存在 今天我遇…

日常学习之:如何使用 dockerfile 将 vue 的单独前端项目通过 docker 的方式部署到 heroku上

文章目录 需求描述开始操作准备阶段:准备 server.js 文件并安装依赖,将 vue 项目包装成单独的服务器制作 server.js安装 server.js 需要的依赖 构建 Dockerfileheroku container 链接和部署其他细节 需求描述 你想用 vue 构建前端,用 django…

终端录屏神器Asciinema慎用教程

1.效果 2.安装 centos yum install asciinema ubuntu apt-get install asciinema 3.使用 asciinema rec kali.cast #录制文件 asciinema play kali.cast #播放文件 asciinema upload kali.cast #上传文件 详细说明:只使用 asciinema rec 也是可以的,ctrlD结束录屏 4.…

2024年数学建模美赛 分析与编程

2024年数学建模美赛 分析与编程 1、本专栏将在2024年美赛题目公布后,进行深入分析,建议收藏; 2、本专栏对2023年赛题,其它题目分析详见专题讨论; 2023年数学建模美赛A题(A drought stricken plant communi…

尚无忧球馆助教系统源码,助教小程序源码,助教源码,陪练系统源码

特色功能: 不同助教服务类型选择 助教申请,接单,陪练师入住,赚取外快 线下场馆入住 设置自己服务 城市代理 分销商入住 优惠券 技术栈:前端uniapp后端thinkphp 独立全开源

Redis 的二进制安装与包管理安装, 全发行版 Linux 通用

博客原文 文章目录 Redis 简介二进制编译安装获取源码包编译安装移动配置文件到安装目录下配置 redis 为后台启动将 redis 加入到开机启动设置 redis 密码 (可选)修改 bind启动 redis apt 安装更换阿里源(可选)安装 redis修改配置文件 Redis 简介 Redis(全称为Remot…

【Go】Channel底层实现 ②

文章目录 channel底层实现channel发送、接收数据有缓冲 channelchannel 先写再读channel 先读再写(when the receiver comes first) 无缓冲channelchannel存在3种状态: channel底层实现 // channel 类型定义 type hchan struct {// channel 中的元素数量, lenqcoun…

1.26学习总结

连通性判断 DFS连通性判断步骤: 1.从图上任意一点u开始遍历,标记u已经走过 2.递归u的所有符合连通条件的邻居点 3.递归结束,找到了的所有与u的连通点,就是一个连通块 4.然后重复这个步骤找到所有的连通块 BFS连通性判断步骤…

opencv学习二值分析

内容来源于《opencv4应用开发入门、进阶与工程化实践》 二值分析: 常见的二值化方法: 基于全局阈值(threshold)得到的二值图像;基于自适应阈值(adaptiveThreshold)得到的二值图像&#xff1…

RPC教程 7.服务发现与注册中心

0.前言 这一节的内容只能解决只有一个服务的情况。要是有多个服务(即是多个结构体)这种就解决不了,也即是没有服务ip地址和服务实例的映射关系。 1.为什么需要注册中心 在上一节中,客户端想要找到服务实例的ip,需要硬编码把ip写到代码中。…

永磁直驱式风力发电虚拟同步机仿真模型Matlab/Simulink模型

很久没有分享虚拟同步机控制相关的方向了,主要是因为硕士之后,也就没再继续深入研究这个课题了,更多的是在电科院的项目里会接触。这个课题方向其实作为硕士毕业课题还是够用的,相对来说也是比较容易毕业的,因为涉及的…

x-cmd pkg | go - Google 开发的开源编程语言

目录 简介首次用户技术特点竞品分析编译型语言解释型语言JavaWebAssebmly 进一步阅读 简介 Go 语言(或 Golang)是 Google 开发的开源编程语言,诞生于 2006 年。其设计目标是“兼具 Python 等动态语言的开发速度和 C/C 等编译型语言的性能与安…

Nodejs前端学习Day3_准备工作

妈的,这几天真tm冷,前天上午还下了一整天的雪,大雪 文章目录 前言一、Node.js简介1.1何为1.2有什么 二、Node.js可以做什么三、学习路线四、下载nodejs4.1小坑记录4.2LTS和Current版本的不同 五、什么是终端六、在nodejs中执行js代码七、powe…

Python 中的 strip 函数用法,你真的学会了吗?

Python 提供了大量内置函数,使编程变得更加简单。strip 就是这样一个函数。在本文中,我们将探讨 strip 是什么、为什么有用以及如何有效地使用它。 什么是 strip strip 是一种内置方法,用于删除字符串中的前导字符和尾随字符。这些字符可以…