首頁 > 科技週邊 > 人工智慧 > 及時壓縮:帶有Python示例的指南

及時壓縮:帶有Python示例的指南

Lisa Kudrow
發布: 2025-03-06 12:17:10
原創
975 人瀏覽過

在人工智能的快速發展的景觀中,優化大型語言模型(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
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板