使用 LLMLingua-2 压缩 GPT-4 和 Claude 提示
原文地址:Compress GPT-4 and Claude prompts with LLMLingua-2
2024 年 4 月 1 日
向大型语言模型(LLM)发送的提示长度越短,推理速度就会越快,成本也会越低。因此,提示压缩已经成为LLM研究的热门领域。
在最新的一篇论文中,清华大学和微软的研究人员介绍了一种新的与任务无关的提示压缩技术——LLMLingua-2。LLMLingua-2比其他提示压缩方法更快、更高效,且需要的计算资源更少。对于涉及冗长提示的LLM应用来说,它可以成为一个很好的工具,压缩可以节省大量成本并改善用户体验。

任务相关的和任务无关的提示压缩
诸如思维链(CoT)推理、上下文学习和检索增强生成(RAG)等技术使LLM能够处理复杂的任务和未在训练数据中包含的知识。
然而,冗长提示的好处是以增加计算和财务需求为代价的。在某些LLM中,更长的提示可能会降低模型处理上下文信息的能力的准确性。
提示压缩通过缩短原始文本同时保留必要信息来解决这些问题。提示压缩的基本假设是,自然语言包含冗余,这些冗余对人类理解可能有用,但对LLM来说则不必要。
提示压缩可以分为“任务相关”和“任务无关”两种方法。任务相关的压缩方法会根据下游任务或当前查询来移除提示中的令牌。一种流行的方法是LongLLMLingua,它采用一种问题相关的多步骤方法,估计令牌的信息熵并移除冗余部分。其他方法使用强化学习来训练一个模型,基于下游任务提供的奖励信号来压缩提示。任务相关压缩方法的权衡之处在于它们在其他任务上的泛化能力有限。
另一方面,任务无关的方法在压缩提示时不考虑具体任务,使其更适用于更广泛的应用和黑盒LLM。一些任务无关的方法包括LLMLingua和Selective-Context。这些方法使用因果小型语言模型(SLM),如Llama-7B,来评估令牌或词汇单元的信息熵,并移除那些不增加有意义信息的部分。
LLMLingua-2是由原始LLMLingua的作者开发的,是一种任务无关的提示压缩技术。
LLMLingua-2的工作原理
当前的任务无关压缩方法存在一些局限性,这促使研究人员创建了LLMLingua的继任者。
“信息熵可能是一个次优的压缩指标,因为(一)它与提示压缩目标不一致;(二)它只利用单向上下文,可能无法捕获提示压缩所需的所有必要信息。”微软高级研究员、论文合著者钱慧武(Qianhui Wu)表示。
LLMLingua-2将提示压缩重新定义为分类任务,即确定每个令牌是否应该保留或丢弃。它利用这种任务定义来创建提示压缩训练数据集。然后,它使用数据集来训练一个用于压缩任务的轻量级双向转换器编码器模型。
“通过这种方式,它可以从完整的双向上下文中捕获提示压缩所需的所有必要信息,并保证压缩后的提示与原始提示保持一致。”
LLMLingua-2具有几个关键优势。首先,使用双向编码器可以确保捕获提示压缩所需的所有必要信息。其次,由于它使用较小的转换器模型来学习压缩目标,因此具有显著较低的延迟。第三,它的设计旨在保持对原始提示的忠实度,避免幻觉。

训练压缩模型
为了生成用于训练提示压缩模型的数据集,研究人员使用数据蒸馏程序从强大的LLM中提取知识。他们向GPT-4提供提示,并指示它在保留必要信息并避免幻觉的同时减少令牌。
在获得原始文本及其压缩版本的配对后,他们为每个原始文本中的令牌分配一个二进制标签,以确定在压缩后是否应保留或丢弃它。研究人员使用MeetingBank数据集创建了训练示例。
然后,他们在数据集上训练了xlm-roberta-large和multilingual-BERT转换器模型的略微修改版本,以将令牌分类为“保留”或“丢弃”。基于BERT的模型的优势在于,它们学习双向特征,而不是仅具有先前令牌知识的自回归解码器模型。这允许压缩模型学习更丰富的相关性,从而实现更好的压缩。
“在推理过程中,我们根据分类模型计算的概率来确定是否保留或丢弃原始提示中的每个令牌。”研究人员写道。

LLMLingua-2 蒸馏提示
LLMLingua-2的实际应用
研究人员在MeetingBank数据集以及几个领域外数据集(如LongBench、ZeroScrolls、GSM8K和Big Bench Hard)上测试了压缩模型。他们使用GPT-3.5-Turbo作为目标模型。但压缩模型也可以与前沿模型(如GPT-4和Claude 3)一起使用。他们还将LLMLingua-2的压缩、速度和准确性与其他方法以及原始提示进行了比较。
他们的研究结果表明,尽管LLMLingua-2的体积较小,但其压缩性能优于其他任务无关基线,并从GPT-3.5-Turbo到Mistral-7B具有良好的泛化能力。
LLM-Lingua-2实现了2-5倍的压缩率,比现有的提示压缩方法快3-6倍。这意味着,当用于需要长系统和上下文提示的应用程序时,它可以节省大量成本。LLMLingua-2还将延迟降低了1.6-2.9倍,并可将GPU内存成本降低8倍。
有趣的是,当使用Mistral-7B作为目标LLM时,研究人员发现LLMLingua-2的性能甚至优于原始提示。“我们推测,Mistral-7B可能在管理长上下文方面不如GPT-3.5-Turbo擅长。我们的方法通过提供具有更高信息密度的较短提示,有效地提高了Mistral-7B的最终推理性能。”研究人员在论文中写道。
“LLMLingua-2是一种与任务无关的提示压缩方法。”吴说。“这意味着,每当您遇到过长的上下文时,都可以使用LLMLingua-2将其压缩为较短的上下文,以适应有限的上下文窗口,减少财务成本(因为OpenAI根据令牌向用户收费),并减少LLM的推理时间。”
然而,与LongLLMlingua等任务感知压缩方法相比,LLMLingua-2在特定任务上表现不佳。
“我们将这种性能差距归因于[任务感知方法]从问题中获取的额外信息。”研究人员写道。“但是,我们的模型的与任务无关特性使其成为一种高效且具有良好泛化能力的选择,可以部署到不同场景中。”
相关文章:
使用 LLMLingua-2 压缩 GPT-4 和 Claude 提示
原文地址:Compress GPT-4 and Claude prompts with LLMLingua-2 2024 年 4 月 1 日 向大型语言模型(LLM)发送的提示长度越短,推理速度就会越快,成本也会越低。因此,提示压缩已经成为LLM研究的热门领域。 …...
编程大牛坚持了 10 年的 10 个编程好习惯
目录 1.多看官方文档 2.面向搜索引擎编程 3.规范命名 4.认真注释 5.不要重复造轮子 6.多读多写代码 7.预留开发时间 8.大胆重构 9.师傅领进门 10.多阅读源码 1.多看官方文档 不要被这几个字吓到,官方文档其实都是宝藏。 一个成熟的技术诞生,…...
QEMU上PAC功能验证与异常解析
PAC功能如何验证?PAC检查失败时发生什么?问题如何定位?本博客主要探讨这些问题。...
简约轻量-失信录系统源码
失信录系统-最新骗子收录查询系统源码 首页查询: 举报收录页: 后台管理页: 失信录系统 V1.0.0 更新内容: 1.用户查询,举报功能 2.界面独立开发 3.拥有后台管理功能 4.xss,sql安全过滤 5.平台用户查询 6.用户中心(待完…...
前端入门系列-HTML-HTML常见标签(注释,标题,段落,换行)
🌈个人主页:羽晨同学 💫个人格言:“成为自己未来的主人~” HTML常见标签 注释标签 注释不会显示在界面上,目的是提高代码的可读性 <!---这是一个注释----> 注释的原则 要和代码逻辑一致尽量使用中文不要传递负能量 …...
【mysql 第3-10条记录怎么查】
mysql 第3-10条记录怎么查 在MySQL中,如果你想要查询第3到第10条记录,你通常会使用LIMIT和OFFSET子句。但是,需要注意的是,LIMIT和OFFSET是基于结果集的行数来工作的,而不是基于记录的物理位置。这意味着它们通常与某种…...
1.Git是用来干嘛的
本文章学习于【GeekHour】一小时Git教程,来自bilibili Git就是一个文件管理系统,这样说吧,当多个人同时在操作一个文件的同时,很容易造成紊乱,git就是保证文件不紊乱产生的 包括集中式管理系统和分布式管理系统 听懂…...
Git安装教程(图文安装)
Git Bash是git(版本管理器)中提供的一个命令行工具,外观类似于Windows系统内置的cmd命令行工具。 可以将Git Bash看作是一个终端模拟器,它提供了类似于Linux和Unix系统下Bash Shell环境的功能。通过Git Bash,用户可以在Windows系统中运行基于…...
SpringData ElasticSearch - 简化开发,完美适配 Spring 生态
目录 一、SpringData ElasticSearch 1.1、环境配置 1.2、创建实体类 1.3、ElasticsearchRestTemplate 的使用 1.3.1、创建索引 设置映射 1.3.2、创建索引映射注意事项(必看) 1.3.3、简单的增删改查 1.3.4、搜索 1.4、ElasticsearchRepository …...
突破!AI机器人拥有嗅觉!仿生嗅觉芯片研究登上Nature子刊
我们一直梦想着让AI与人类能够更加相似,赋予它们视觉与听觉。而让机器人拥有嗅觉一直以来面临着巨大的困难。 香港科技大学范志勇教授领导的研究团队凭借最新研发的仿生嗅觉芯片(BOC)在这一领域取得了重大突破。该研究成果目前已被发表到IF …...
前端接口防止重复请求实现方案
前言 前段时间老板心血来潮,要我们前端组对整个的项目都做一下接口防止重复请求的处理(似乎是有用户通过一些快速点击薅到了一些优惠券啥的)。。。听到这个需求,第一反应就是,防止薅羊毛最保险的方案不还是在服务端加…...
【leetcode面试经典150题】13.除自身以外数组的乘积(C++)
【leetcode面试经典150题】专栏系列将为准备暑期实习生以及秋招的同学们提高在面试时的经典面试算法题的思路和想法。本专栏将以一题多解和精简算法思路为主,题解使用C语言。(若有使用其他语言的同学也可了解题解思路,本质上语法内容一致&…...
网络编程核心概念解析:IP地址、端口号与网络字节序深度探讨
⭐小白苦学IT的博客主页 ⭐初学者必看:Linux操作系统入门 ⭐代码仓库:Linux代码仓库 ❤关注我一起讨论和学习Linux系统 本节重点 认识IP地址, 端口号, 网络字节序等网络编程中的基本概念; 1.前言 网络编程,作为现代信息社会中的一项核心技术&…...
突破编程_C++_网络编程(TCPIP 四层模型(网络层(1))
1 网络层概述 TCP/IP 四层模型中的网络层是模型中的核心组成部分,它主要负责处理数据包的路由和转发,确保数据能够在源主机和目标主机之间准确地传输。 一、主要功能 网络层的主要功能是实现数据包的选路和转发。当数据从应用层传输到传输层后&#x…...
Java | Leetcode Java题解之第9题回文数
题目: 题解: class Solution {public boolean isPalindrome(int x) {// 特殊情况:// 如上所述,当 x < 0 时,x 不是回文数。// 同样地,如果数字的最后一位是 0,为了使该数字为回文࿰…...
极简云验证 download.php 文件读取漏洞复现
0x01 产品简介 极简云验证是一款开源的网络验证系统,支持多应用卡密生成:卡密生成 单码卡密 次数卡密 会员卡密 积分卡密、卡密管理 卡密长度 卡密封禁 批量生成 批量导出 自定义卡密前缀等;支持多应用多用户管理:应用备注 应用版…...
红黑树路径长度分析:证明与实现
红黑树路径长度分析:证明与实现 一、红黑树的基本性质二、证明:最长路径至多是最短路径的2倍2.1 证明思路2.2 证明过程 三、伪代码实现四、 C语言代码实现5、 结论 红黑树作为一种高效的自平衡二叉搜索树,在计算机科学领域中被广泛应用于各种…...
esp32 gpio初识(一)
目录 功能介绍 实操 功能介绍 引脚又叫管脚,英文叫 Pin, 就是从集成电路(芯片以及一些电子元件)内部电路引出与外围电路的接线的接口。 在我们的 ESP32 开发板上, 我们可以把这些称为引脚, 这些引脚其实是从 ESP32 芯片内部引出来的, 我们…...
python 自制黄金矿工游戏(设计思路+源码)
1.视频效果演示 python自制黄金矿工,细节拉满沉浸式体验,看了你也会 2.开发准备的工具 python3.8, pygame库(python3.5以上的版本应该都可以) 图片处理工具,美图秀秀 截图工具,电脑自带的 自动抠图网页:https://ko…...
Splunk Attack Range:一款针对Splunk安全的模拟测试环境创建工具
关于Splunk Attack Range Splunk Attack Range是一款针对Splunk安全的模拟测试环境创建工具,该工具完全开源,目前由Splunk威胁研究团队负责维护。 该工具能够帮助广大研究人员构建模拟攻击测试所用的本地或云端环境,并将数据转发至Splunk实例…...
label-studio的使用教程(导入本地路径)
文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...
(十)学生端搭建
本次旨在将之前的已完成的部分功能进行拼装到学生端,同时完善学生端的构建。本次工作主要包括: 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...
VB.net复制Ntag213卡写入UID
本示例使用的发卡器:https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...
C# 类和继承(抽象类)
抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...
rnn判断string中第一次出现a的下标
# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...
安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲
文章目录 前言第一部分:体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分:体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...
并发编程 - go版
1.并发编程基础概念 进程和线程 A. 进程是程序在操作系统中的一次执行过程,系统进行资源分配和调度的一个独立单位。B. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。C.一个进程可以创建和撤销多个线程;同一个进程中…...
Vue3中的computer和watch
computed的写法 在页面中 <div>{{ calcNumber }}</div>script中 写法1 常用 import { computed, ref } from vue; let price ref(100);const priceAdd () > { //函数方法 price 1price.value ; }//计算属性 let calcNumber computed(() > {return ${p…...
python打卡day49@浙大疏锦行
知识点回顾: 通道注意力模块复习空间注意力模块CBAM的定义 作业:尝试对今天的模型检查参数数目,并用tensorboard查看训练过程 一、通道注意力模块复习 & CBAM实现 import torch import torch.nn as nnclass CBAM(nn.Module):def __init__…...
02-性能方案设计
需求分析与测试设计 根据具体的性能测试需求,确定测试类型,以及压测的模块(web/mysql/redis/系统整体)前期要与相关人员充分沟通,初步确定压测方案及具体的性能指标QA完成性能测试设计后,需产出测试方案文档发送邮件到项目组&…...
