要点总结 #
长提示在使用基于 Transformer 的大型语言模型(LLMs)时会导致巨大的硬件成本。许多任务(如摘要生成)不可避免地引入长文档,而上下文学习的广泛应用使得提示长度爆炸性增长。本文提出了 Self-Compressor (SelfCP),它利用目标 LLM 本身将超长提示压缩为密集向量,同时保持允许的提示不变。通过可学习的连接器将密集向量投影为记忆令牌,使同一 LLM 能够理解这些压缩后的提示。SelfCP 在训练过程中保持目标 LLM 冻结,仅通过语言建模目标对连接器和记忆标签进行监督调优。
SelfCP 在多个基准测试中表现出色,能够有效替代 12 倍超长提示,显著减少内存成本并提升推理吞吐量,同时提高响应质量。SelfCP 的出色性能为 LLMs 处理长提示提供了一种高效的解决方案,而无需从头训练 LLMs。通过引入三种压缩策略(前压缩、后压缩和拼接压缩),SelfCP 能够灵活应对不同场景的需求,并在上下文学习中通过记忆演示库(MDB)进一步提升效率。
关键要点 #
论文重要性 #
SelfCP 的研究为处理长提示提供了一种高效且低成本的解决方案,尤其是在上下文学习和长文档处理任务中。随着 LLMs 的广泛应用,长提示带来的内存和计算成本问题日益突出。SelfCP 通过冻结 LLM 并引入轻量级的压缩机制,显著降低了训练和推理成本,同时保持了生成质量。这项研究不仅解决了当前 LLMs 在处理长提示时的瓶颈问题,还为未来的长文本处理模型设计提供了新的思路。未来的研究可以进一步优化压缩机制,探索更高效的上下文管理方法。
图表分析 #
不同方法软提示生成过程 #
🔼 该图展示了在摘要任务中,AutoCompressor、ICAE和SelfCP三种方法在软提示生成过程上的差异。假设压缩器和生成器的窗口限制均为L,并且现在有一个长度为3L的提示,忽略软提示和查询的长度。AutoCompressor会将提示分为三个片段,然后逐步压缩每个片段,需要三次非并行压缩。ICAE只能访问1/3的提示,其余部分将被丢弃,仅需一次压缩。SelfCP则异步压缩每个片段为内存标记,并将它们连接起来,同时将一个片段直接提供给生成器。SelfCP的策略是一种在训练成本、推理效率和响应质量之间的权衡,特别是在未修改片段比其他部分更重要时。实际压缩步骤数可计算为,其中表示单个GPU在一批中可以压缩的片段数量。当GPU容量足够时,等于,这与ICAE的场景相同。当GPU容量仅足以设置=1时,则退化为AutoCompressor的场景。这表明SelfCP结合了AutoCompressor和ICAE的优点,是一种更灵活且高效的提示压缩方法。总体来说,这张图形象地展示了不同压缩方法在处理长提示时采用的不同策略和权衡。
更多图表分析
SelfCP in ICL #
🔼 该图展示了SelfCP在上下文学习(In-Context Learning, ICL)中的应用场景。图中上半部分展示了两个句子片段,Segment 1 为“Cora coiled at the rope around the post. This sentence is acceptable.”,Segment 2 为“the logs piled the barge high. This sentence is unacceptable.”。这两个片段被用作演示(demonstrations)。在ICL中,通常需要将这些演示示例与查询(query)结合使用,以指导语言模型生成正确的答案。然而,当演示示例过长时,会占用大量的模型输入空间,导致效率降低。在图中左侧,展示了原始的演示示例和查询:“Is the sentence acceptable: The weights made the rope stretch over the pulley?”。使用原始演示示例的语言模型给出了错误的答案“Unacceptable(X)”。图中右侧展示了SelfCP的工作原理,通过生成memory tokens,即将原始演示示例压缩成一种更为紧凑的表示形式,使用SelfCP压缩后的演示示例为“[H_1, H_2]”,然后将其与查询结合使用,模型给出了正确的答案“Acceptable(✔)”。图中的文字“Actual demonstrations are too long”和“Memory Tokens are quite efficient”突出了SelfCP的优势,即通过压缩演示示例,可以提高模型的效率,并且可以获得正确的输出。SelfCP通过将长文本输入压缩成memory tokens,使得LLM能够在输入长度有限的情况下处理更长的上下文信息,并且还提高了模型的推理速度。

不同压缩方法软提示生成示意图 #
🔼 该图展示了三种不同的提示压缩方法:AutoCompressor,ICAE 和 SelfCP。AutoCompressor (a) 采用逐步压缩方式,将长提示分段,每段通过 LLM 进行压缩,并将压缩结果与后续段连接,进行递归压缩,最后生成软提示。ICAE (b) 使用 LoRA 微调的 LLM 对整个提示进行压缩,直接将提示压缩为软提示。SelfCP (c) 则使用冻结的 LLM 作为压缩器,将提示分段后,通过学习到的连接器(Connector)将各段压缩为软提示,并将这些软提示与原始查询组合。具体来说,AutoCompressor 逐步处理输入,每次压缩一段,并将压缩后的表示传递到下一阶段的压缩步骤,这种方式的优点是可以处理任意长度的输入,但是计算成本较高。ICAE 对整个输入进行压缩,效率较高,但受限于输入窗口大小,无法处理过长的输入。SelfCP 则将输入分段处理,分别压缩,并通过连接器进行整合,可以灵活地处理不同长度的输入,同时兼顾了效率和压缩质量。图中的火焰符号代表模型参数可被训练,雪花符号表示模型参数被冻结不可训练。这张图突出了 SelfCP 的特点:使用冻结的 LLM 作为压缩器,并通过学习到的连接器来整合压缩结果,使得 SelfCP 能够在降低训练成本的同时,保持较好的压缩效果。三种方法的比较有助于理解 SelfCP 在提示压缩方面的创新之处,尤其是其在效率和处理长输入方面的优势。图中的 S1,S2,S3 代表不同的输入分段。

SelfCP压缩方法示意图 #
🔼 该图展示了 SelfCP 方法中,对输入文本进行压缩处理的策略,其中,文本被划分为次要部分(Minor Segment)和主要部分(Major Segment)。次要部分通常包含一些背景信息或不太重要的细节,例如本例中的时间、地点和涉案人员的简单描述,而主要部分则包含重要的事件或结论。SelfCP 方法旨在压缩次要部分,同时保留主要部分不被修改,以便在生成文本时,模型能够更关注关键信息。在本例中,次要部分描述了事件发生的时间和地点,以及嫌疑人的基本信息,而主要部分则描述了碰撞事件及其造成的后果。SelfCP 通过将次要部分压缩成更小的表示形式(如 memory tokens),并在生成过程中使用这些压缩后的信息,从而减少了模型的输入长度,并提高了处理效率。这种策略允许模型在保留重要信息的同时,有效管理长文本输入,避免因输入过长而导致的性能下降。SelfCP 的核心思想在于,并非所有文本片段都具有同等的重要性,因此应该有选择性地压缩那些相对不重要的部分,从而使模型更好地聚焦于关键信息,提高文本生成的质量。此图通过直观的例子,展示了 SelfCP 方法如何平衡文本压缩与信息保留之间的关系,是一种有效的长文本处理策略。

三种压缩策略示意图 #
🔼 该图展示了论文中提出的三种不同的提示压缩策略:Former Compression(a)、Latter Compression(b)和 Concatenated Compression(c)。这三种策略分别针对不同的场景设计,旨在更有效地利用大型语言模型(LLM)的输入窗口,并在保持信息完整性的前提下减少计算成本。Former Compression(a)主要用于处理那些前部分信息相对不重要,而后部分信息更为关键的输入。此方法将输入的前半部分压缩为记忆标记(memory tokens),并将这些标记置于未压缩的后半部分信息之前。例如,在法律文书生成任务中,案件的细节(如时间、地点)通常不如判决结果重要,因此可以压缩案件细节。Latter Compression(b)则相反,适用于前部分信息更关键,后部分为补充信息的场景。这种策略将输入的后半部分压缩为记忆标记,并将这些标记置于未压缩的前半部分信息之后。例如,在文本摘要任务中,文章的主题通常出现在开头,而事件的具体细节则在后文,此时应压缩后文的细节。Concatenated Compression(c)则用于处理长度超过LLM输入窗口限制的场景,尤其是在上下文学习(ICL)中。此方法将多个不相关的文本段(如演示示例)分别压缩为本地记忆标记,再将这些本地标记连接起来形成全局记忆标记。这使得模型能够处理超出其直接输入范围的文本,并通过缓存记忆标记来避免重复压缩,从而提高效率。总的来说,这三种压缩策略为LLM处理长文本提供了灵活性和效率,其中Former和Latter压缩适用于输入长度在两倍窗口限制内的场景,而Concatenated压缩则适用于输入长度超过两倍窗口限制的场景。这些策略确保了模型在各种不同的任务和场景中均能有效运作。

深度解读 #
SelfCP 方法 #
SelfCP 是一种创新的提示压缩方法,旨在解决长提示在大型语言模型(LLMs)中带来的硬件成本问题。SelfCP 的核心思想是利用目标 LLM 自身来压缩超长的提示,将其转化为密集向量(memory tokens),同时保持允许的提示部分不变。 通过引入可学习的嵌入(memory tags)和连接器(connector),SelfCP 能够在不修改目标 LLM 的情况下,将压缩后的向量投影为 LLM 可理解的 memory tokens。这种设计不仅减少了训练成本,还显著提高了推理效率。 实验表明,SelfCP 能够将超长提示压缩为 1/12 的 memory tokens,从而大幅降低内存占用并提升推理吞吐量。此外,SelfCP 在多种任务(如文本摘要、问答等)中表现出色,展示了其在处理长提示时的优越性。
压缩策略 #
SelfCP 提出了三种压缩策略:前部压缩、后部压缩和拼接压缩。 前部压缩将提示的前半部分压缩为 memory tokens,并将其放在未压缩的后半部分之前;后部压缩则相反,压缩后半部分并将其放在未压缩的前半部分之后。拼接压缩则针对更长的提示,将多个独立的段落压缩为局部的 memory tokens,然后将它们拼接成全局的 memory tokens。 这些策略的灵活性使得 SelfCP 能够根据不同的任务需求动态调整压缩方式,从而在保持提示信息完整性的同时,显著减少计算资源的消耗。特别是在上下文学习(ICL)场景中,拼接压缩策略能够有效处理长提示,并通过缓存 memory tokens 进一步提升推理效率。
训练与推理 #
SelfCP 的训练过程仅涉及 17M 可训练参数,主要来自连接器和 memory tags,而目标 LLM 保持冻结状态。 这种设计使得 SelfCP 在训练成本上具有显著优势,同时能够适应不同的 LLM 骨干网络(如 Vicuna-7b 和 BlueLM-7b)。在推理阶段,SelfCP 通过压缩超长提示并生成 memory tokens,显著减少了内存占用和推理延迟。 实验结果表明,SelfCP 在多种任务中的推理吞吐量优于其他压缩方法(如 AutoCompressor 和 ICAE),特别是在 ICL 场景中,通过缓存 memory tokens,SelfCP 能够避免重复压缩,进一步提升效率。这种高效的设计使得 SelfCP 在处理长提示时具有显著的优势。
性能评估 #
SelfCP 在多个基准测试中表现出色,特别是在处理超长提示时,能够显著提升响应质量。 实验结果表明,SelfCP 在英文和中文任务中均优于其他压缩方法(如 AutoCompressor 和 LLMLingua),尤其是在文本摘要、问答和中文判决生成等任务中,SelfCP 的 ROUGE 分数显著高于基线模型。此外,SelfCP 在上下文学习(ICL)场景中也表现出色,能够通过 memory tokens 有效捕捉演示的核心语义,从而提升少样本学习的性能。 特别是在高资源场景中,SelfCP 通过从 Memory Demonstration Bank(MDB)中检索相似的演示,进一步提升了 ICL 的效果。这些结果表明,SelfCP 在处理长提示和 ICL 任务中具有广泛的应用前景。
未来研究方向 #
尽管 SelfCP 在提示压缩方面取得了显著进展,但仍存在一些局限性,特别是在压缩器的效率方面。 未来的研究可以探索更轻量级的压缩器设计,以进一步减少计算资源的消耗。此外,SelfCP 的压缩策略虽然灵活,但在处理极长提示时仍可能面临挑战,未来的研究可以探索更高效的压缩算法或结合其他技术(如稀疏注意力机制)来进一步提升性能。 另一个值得关注的方向是将 SelfCP 应用于更多领域(如多模态任务或跨语言任务),以验证其通用性和扩展性。最后,未来的研究还可以探索如何更好地利用 memory tokens 来提升模型的生成质量和推理效率,特别是在复杂任务中的应用。
完整论文 #














