Title: LLMLingua: Compressing Prompts for Accelerated Inference of Large Language Models
文章标题为LLMLingua:一种用于加速大型语言模型推理的提示压缩方法。该文章介绍了名为LLMLingua的一种粗到细提示压缩方法。它不仅能在保持语义完整性的同时将提示长度压缩至原来的20分之一,并且基本不会影响模型性能。
主要分为三个步骤来完成prompt的有效压缩,同时确保基本不损失性能。
预算控制器(budget controller):根据不同组件类型(如指令、示范和问题)分配相应的压缩比例,在该系统中通过预算控制器在高压缩率范围内保持信息的整体含义。
基于token的迭代压缩算法(token-level iterative compression algorithm):** 该算法通过精确识别数据中各部分之间的关联性,并结合优化策略,在每次迭代过程中动态调整数据表示形式以降低冗余信息含量。** 这种方法不仅能够显著提高数据存储效率,在后续处理中也能有效提升计算速度和资源利用率。
*指令调整(instruction tuning): 通过指令调整实现语言模型间的分布对齐,解决小模型和黑盒大模型之间的分布差异。
一、概述
Title: LLMLingua: Reducing the Complexity of Prompt Representation to Speed Up the Inference Process of Large Language Models
URL: https://arxiv.org/abs/2310.05736
Authors: Huiqiang Jiang, Qianhui Wu, Chin-Yew Lin, Yuqing Yang, Lili Qiu
1 Motivation
随着COT[1]方法及RAG检索技术的引入, prompt变得越长。然而,在此过程中产生了较高的API费用,并导致时间和金额的成本均显著提高。
Natural language本身在口语交流中是冗长的;此外,在压缩形式下 ChatGPT 能够有效理解特定的文字内容。
LLM本身已具备了丰富的知识储备。亦即,在prompt输入中,无需将这些高置信的tokens分配给LLMs,模型自身即可通过上下文信息自行推断得出。
prompt压缩的一些关键问题:
压缩和性能平衡:
压缩与性能平衡:
压缩与性能平衡:
2.能否即插即用: 这种被压缩的prompt能直接用在下游任务中吗?
3.泛化性: 它的泛化性怎么样?
- 为何压缩prompt能让LLM表现出色,并如何验证这一现象? 在探讨这一问题时,请提供哪些证据能够说明Black-box LLMs能够理解这些被压缩的信息?
5.上界在哪: 这种压缩方法的有上界吗?
6.为什么不用GPT-X: 为什么不用GPT-X来做这件事?
2 Methods

2.1 Budget controller
该系统采用动态资源分配机制来优化计算资源的使用效率;其核心组成部分是Budget Controller(LLMLingua方法中的一种智能组件),负责在处理各个压缩提示时根据不同的压缩需求自动分配相应的压缩比率给各个区域。
该系统采用动态资源分配机制来优化计算资源的使用效率;其核心组成部分是Budget Controller(LLMLingua方法中的一种智能组件),负责在处理各个压缩提示时根据不同的压缩需求自动调整每个区域的压缩比例。
背景: Prompt中不同成分对于压缩的敏感程度是不同的,例如System prompt,question prompt的敏感度更高,而demonstrations(示例)敏感度低,可以分配更高 的压缩比。
目标:指定在Instructions(指令)以及question(用户问题)中采用较低的压缩比以保留关键信息;而对于demos(demonstrations)则可采用更高的压缩比以去除冗余内容
方法:

1.确定指定的示例集 D :被确定为初始集合D,并将包括被压缩后的Demonstrations数据集。
2.计算示例的压缩率 :
- 根据目标整体压缩率 π 和预定义的指令和问题部分的压缩率 π_ins 和 π_que,计算 Demonstrations 部分的压缩率 π_dems,公式为:
其中,和
分别表示指令和问题部分的令牌长度。
评估每个示例的困惑度(Perplexity):通过使用预训练语言模型(如 GPT-2 或 LLaMA)对原始示例集中的每一个 Demonstration 进行评估。
*按困惑度对示例Demonstrations 进行排序:将所有 Demonstrations 按照它们的困惑度降序排列并生成为一个列表。
*迭代选择示例 :
如果当前已选取的示例个数与当前示例的困惑度之和高于目标压缩率 π_dems 乘以整个示例集的总令牌数,则迭代过程终止。
否则,将当前 Demonstration 添加到选定的示例集 D 中。
更新计数器 α。
初始化一个计数器 α,用于跟踪已选择的示例Demonstrations数量。
对于列表中的每个 Demonstration(从第一个开始):
分派剩余预算:在完成该部分压缩后,并将其余预算划分为指令和问题相关部分。这一过程可通过调节相关参数来完成。
分派剩余预算:在完成该部分压缩后,并将其余预算划分为指令和问题相关部分。这一过程可通过调节相关参数来完成。
输出结果如下:输出结果为经过粗粒化处理的示例集 D ,并针对指令与问题处理模块进行了相应的资源分配规划
通过这一流程,预算控制器将能够保证在压缩阶段,关键数据得以保存,同时达成对原始指令的有效浓缩.该方法特别适合于处理包含多组Demonstrations的指令集,利用示例级别进行管控即可达到压缩目标.
2.2 Iterative Token-level Prompt Compression (ITPC)
背景:
在LLMLingua方法中, 利用困惑度作为提示压缩的标准时会出现一个固有的局限性, 其核心在于独立性假设. 这一假设计算的是单个token的概率而不考虑其他token的影响, 即一个token的出现概率仅受之前连续tokens的影响, 而与其他tokens无关. 然而, 在语言处理中, tokens之间的复杂依赖关系对理解上下文信息和维持语义完整性具有重要意义.
在数学上,这个独立性假设可以表示为:
=""
该假设的一个显著缺陷是忽视了子词之间的条件依存关系。这可能导致在压缩过程中失去重要信息特别是当执行高比例压缩操作时举例来说在这种情况下基于困惑度评估做出的决定可能会导致推理流程出现漏洞
为了有效解决这一问题,LLMLingua开发了一种新型的迭代 getToken 级别提示压缩(ITPC)算法。该算法通过逐步处理提示中各个段落,并评估每个 token 在当前语境下的条件概率分布特性,在此过程中成功地维持了各 token 间的相互依赖关系。这一创新方案使算法能够在压缩过程中更加细致地评估每一个 token 的重要性特征。
总体而言,在利用困惑度进行提示压缩方面存在固有的局限性在于它简化了令牌之间的复杂关系。然而,LLMLingua通过迭代算法来克服这一缺陷,并实现了更为高效的提示压缩过程。该方法不仅有效提高了提示压缩的效果,而且得以保持语义的完整性。
方法:
通过逐步 getToken并精简 tokenized tokens来实现对 prunable tokens 的高效 prunning。该方法旨在考虑 token 之间的相互影响关系以保留 tokenized tokens 中的关键信息。

image-20240218165043788
1.设置选定的令牌集 T :初始化一个空的令牌集 T,用于存储压缩后的令牌。
2.获取分段集合 S :将目标提示 x’ 分割成若干个段 S = {s1, s2, …, sN}。
3.迭代处理每个段 :对于每个段 (从第一个开始):
- 使用小语言模型 计算该段的所有令牌的条件概率分布,公式:
其中x’ 表示原始提示通过prompt压缩得到的结果;x’ {i−1} 表示第i−1个令牌;s{i−1} 表示第i−1个段的最后一个令牌。
- 根据困惑度分布和相应的压缩比率 动态计算压缩阈值 :
其中涉及的是段落的压缩比值,在依据段的来源(来自特定类型或指定渠道)进行确定时,请根据具体情况设定相应的压缩比例。
- 将满足条件(PPL > )的令牌添加到令牌集 T 中。
通过整合T中的每一个元素来构建最终的压缩指示
在这一迭代过程中,ITPC算法其能在保持提示语义完整性的同时降低提示长度,使得大型语言模型(LLM)的推理成本降低。
2.3 Instruction Tuning
操作优化是LLMLingua方法中的核心环节,在该过程中需要通过技术手段降低小型语言模型(用于压缩提示)与大型语言模型(LLM)之间的分布差距。具体而言,在这一环节中包含了以下详细操作:
为构建小型语言模型进行初始化设置,在预训练的基底模型基础上进行设计与训练工作,如使用GPT-2或LLaMA等。
通过目标LLM生成一些数据:利用目标LLM生成一些数据,并将这些数据用于优化小型语言模型的参数设置。
3.定义优化目标 :明确优化目标, 以确保小型语言模型生成的指令序列与LLM输出内容之间的分布特性尽可能相近。该优化目标可表示为:
其中, 是小型语言模型的参数, 是第 个训练样本对, 是损失函数, 是样本总数。
4.实施指令优化 :通过应用这些优化目标来进行微调训练的小型语言模型,从而使得两个模型之间的分布差异得到最小化。
5.评估和应用调整 :
完成调整后, 对小型语言模型进行性能评估, 并验证其是否能更加精准地模仿目标LLM的分布
将调整后的小型语言模型用于后续的提示压缩过程。
通过参数设置优化,在LLMLingua方法中实现了压缩效果的质量提升以及LLM推理能力的效率优化。尤其是在处理复杂任务时这种方法不仅能够有效保留关键信息还能显著提升推理准确性
3 Conclusion
该算法展现出显著的压缩能力:在包括GSM8K、BBH、ShareGPT以及Arxiv-March23等来自不同应用场景的数据集中进行实验后发现,在保证性能的前提下实现了高达20倍的压缩效率
- 该语言模型具备恢复被压缩prompt的能力。此外,prompt压缩有助于缩短输出长度。一个潜在的优势是可以处理更长的文本内容。
*推理加速: 采用了高效的加速模型推理方案,在处理复杂任务时能够显著提升效率,并大幅降低了由于长提示引发的成本。
4 Limitation
*适应性: 需要测试在更多场景与任务下压缩算法的适用性和表现。
建议深入分析压缩算法在多种不同类型的长提示结构特性上的鲁棒性能。
二、详细内容
1 做了哪些实验?
1.数据集 :
GSM8K**:它是一个专门收集数学推理与公式推导训练题目的数据库。这个集合总共收录了八千道试题,并被设计用来检验模型在解决这类数学问题方面的技巧与能力。
BBH (Big-bench Hard):该基准测试集合包含了多种语言以及符号推理任务,并用于评估链式推理(chain-of-thought)提示的有效性。
ShareGPT 是一个专门的数据库(库),它涵盖了用户与ChatGPT之间的互动(互动)。该数据库被设计用于评估模型在对话理解与生成(生成)层面的表现(表现)。
Arxiv-March23 是一个学术文章摘要数据集。它收集了自2023年3月arXiv预印本库中提交的所有最新文章,并被设计用于评估模型在文本摘要方面的性能。
*评估指标 :
对于GSM8K和BBH,使用精确匹配(Exact Match, EM)作为评估指标。
对于ShareGPT和Arxiv-March23,使用BLEU、ROUGE和BERTScore作为评估指标。
*实验方法 :
LLMLingua:所提方法的核心内容包括预算控制机制(Budget Control Mechanism)、迭代的分词级提示压缩机制(Iterative Word-level Prompt Compression Framework)以及分布对齐策略(Distribution Alignment Strategy)。
Baselines: 包括基于GPT4的生成方式(采用GPT-4进行提示压缩)、随机采样(Random Sampling)、自适应压缩机制(基于小型语言模型实现基于自身信息的选择性压缩)等。
*实验设置 :
在GSM8K和BBH数据集中采用了不同的压缩率(如1:1、1:2、1:4等),以评估模型在不同程度上的压缩性能。
在ShareGPT和Arxiv-March23数据集上,设置了不同的目标压缩比(如2x、3x、5x等)。
*实现细节 :
该系统采用了GPT-3.5-Turbo-0301和Claude-v1.3作为官方模型,并通过调用OpenAI和Claude APIs进行对接。
使用Alpaca-7B或GPT2-Alpaca作为小型预训练语言模型()进行压缩。
实现基于PyTorch 1.12.05和Huggingface的Transformers库。
*恢复压缩提示 :
应用GPT-4系统以尝试恢复被压缩的提示信息,并详细呈现了恢复的具体情况,从而评估LLMs是否能够有效解析并处理被压缩的信息。
2 在对话(ShareGPT)和摘要(Ariv- March23)数据集上的表现

实验说明:
1.Constraint I (2x constraint) : 目标压缩比为2倍。
2.Constraint II (3x constraint) : 目标压缩比为3倍。
Selective-Context : 通过小型语言模型计算每个词汇单元(如句子、短语或单个令牌)的self-information,并去除那些低信息量的内容以实现提示的压缩。
Ours (LLMLingua)**: 开发出了LLMLingua方法,并包含预算控制模块、逐步优化的令牌级别提示压缩技术和分布式对齐策略。
性能指标:
*Tokens : 在给定压缩比下,压缩后的提示中的令牌数量。
这些指标用于评估摘要生成的质量和准确性,并且在自然语言处理领域具有重要地位
*Tokens 1/π : 在给定压缩比下,压缩后的提示长度与原始提示长度的比例。
结论:
LLMLingua这一技术在绝大多数场景中均表现出色,在BLEU指标、ROUGE评估标准以及BERTScore F1分等方面尤其突出。这种优势不仅体现在提升生成质量上,并且还凸显出其卓越的数据压缩能力。
针对ShareGPT任务的研究表明,在压缩比达到4倍时,LLMLingua模型的BLEU得分为27.36分、ROUGE得分为48.87分,并且其BERTScore F1分数达到了90.33%。相比之下,在相同压缩比例下,Selective-Context的表现略显逊色。
在March 23 ArXiv task中,在压缩比为9倍的情况下,LLMLingua的BERTScore F1得分为89.03,并与Selective-Context相比具有优势。
这些研究结果展示了LLMLingua方法在对话及摘要任务中的显著提示压缩能力。该系统不仅展现出优异的表现水平,在提升效率方面也发挥了重要作用。具体而言,在降低大型语言模型(LLM)的推理开销方面取得了显著成效。
3 在数学推理(GSM8K)和复杂语言任务(Big-bench Hard, BBH)数据集上的表现

说明:
1.1-shot constraint : 目标压缩比为1倍,即不压缩。
2.Selective-Context : 使用小语言模型基于自信息选择性地压缩提示。
3.GPT4 Generation : 使用GPT-4生成压缩后的提示。
4.Ours (LLMLingua) : 使用LLMLingua方法进行提示压缩。
性能指标:
*EM : Exact Match,即精确匹配分数,用于评估数学推理任务的性能。
*Tokens : 在给定压缩比下,压缩后的提示中的令牌数量。
*1/π : 压缩比,表示压缩后的提示长度与原始提示长度的比例。
结论:
LLMLingua方法在不同压缩率的表现均较为出色。具体而言,在GSM8K数据集上,该方法实现了79.08% EM分数(5:1的压缩率),而在BBH数据集上,则实现了70.11% EM分数(3:1的压缩率)。这些实验结果充分反映出LLMLingua能够在保持较高推理能力的同时显著提升编码效率。
对比而言,在处理提示时或许会忽略关键信息而导致性能降低。尽管Selective-Context方法在某些情况下表现尚可,但当提升到较高水平时其性能下降速度较快。LLMLingua利用预算控制器以及迭代的令牌级压缩算法能够在保证语义完整性的情况下实现更高的压缩比率。
总体而言,在经过一系列测试与评估后发现 LLMLingua 系统展现出卓越的能力,在数学推理和复杂语言理解方面均取得了显著成果。该系统能够有效地完成提示信息的精炼与压缩过程,在保证大部分性能指标不下降的同时实现了对提示信息的高度精炼。
4 消融实验

说明:
1.Ours : LLMLingua方法的完整实现。
2.Without Iterative Token-wise Prompt Compression : 去除了对迭代 getToken-wise 压减 的依赖性。
- Without the Budget Controller, the system utilizes the Iterative Token-Pair Compression Algorithm (ITPC) and applies the same compression ratio uniformly across all components.
4.无动态压缩比 : 采用固定的压缩比率对所有组件进行编码,并避免动态优化。
-
w/ Random Selection in Budget Controller : 在Budget Controller模块中采用随机抽样选取样本和文本片段进行降维处理。
-
W/O Distribution Alignment: 取消了分布对齐机制,并直接采用预训练的LLaMA-7B作为小型语言模型的基础。
7.w/ Remove Stop Words : 在原始提示中移除停用词,使用NLTK库实现。
性能指标:
*EM : Exact Match,即精确匹配分数,用于评估数学推理任务的性能。
*Tokens : 在给定压缩比下,压缩后的提示中的令牌数量。
*1/π : 压缩比,表示压缩后的提示长度与原始提示长度的比例。
结论:
*迭代令牌级压缩 (Iterative Token-level Prompt Compression)对于确保压缩提示在精确匹配分数上的高准确度至关重要。缺少这一组件,则会导致在执行精确匹配任务时性能明显降低。
*预算控制器 (Budget Controller)旨在实现于各组成部分之间的压缩比率调节与协调统一,并以此来维持整体语义的完整性。缺少该机制时,在系统性能上可能会造成显著降低。
该算法中的动态压缩比值(Dynamic Compression Ratio)能够根据提示的不同部分来优化压缩策略安排,从而有助于维护性能水平。
(Distribution Alignment)作为一种关键的技术手段,在经过对小型语言模型进行优化配置使其趋近于目标LLM的分布状态后,在性能指标上取得了显著提升。
随机化选择 (Random Selection)在预算控制器中可能导致信息丢失,而非以困惑度为标准进行示范选择。
移除停用词**(Remove Stop Words)**可能会影响模型的推理性能
三、总结
总结1: LLMLingua通过验证,在不影响大型语言模型性能的前提下实现了对模型输入提示的显著压缩,并为此提供了在资源受限条件下使用复杂模型的有效途径。
本文采用了经过Alignment处理的经过训练的小型语言模型(如GPT2-small或LLaMA-7B),以去除prompt中不重要的token,并将其转换为一种虽然人类难以完全理解但大型语言模型能够良好理解的形式。
这种被压缩后的prompt可以直接应用于black-box大型语言模型(LLMs),实现了高达20倍的压缩效果,并且几乎不会影响下游任务的表现。
总结2: (Iterative Token-level Prompt Compression)这一组件对于保持压缩提示与原始提示的高度匹配至关重要。缺少这一组件会导致精确匹配分数明显下降。

总结3:在经过高度压缩的形式下的人类可能无法对prompt进行解析分析的场景下,LLM依然具备能力去恢复并输出原始的prompt内容。

四、参考
[1]: Wei J, Wang X, Schuurmans D, et al. Chain-of-thought prompting elicits reasoning in large language models[J]. Advances in Neural Information Processing Systems, 2022, 35: 24824-24837.
[2]: (Long)LLMLingua: 从压缩Prompt出发, 探究属于 LLMs 的语言,缓解Lost in the middle, 提升Long Context 下的性能:https://zhuanlan.zhihu.com/p/660805821
LLMLingua为您提供了一份将prompt压缩至原来的20倍优化方案,请查阅
