今天分享微软公司的一篇文章,Title: LLMLingua: Compressing Prompts for Accelerated Inference of Large Language Models。这篇文章介绍了一种名为LLMLingua的粗到细的提示压缩方法,能够在保持语义完整性的同时,将提示prompt压缩20倍,并且基本不损失性能。
主要分为三个步骤来完成prompt的有效压缩,同时确保基本不损失性能。
*预算控制(budget controller): 为各种组件(instructions, demonstrations, and questions)分配不同的压缩比,通过预算控制器在高压缩比率下维护整体语义完整性。
*迭代压缩算法(token-level iterative compression algorithm): 使用基于token的迭代算法,准确捕捉压缩内容之间的关联性,从而更有效地压缩prompt并保留知识。
*指令调整(instruction tuning): 通过指令调整实现语言模型间的分布对齐,解决小模型和黑盒大模型之间的分布差异。
一、概述
Title: LLMLingua: Compressing Prompts for Accelerated Inference 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 cost,时间成本、金额成本都比较高。
-
Natrual Language本身是冗余的,尤其是口语下,另外ChatGPT实际上能很好的理解某种被压缩的文字[2]。
-
LLM本身已经学会了非常多知识,即prompt中更高置信的部分token完全不需要交给LLMs,他也能从上下文中猜测出来。
prompt压缩的一些关键问题:
1.压缩和性能平衡: 我们应该如何去设计一个prompt 压缩算法,从而能够最大化的压缩prompt,同时又不影响LLMs的性能。
2.能否即插即用: 这种被压缩的prompt能直接用在下游任务中吗?
3.泛化性: 它的泛化性怎么样?
4.为什么压缩prompt对LLM有效,如何证明? 有什么证据能证明Black-box LLMs能理解这种被压缩的prompt?
5.上界在哪: 这种压缩方法的有上界吗?
6.为什么不用GPT-X: 为什么不用GPT-X来做这件事?
2 Methods
2.1 Budget controller
预算控制器(Budget Controller)是LLMLingua方法中的一个重要组件,用于在压缩提示(prompt)时动态分配不同的压缩比率给原始提示中的不同部分。
背景: Prompt中不同成分对于压缩的敏感程度是不同的,例如System prompt,question prompt的敏感度更高,而demonstrations(示例)敏感度低,可以分配更高 的压缩比。
目标: 给Instructions(指令)以及question(用户问题)分配较小的压缩比,保留更重要的指令信息。对于demonstrations(示例)可以分配更高的压缩比,去除其冗余信息。
方法: