如何通过压缩提示降低GPT-4的成本

如果使用得当,LLMLingua可以降低使用高级LLM的成本,并使更广泛的用户和应用程序可以使用LLM。

像GPT-4和Claude这样的大型语言模型(LLM)可以通过良好的提示工程学习新任务。然而,较长的提示会增加使用这些模型的成本,并且还会减慢它们的运行速度。

LLMLingua是微软公司开发的一项新技术,通过消除无关部分来压缩提示。值得注意的是,LLMLingua可以在不影响模型响应质量的情况下将提示的规模压缩高达20倍。如果使用得当,LLMLingua可以降低使用高级LLM的成本,并使更广泛的用户和应用程序可以使用LLM。

提示工程的成本

提示工程是利用LLM进行实际应用的基石。诸如思维链、场景学习以及集成相关文档或历史对话等技术有助于增强特定任务的模型性能。然而,这些方法通常需要更长的提示,有时可能达到数千个令牌。这可能会对使用高级模型的成本产生重大影响,尤其是像GPT-4这样成本高昂的LLM。

虽然有不同的方法来优化模型和降低成本,但一个研究方向是利用自然语言固有的冗余来压缩提示。有些方法通过提示调优来学习专门的令牌,以减少推理期间所需的令牌数量。

然而,这些方法通常是特定于任务的,可能需要对整个模型进行微调,从而限制了它们的使用,并使它们与基于API的模型(例如ChatGPT)不兼容。

其他技术使用LLM来总结对话,以创建浓缩的记忆和知识表示。但是,这些方法通常涉及对LLM的多次成本高昂的调用。

选择性场景是一种令人关注的方法,使用一个规模较小的语言模型来评估文本片段的信息量,丢弃信息较少的内容来压缩提示。微软公司的最新技术建立在这种方法的基础上,并对其进行了改进。

LLMLingua

LLMLingua是一种创新技术,它将提示从粗粒度压缩到细粒度级别。这种方法由几个部分组成。

第一个组成部分是“预算控制器”,它动态地将不同的压缩比分配给原始提示的元素,例如指令、演示和问题。基本原则是指令和问题通常对生成的结果有更直接的影响,因为它们包含了LLM生成答案所需的基本知识。与其相反,当提示包含多个演示时,信息可能是重复的。因此,预算控制器为指令和问题分配更大的预算(意味着更小的压缩比),同时为演示分配更小的预算。

LLMLingua使用较小的语言模型(如GPT-2或LLaMA)来管理这一分配。该模型计算每个演示的困惑度,作为文本与模型响应相关性的衡量标准。然后,LLMLingua优先考虑具有最高困惑值的演示,将其纳入提示中,直到满足演示的令牌预算。剩下的预算用于完善指导和问题。

LLMLingua的第二个组成部分是迭代令牌级提示压缩(ITPC)算法,它允许更细粒度的压缩。迭代令牌级提示压缩(ITPC)首先对提示进行分段,然后使用小模型确定这些分段之间的困惑度分布。接着,该算法构造一个压缩提示,该提示保留具有高困惑度的令牌,通过考虑令牌之间的条件依赖关系来确保保留关键信息。

第三个组成部分涉及基于指令调优的方法,该方法同步大型和小型语言模型的分布模式。这个过程从一个预先训练好的小型语言模型开始,然后使用较大的LLM生成的数据对其进行微调。通过指令调优,小模型的行为与大模型的行为更加一致,增强了整体压缩过程。

测试LLMLingua

在他们的实验中,研究人员使用GPT-3.5 Turbo和Claude 1.3作为主要LLM,并使用Alpaca-7B或GPT2-Alpaca完成压缩任务。他们在各种基准测试中测试了LLMLingua,包括用于推理和场景学习的GSM8k和BBH,以及用于会话场景理解和摘要任务的ShareGPT和Arxiv-March23。

研究人员在发布的一份报告说:“在几乎所有的实验中,我们提出的方法始终以很大的优势优于先前的方法。”

在GSM8K和BBH的推理和场景学习基准测试中,LLMLingua不仅取得了比全景(Full-shot)方法更高的结果,而且获得了5倍和3倍的显著压缩比。

研究人员写道:“这很好地证明了我们的压缩提示有效地保留了原始提示中包含的推理信息。”

对于ShareGPT和Arxiv-March23上的场景理解基准,LLMLingua将提示压缩了9倍和3.3倍。这表明LLMLingua在压缩初始提示时保留了它们的语义完整性。此外,LLMLingua在准确性和压缩程度上都优于其他提示压缩方法。在某些情况下,它在原始提示符上实现了高达20倍的压缩。

尽管涉及多个步骤和两个模型的复杂性,LLMLingua设法实现了从1.7到5.7倍的加速,并且计算开销最小。

研究人员总结说:“我们的方法具有重大的实际意义,因为它不仅降低了计算成本,而且为LLM中适应更长的场景提供了一种潜在的解决方案。”

为了使LLMLingua得到更广泛的采用,微软公司通过一个易于使用的开源库提供了LLMLingua。开发人员可以使用这个库将LLMLingua集成到他们自己的应用程序中。

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

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

相关文章

使用大型语言模型进行文档解析(附带代码)

动机 多年来,正则表达式一直是我解析文档的首选工具,我相信对于许多其他技术人员和行业来说也是如此。 尽管正则表达式在某些情况下功能强大且成功,但它们常常难以应对现实世界文档的复杂性和多变性。 另一方面,大型语言模型提供了…

vue3使用vue-i18n,调用t时指定语言获取翻译后的文本

今天碰到一个问题。就是使用i18n在调用t(‘key’)时,一般是直接返回当前语言文本。 比如我现在是简体。直接调用 t(‘commonBar.close’) 的话会返回简体 ‘关闭’。 但我现在这个地方返回其他语言,比如繁体。要怎么处理呢 查了文档,发现t函数…

writing classes ... [xxx of xxxx] 执行时间太长

一、问题展示 二、解决方法 打开设置【File - Settings…】修改堆大小

【C++】选择结构-多条件if语句

多条件if语句格式为 if(第一个条件) else if(若第一个条件未满足,执行此条件) {第二个条件满足执行此操作} else if(若第二个条件未满足,执行此条件) {第三个条件满足执行此操作} ...... else{若所有条件都不满足执行此操作} 下面是一个实例 #inc…

Qt基础 | 自定义界面组件 | 提升法 | 为UI设计器设计自定义界面组件的Widget插件 | MSVC2019编译器中文乱码问题

文章目录 一、自定义 Widget 组件1.自定义 Widget 子类2.自定义 Widget 组件的使用 二、自定义 Qt Designer 插件1.创建 Qt Designer Widget 插件项目2.插件项目各文件的功能实现3.插件的编译与安装4.使用自定义插件5.使用 MSVC 编译器输出中文的问题 一、自定义 Widget 组件 当…

Vue2从基础到实战(指令篇)

Vue中的常用指令! 概念:指令(Directives)是 Vue 提供的带有 v- 前缀 的 特殊 标签属性。 vue 中的指令按照不同的用途可以分为如下 6 大类: 内容渲染指令(v-html、v-text) 条件渲染指令&…

计科录取75人!常州大学计算机考研考情分析!

常州大学(Changzhou University),简称“常大”,位于江苏省常州市,是江苏省人民政府与中国石油天然气集团有限公司、中国石油化工集团有限公司及中国海洋石油集团有限公司共建的省属全日制本科院校,为全国深…

C++~~string模拟实现(3)

目录 1.传统写法和现代写法 2.对于流提取的优化 3.简单机制了解 4.string类的几个构造函数总结 4.1基本用法 4.2两个赋值方式 4.3拷贝构造 4.4获取字符 4.5一个容易混淆的对比 4.6创建对象 1.传统写法和现代写法 (1)上面的代码里面的左边部分是…

51单片机-第五节-串口通信

1.什么是串口? 串口是通讯接口,实现两个设备的互相通信。 单片机自带UART,其中引脚有TXD发送端,RXD接收端。且电平标准为TTL(5V为1,0V为0)。 2.常见电平标准: (1)TTL电…

pycharm+pytorch+gpu开发环境搭建

一、安装anacoda 1、下载Anaconda安装包 官网下载地址 https://www.anaconda.com/distribution/ 清华镜像 Index of /anaconda/archive/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror 下载python3.8对应的版本Anaconda3-2021.04-Windows-x86_64.exe 下载完成…

Vue中常用指令简介

一. V-html 作用:更新元素的innerHTML,拥有响应式的特点,即数据驱动视图,解析标签,作用类似于js中获取dom对象,然后再进行innerHTML赋值。 展示了一下v-html解析标签的特点,这算是和插值表达式…

【网络安全的神秘世界】文件包含漏洞

🌝博客主页:泥菩萨 💖专栏:Linux探索之旅 | 网络安全的神秘世界 | 专接本 | 每天学会一个渗透测试工具 一、概述 文件包含:重复使用的函数写在文件里,需要使用某个函数时直接调用此文件,而无需再…

【Linux】生产者消费者模型 + 线程池的介绍和代码实现

前言 上节我们学习了线程的同步与互斥,学习了互斥锁和条件变量的使用。本章我们将学习编程的一个重要模型,生产者消费者模型,并且运用之前学的线程同步和互斥的相关接口来实现阻塞队列和环形队列,最后再来实现一个简易的线程池。 …

国科大作业考试资料《人工智能原理与算法》2024新编-第十三次作业整理

1、假设我们从决策树生成了一个训练集,然后将决策树学习应用于该训练集。当训练集的大小趋于无穷时,学习算法将最终返回正确的决策树吗?为什么是或不是? 本次有两个参考: 参考一: 当训练集的大小趋于无穷…

普中51单片机:蜂鸣器的简单使用(十一)

文章目录 引言蜂鸣器的分类工作原理无源蜂鸣器压电式蜂鸣器:电磁式蜂鸣器: 电路符号及应用代码演示——无源蜂鸣器 引言 蜂鸣器是一种常见的电子音响器件,广泛应用于各种电子产品中。它们能够发出不同频率的声音,用于警报、提醒、…

整数二分详解【附带PPT】

#include<bits/stdc.h> using namespace std; int n,a[1001],k;int b_search1(int l,int r,int k){while(l<r){int mlr1>>1;//检查是否满足橙色性质 if(a[m]<k) lm;else rm-1;}//循环结束l和r同时指向边界 return l; }int b_search2(int l,int r,int k){whil…

【Linux】进程间通信(1):进程通信概念与匿名管道

人与人之间是如何通信的&#xff1f;举个简单的例子&#xff0c;假如我是月老&#xff0c;我要为素不相识的但又渴望爱情的男女两方牵红线。我需要收集男方的信息告诉女方&#xff0c;收集女方的信息告诉男方&#xff0c;然后由男女双方来决定是否继续。对于他们而言&#xff0…

Python | Leetcode Python题解之第275题H指数II

题目&#xff1a; 题解&#xff1a; class Solution:def hIndex(self, citations: List[int]) -> int:n len(citations)left 0; right n - 1while left < right:mid left (right - left) // 2if citations[mid] > n - mid:right mid - 1else:left mid 1retur…

【Linux C | 网络编程】进程池大文件传输的实现详解(三)

上一篇实现了进程池的小文件传输&#xff0c;使用自定义的协议&#xff0c;数据长度数据本身&#xff0c;类似小火车的形式&#xff0c;可以很好的解决TCP“粘包”的问题。 【Linux C | 网络编程】进程池小文件传输的实现详解&#xff08;二&#xff09; 当文件的内容大小少于…

html+css 动态效果

1.波浪效果 <div class"sitesingle"></div> <style>.sitesingle{display:flex;justify-content:space-between;align-items:stretch;overflow:hidden;position:relative;height: 400px;}keyframes bgRotate{0%{transform:rotate(0deg)}to{transfor…