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

转载
389 天前
4709
AIGC开放社区

文章转载来源:AIGC开放社区

原文来源:AIGC开放社区

图片来源:由无界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://arxiv.org/abs/2310.06839

开源地址: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可以在压缩提示的同时提升关键信息提取。