首页 > 科技周边 > 人工智能 > 及时压缩:带有Python示例的指南

及时压缩:带有Python示例的指南

Lisa Kudrow
发布: 2025-03-06 12:17:10
原创
973 人浏览过

在人工智能的快速发展的景观中,优化大型语言模型(LLMS)不仅在于突破可能的界限,而且还涉及确保效率和成本效益。

>

提示压缩已成为一种重要技术,可以增强这些模型的性能,同时最大程度地减少计算费用。随着新的研究几乎每周都会出现,保持挑战是具有挑战性的,但是了解基本面是至关重要的。 >本文涵盖了及时压缩的基础知识,讨论了何时应该使用它,其在降低抹布管道中的成本中的重要性,并使用OpenAI的API。

如果您想了解更多信息,请在及时工程上查看本课程。

什么是提示压缩?

提示压缩是一种自然语言处理(NLP)中使用的技术,可通过减少其长度而不显着改变输出的质量和相关性来优化对LLM的输入。由于查询中令牌的数量对LLM性能的影响,因此这种优化至关重要。

令牌是文本LLMS使用的基本单元,根据语言模型的令牌代表单词或子字。在提示中减少令牌数量是有益的,有时是由于几个原因所必需的:

令牌限制约束:

处理效率和降低成本:

令牌较少的代币意味着更快的处理时间和更低的成本。
  • 提高响应的相关性:人类可读提示并不总是意味着一个很好的提示。有时,我们认为的提示是良好的,内容丰富的llms信息,例如停止单词(“ a”,“ the”,“”,“,”等。 >提示压缩通过采用诸如删除冗余信息,汇总要点或利用专业算法等策略来降低令牌数量,以提示提示的本质,同时最大程度地减少其令牌计数。
  • 我们什么时候应该使用提示压缩?>
  • >让我们探索可以使用及时压缩的方案。
  • > 高级提示工程技术
  • 的技术等提示链,虽然非常有效,但通常会产生长时间的提示,这些提示可以达到数千个令牌。这增加了处理时间和成本,并且可能会超过某些模型的令牌限制。
提示压缩通过减少令牌计数的同时保留提示的有效性来减轻这些问题。

>抹布管道将信息检索与文本生成相结合,并且经常用于专门的聊天机器人和上下文理解至关重要的其他应用程序。这些管道通常需要广泛的对话历史或作为提示检索文件,从而导致代币计数和增加的费用。 在这种情况下,

及时压缩至关重要,同时将成本降至最低。

>提示压缩的适用性和局限性

>重要的是要注意,及时压缩不是通用的解决方案,应明智地使用。例如,为会话上下文设计的助理模型,可能不会受益于积极的提示压缩。

这些模型通常不会为每个令牌收费,并且具有集成的聊天摘要和内存功能来有效地管理对话历史记录,从而使压缩冗余。

>也必须注意的是,即使使用指控的模型,过度压缩也可能导致细微差别或重要细节的损失。在减小大小和保持提示含义的完整性之间达到正确的平衡是关键。

>提示压缩如何工作?

>

提示压缩技术可以分为三种主要方法:知识蒸馏,编码和过滤。每种技术都利用不同的优势来优化LLMS提示的长度和效率。

>我们将讨论这些技术中的每一种,但您可以在本文中找到一种更全面的方法:大型语言模型的有效提示方法:调查。在本文中,我将本文称为“调查文件”。

知识蒸馏

Hinton等人首先引入了机器学习领域的知识蒸馏。 (2015年),其中一个较小,更简单的模型(学生)经过培训以复制较大,更复杂的模型(老师)的行为。

最初开发了该技术来解决训练模型集合的计算挑战。在迅速工程的背景下,知识蒸馏可用于压缩提示而不是模型。

这是通过学习如何通过软提示调整来压缩LLM中的硬提示来实现的。有关详细见解,请参阅调查文件的第3.1节和附录A.1.1。

>编码

编码方法将输入文本转换为向量,减少及时长度而不会丢失关键信息。这些向量捕获了提示的基本含义,从而使LLM可以有效地处理较短的输入。

>有趣的是,LLM精通其他语言,例如base64,可以在编码中用于降低提示的令牌大小。例如,提示“将以下文本转换为法语:你好,你好吗?”在基本64中编码的是“ vhjhbnnsyxrlihrozsbmb2xsb3dpbmcgdgv4dcb0b0bybgcmvuy2g6icdizwxsbywgag93ig93igfyzsb5b5b5b3unpw ==”。您可以尝试提示您喜欢的LLM测试!

>令人惊讶的是,一些编码技术也用于模型越狱,其中涉及操纵LLM以绕过其安全机制。有关编码方法的更多详细信息,请参见调查文件的第3.2节和附录A.1.2。

过滤

>前两种方法试图压缩整个提示,而过滤技术的重点是消除不必要的零件以提高LLM的效率。

>过滤技术评估提示的不同部分的信息内容,并删除冗余信息,因为提示中的所有信息都对LLM有益。这可以在各个级别上完成,例如句子,短语或令牌。

的目标是仅保留提示中最相关的部分。在论文中,Li等人的选择性背景。 (2023),研究人员使用自我信息指标来过滤冗余信息。在论文llmlingua中:压缩提示以加速大型语言模型的推理,Microsoft的研究人员将提示提示为关键组件,并动态调整每个部分的压缩比。有关进一步阅读,请参阅调查文件的第3.3节和附录A.1.3。

如何在Python中实现提示压缩

在本节中,我将实施并测试受欢迎并被认为是最先进的选择性上下文算法。如果您只想测试该算法,则无需安装任何内容,它已经在HuggingFace平台上托管。>

>还有其他主流压缩技术,例如Llmlingua家族的保持简单(KIS),SCLR和算法,但我们将无法在这篇简短的文章中介绍它们。

>应用链接

在选择性上下文Web应用程序中,您可以选择要压缩的提示(英语或简化中文)的语言。您还可以设置压缩率,然后选择是否过滤句子,令牌或相位。

>

>使用OpenAI API

实现和测试选择性上下文

现在,让我们研究Python实施。我们还将使用GPT-3.5-Turbo-0125型号测试一些压缩提示。及时压缩:带有Python示例的指南>

首先,我们需要安装所有必需的模块。我们需要使用pip安装选择性封闭式库:

我们还需要从Spacy下载en_core_web_sm模型,可以使用以下命令来完成:

pip install selective-context
登录后复制

>现在我们需要初始化selectivecontext对象。我们可以为模型选择Curie或GPT-2,然后为语言选择EN或ZH。我将在此示例中使用gpt-2。

python -m spacy download en_core_web_sm
登录后复制
接下来,我们可以在要压缩的文本字符串上调用我们的selectIveContext对象。我们可以设置redaim_ratio和redus_level参数。 REDAL_LEVEL需要是以下内容之一:“发送”,“短语”或“令牌”。对象调用返回(上下文,降低了)元组,其中上下文是压缩提示和降低的_content是删除的短语,句子或代币的列表。

>

sc = SelectiveContext(model_type = ‘gpt-2’, lang = ‘en’)
登录后复制
现在让我们做一些例子。我将要求GPT-3.5-Turbo-0125模型总结本文中的“何时应该使用及时的压缩”部分。然后,我们将使用所有三个降低水平:句子,短语和令牌以0.5的压缩率来压缩该部分。我们将要求该模型再次总结压缩版本,并比较每个提示的令牌计数和模型的输出。

原始段落和摘要

在下面,您可以看到我将使用的API调用 - 我们将在格式字符串中更改文本变量。首先,我们要求该模型总结原始的未压缩段落:>

>通过检查完成。我们可以看到原始提示为304代币长,这是输出:>

如您所见,该模型很好地总结了未压缩的段落。
context, reduced_content = sc(text, reduce_ratio = 0.5, reduce_level = ‘sent’)
登录后复制
令牌级还原

>现在让我们尝试使用令牌还原版本。压缩段落看起来像这样:
from openai import OpenAI
client = OpenAI(api_key = key)
completion = client.chat.completions.create(
	model = “gpt-3.5-turbo-0125”,
	messages = [
{“role”: “user”, “content”: f”Summarize the following paragraph:\n {text}”}
]
)
登录后复制

提示为162个令牌长,以下是模型摘要:>

段未正确汇总该段落。关于changpt的细微差别不从积极的压缩中受益。

>句子级减少

[Prompt compression is useful in scenarios such as advanced prompt engineering techniques and retrieval-augmented generation pipelines to reduce token counts and costs while preserving effectiveness and context. However, it is not a universal solution and should be used judiciously, as excessive compression can lead to a loss of important details. It is important to strike a balance between reducing size and maintaining the prompt's meaning.]
登录后复制
接下来,让我们尝试减少句子级别。减少的提示为129个令牌长:

这是模型摘要:
[When Should Prompt CompProm compression particularly following Advanced prompt engineering Techniques like chainofthought prompting while highly lengthy prompts reach thousands tokensThis increases processing costs and may exceed token limits of certain modelsProm compression mit these token count while prompt effectivenessRetri-au generationRAG pipelines R combine information retrieval text specialized chat contextual understandingThese pipelines frequently involve providing extensive conversation histories retrieved as prompts leading high token counts increased expensesProm compression essential such essential context while costsApplic prompt compression It prompt universal judFor instance assistant models like ChatGPT designed convers contexts benefit aggressive prompt compressionThese models often do charge per token integrated chat summar memory features conversation history effectively compression redundantIt even working models charge per token excessive compression could nuance importantSt reducing size maintaining prompt’s meaning is]
登录后复制

此摘要不包含任何错误,但缺少抹布讨论。

短语级还原

最后,让我们测试短语级还原。提示为183个令牌长:

[Prompt compression is recommended following advanced prompt engineering techniques like chain of thought prompting, especially when dealing with lengthy prompts that reach thousands of tokens. This helps reduce processing costs and ensure that the prompt remains effective for models like RAG pipelines, which involve extensive conversation histories. Prompt compression is essential for maintaining context while keeping costs low, particularly for models like ChatGPT that charge per token and benefit from aggressive compression. However, excessive compression could lead to loss of important nuances, so it is important to strike a balance between reducing size and maintaining the prompt's meaning.]
登录后复制
这是模型的摘要:

[When Should We Use Prompt Compression? This increases processing times and costs and may exceed token limits of certain models. These pipelines frequently involve providing extensive conversation histories or retrieved documents as prompts, leading to high token counts and increased expenses. Prompt compression is essential in such cases to maintain essential context while minimizing costs. For instance, assistant models like ChatGPT, designed for conversational contexts, may not benefit from aggressive prompt compression. These models often do not charge per token and have integrated chat summarization and memory features to manage conversation history effectively, making compression redundant. ]
登录后复制
摘要大多是正确且连贯的。但是,它错误地理解了有关Chatgpt的部分,从而受益于积极的提示压缩。>

评估提示压缩

通过比较不同压缩级别的模型摘要的令牌计数和内容,我们可以看到迅速压缩对模型输出的影响:>

[Prompt compression is necessary when processing times, costs, and token limits may be exceeded in pipelines involving extensive conversation histories or retrieved documents as prompts. However, for certain models like ChatGPT, designed for conversational contexts, aggressive prompt compression may not be beneficial as they already have features to manage conversation history effectively without the need for compression.]
登录后复制

[When Should Prompt Compression Prompt compression particularly beneficial Advanced prompt engineering techniques Techniques like chainofthought prompting while highly lengthy prompts reach thousands tokens This increases processing costs and may exceed token limits of certain models Prompt compression these issues token count while the prompt's effectiveness Retrieval-augmented generation (RAG) pipelines RAG pipelines combine information retrieval text generation specialized chatbots contextual understanding These pipelines frequently involve providing extensive conversation histories or retrieved as prompts leading high token counts increased expenses Prompt compression essential such cases to maintain essential context while costs Applicability prompt compression It's For instance assistant models like ChatGPT designed conversational contexts may benefit aggressive prompt compression These models often do charge per token have integrated chat summarization memory features manage conversation history effectively making compression redundant It even working models charge per token excessive compression could nuance important details reducing size maintaining the prompt’s meaning is
]
登录后复制

压缩级别

令牌计数(原始数为304长)准确性令牌级短语级183>与令牌级别类似,错误地指出,chatgpt受益于积极的压缩。 总体而言,迅速压缩可以显着降低令牌计数,同时保留主要想法。但是,要避免失去重要的细微差别和背景是至关重要的。

>此练习强调了需要根据特定应用程序仔细选择压缩级别的需要,以及在提示中维护某些细节的关键。

>

>值得注意的是,我们以0.5的压缩率进行了所有实验,该实验相对较高。您可能需要针对不同用例的各种压缩率进行各种压缩率,以找到降低及时尺寸和保持其完整性之间的最佳平衡。

结论

及时压缩是一种优化LLM的效率和成本效益的强大技术。我们已经探索了它的基本原理,讨论了其重要性,各种技术和实施细节。 随着生成AI领域的不断发展,保持最新发展至关重要。为了进一步提高您的技能和对迅速压缩和相关技术的理解,我鼓励您探索本文中引用的论文,以及以下DataCamp的综合博客文章和课程:

>

了解提示工程

理解提示调谐

    chatgpt提示开发人员的工程
  • >
  • 提示压缩FAQS
  • >什么是什么提示压缩,为什么重要?

提示压缩是一种用于优化给出的输入的技术,可通过降低其长度(LLMS)来降低其质量和相关性,同时维持其质量和相关性。 It is important because it helps stay within token limits, reduces processing time and costs.

What are some common challenges in implementing prompt compression?

Common challenges include maintaining the balance between compression and preserving essential information, handling diverse types of input data, and ensuring that the compressed prompt still produces high-quality outputs.此外,实施基于机器学习的方法和混合方法可能是资源密集且复杂的。

>如何处理聊天机器人中多转交谈的提示压缩?

用于多转交流,提示压缩必须确保保留先前交互的上下文。选择性上下文过滤等技术可以通过保留对话的关键部分来帮助您有所帮助,同时压缩较少重要的信息。这种方法有助于维持聊天机器人的响应中的连续性和相关性。

>

>我可以使用哪些资源来提高我的及时压缩技能?

​​

进一步增强了您的技能,探索参考的研究论文,博客文章,博客文章,以及本文中提到的数据。主题包括了解及时的工程,及时调整和检索增强的一代(RAG),所有这些对于掌握及时压缩至关重要。另外,请确保练习您学到的技术。使用及时压缩时是否有任何道德上的考虑? 是的,道德上的考虑因素包括确保压缩不会无意间引入偏见或可能导致误解的关键信息或遗漏误解的输出。此外,及时的压缩技术也可能无意间越狱该模型,导致其行为不可预测或产生不适当的内容。重要的是要监视迅速压缩对模型性能和输出的影响,尤其是在诸如医疗保健,金融或法律咨询之类的敏感应用中。

162

>对Chatgpt的重要细微差别不从积极的压缩中受益,并犯了错误。

>句子级

129

没有犯任何错误,而是错过了有关抹布管道的某些上下文。

以上是及时压缩:带有Python示例的指南的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板