Heim > Technologie-Peripheriegeräte > KI > Schnellkomprimierung: Eine Anleitung mit Python -Beispielen

Schnellkomprimierung: Eine Anleitung mit Python -Beispielen

Lisa Kudrow
Freigeben: 2025-03-06 12:17:10
Original
973 Leute haben es durchsucht

In der sich schnell entwickelnden Landschaft der künstlichen Intelligenz geht es nicht nur darum, die Grenzen dessen zu überschreiten, sondern auch darum, Effizienz und Kosteneffizienz zu gewährleisten.

Eingehend -Komprimierung hat sich als wichtige Technik zur Verbesserung der Leistung dieser Modelle entwickelt und gleichzeitig die Rechenaufwendungen minimiert. Da neue Forschungen fast wöchentlich auftreten, ist das Aufstehen schwierig, aber die Grundlagen zu verstehen ist unerlässlich.

Dieser Artikel deckt die Grundlagen der sofortigen Komprimierung ab, erläutert, wann er verwendet werden soll, seine Bedeutung für die Reduzierung der Kosten in RAG-Pipelines und stellt Beispiele mit dem GPT-3,5-Turbo-0125-Modell über OpenAIs API an.

.

Wenn Sie mehr erfahren möchten, sehen Sie sich diesen Kurs unter promptem Engineering an.

Was ist eine schnelle Komprimierung?

Eingehendkomprimierung ist eine Technik, die in der natürlichen Sprachverarbeitung (NLP) verwendet wird, um die für LLMs angegebenen Eingaben zu optimieren, indem die Länge reduziert wird, ohne die Qualität und Relevanz des Ausgangs erheblich zu verändern. Diese Optimierung ist aufgrund der Auswirkungen der Anzahl der Token in Abfragen von entscheidender Bedeutung.

Token sind die grundlegenden Einheiten von Text LLMs, die je nach Tokenizer des Sprachmodells Wörter oder Unterwörter darstellen. Die Verringerung der Anzahl der Token in einer Eingabeaufforderung ist vorteilhaft und manchmal aus mehreren Gründen notwendig:

  • Token -Grenzgrenzwertbeschränkungen: llms haben eine maximale Token -Grenze für Eingänge. Das Überschreiten dieser Grenze kann wichtige Informationen abschneiden und die Klarheit des Ausgangs und die Wirksamkeit des Modells verringern.
  • Verarbeitungseffizienz und Kostenreduzierung: weniger Token bedeuten schnellere Verarbeitungszeiten und niedrigere Kosten.
  • Verbesserte Reaktionsrelevanz: Eine menschenlesbare Eingabeaufforderung bedeutet nicht immer eine gute Eingabeaufforderung. Manchmal sind die Eingabeaufforderungen, die wir für gut und informativ halten, unwichtige Informationen für die LLMs, wie z.
Eingabeaufforderungkomprimierung reduziert die Token -Nummer, indem sie Strategien wie Entfernen redundanter Informationen, Zusammenfassung der wichtigsten Punkte oder die Verwendung spezialisierter Algorithmen zur Destillation der Essenz einer Eingabeaufforderung anwenden und gleichzeitig deren Token -Anzahl minimieren.

Wann sollten wir die Eingabeaufforderungkomprimierung verwenden?

Lassen Sie uns die Szenarien untersuchen, in denen wir eine sofortige Komprimierung verwenden können.

Fortgeschrittene Eingabeaufforderungs -Engineering -Techniken

Techniken wie die Aufforderung der Kette des Gedankens führen zwar hochwirksam, führen jedoch häufig zu langwierigen Aufgaben, die Tausende von Token erreichen können. Dies erhöht die Verarbeitungszeiten und -kosten und kann die Token -Grenzen bestimmter Modelle überschreiten.

Eingabeaufforderung Die Komprimierung mindert diese Probleme, indem es die Token -Anzahl reduziert und gleichzeitig die Effektivität der Eingabeaufforderung beibehält.

Lag -Pipelines kombinieren das Abrufen von Informationen mit der Textgenerierung und werden häufig in speziellen Chatbots und anderen Anwendungen verwendet, bei denen das kontextbezogene Verständnis von entscheidender Bedeutung ist. Diese Pipelines benötigen häufig umfangreiche Gesprächsgeschichten oder abgerufene Dokumente als Eingabeaufforderungen, was zu hohen Token -Zahlen und erhöhten Ausgaben führt.

Einheitliche Komprimierung ist in solchen Fällen von wesentlicher Bedeutung, um den wesentlichen Kontext aufrechtzuerhalten und die Kosten zu minimieren.

Anwendbarkeit und Einschränkungen der Eingabeaufforderung

Es ist wichtig zu beachten, dass die sofortige Komprimierung keine universelle Lösung ist und mit Bedacht verwendet werden sollte. Beispielsweise profitieren Assistentenmodelle wie ChatGPT, die für Konversationskontexte entwickelt wurden, möglicherweise nicht von einer aggressiven schnellen Komprimierung.

Diese Modelle berechnen häufig nicht pro Token und haben die Chat -Zusammenfassung und Speicherfunktionen integriert, um den Gesprächsverlauf effektiv zu verwalten, wodurch die Komprimierung redundant wird.

Es ist auch wichtig zu beachten, dass selbst bei der Arbeit mit Modellen, die pro Token aufgeladen werden, eine übermäßige Komprimierung zu einem Nuance -Verlust oder wichtigen Details führen kann. Das richtige Gleichgewicht zwischen der Verringerung der Größe und der Aufrechterhaltung der Integrität der Bedeutung der Eingabeaufforderung ist der Schlüssel.

Wie funktioniert die Eingabeaufforderung Komprimierung?

Eingehend -Komprimierungstechniken können in drei Hauptmethoden eingeteilt werden: Wissensdestillation, Codierung und Filterung. Jede Technik nutzt unterschiedliche Stärken, um die Länge und Effizienz von Eingabeaufforderungen für LLMs zu optimieren.

Während wir über jede dieser Techniken sprechen, finden Sie in diesem Artikel einen umfassenderen Ansatz: Effiziente Eingabemethoden für große Sprachmodelle: eine Umfrage. In diesem Artikel werde ich dieses Papier als "Vermessungspapier" bezeichnen.

Wissensdestillation

Wissensdestillation ist eine Technik im Bereich des maschinellen Lernens, das zuerst von Hinton et al. (2015), wobei ein kleineres, einfacheres Modell (der Schüler) geschult wird, um das Verhalten eines größeren, komplexeren Modells (des Lehrers) zu replizieren.

Diese Technik wurde ursprünglich entwickelt, um die rechnerischen Herausforderungen der Schulung eines Ensemble von Modellen zu bewältigen. Im Kontext der schnellen Engineering kann die Wissensdestillation verwendet werden, um die Eingabeaufforderung anstelle des Modells zu komprimieren.

Dies wird erreicht, indem er lernt, wie man die harten Eingabeaufforderungen innerhalb von LLMs durch sanftes Einort -Tuning komprimiert. Ausführliche Erkenntnisse finden Sie in den Abschnitten 3.1 und Anhang A.1.1 des Vermessungspapiers.

codieren

Codierungsmethoden verwandeln Eingabetexte in Vektoren und reduzieren die Eingabeaufforderunglänge, ohne kritische Informationen zu verlieren. Diese Vektoren erfassen die wesentliche Bedeutung der Eingabeaufforderungen und ermöglichen es LLMs, kürzere Eingänge effizient zu verarbeiten. Interessanterweise sind LLMs in anderen Sprachen wie Base64 kompetent, die bei der Codierung verwendet werden können, um die Tokengröße der Eingabeaufforderung zu verringern. Zum Beispiel die Eingabeaufforderung "Übersetzen Sie den folgenden Text in Französisch: Hallo, wie geht es Ihnen?" In Base64 codiert ist „vhjhbnnyxrlihrozsbmb2xsb3dpbmcgdgv4dcb0Bgcmvuy2g6icdizwxsbyWgag93igfyzsb5b3unpw ==“. Sie können versuchen, Ihren Lieblings -LLM zu fordern, um es zu testen!

Überraschenderweise werden auch einige Codierungstechniken für den Modell Jailbreak verwendet, bei dem LLM manipuliert wird, um seine Sicherheitsmechanismen zu umgehen. Weitere Informationen zu Codierungsmethoden finden Sie in den Abschnitten 3.2 und Anhang A.1.2 des Vermessungspapiers.

Filterung

Während die beiden vorherigen Methoden versuchen, die gesamte Eingabeaufforderung zu komprimieren, konzentrieren sich die Filtertechniken darauf, unnötige Teile zu eliminieren, um die Effizienz von LLMs zu verbessern.

Filtertechniken bewerten den Informationsgehalt verschiedener Teile einer Eingabeaufforderung und entfernen redundanten Informationen, da nicht alle Informationen in der Eingabeaufforderung für LLMs von Vorteil sind. Dies kann auf verschiedenen Ebenen wie Sätzen, Phrasen oder Token erfolgen.

Ziel ist es, nur die relevantesten Teile der Eingabeaufforderung zu behalten. Im Papier selektiven Kontext von Li et al. (2023) verwenden Forscher Selbstinformationsmetriken, um redundante Informationen zu filtern. In dem Papier llmlingua: Komprimierungsanforderungen für beschleunigte Inferenz von Großsprachmodellen, rahmen Forscher von Microsoft die Eingabeaufforderungen in Schlüsselkomponenten ein und passen die Komprimierungsverhältnisse für jeden Teil dynamisch an. Weitere Informationen finden Sie unter den Abschnitten 3.3 und Anhang A.1.3 des Umfragepapiers.

So implementieren Sie die schnelle Komprimierung in Python

In diesem Abschnitt werde ich den selektiven Kontextalgorithmus implementieren und testen, der beliebt ist und als hochmodernes angesehen wird. Wenn Sie den Algorithmus nur testen möchten, müssen Sie nichts installieren - es wird bereits auf der Huggingface -Plattform gehostet.

Es gibt auch andere Mainstream -Komprimierungstechniken wie Keep It Simple (KIS), SCLR und die Algorithmen der Familie Llmlingua, aber wir werden sie in diesem kurzen Artikel nicht abdecken.

Schnellkomprimierung: Eine Anleitung mit Python -Beispielen App Link

In der Web -App für selektive Kontext können Sie die Sprache der Aufforderung auswählen, die Sie komprimieren möchten (Englisch oder vereinfachtes Chinesisch). Sie können das Komprimierungsverhältnis auch festlegen und auswählen, ob Sätze, Token oder Phasen herausfiltern.

Implementieren und Testen des selektiven Kontextes mit OpenAI API

Lassen Sie uns nun an der Python -Implementierung arbeiten. Wir werden auch einige komprimierte Eingabeaufforderungen mit dem Modell GPT-3,5-Turbo-0125 testen.

Zunächst müssen wir alle erforderlichen Module installieren. Wir müssen die selektive Kontextbibliothek mit PIP installieren:

Wir müssen auch das Modell eN_core_web_sm aus Spacy herunterladen. Dies kann mit dem folgenden Befehl erfolgen:
pip install selective-context
Nach dem Login kopieren
Nach dem Login kopieren
pip install selective-context
Nach dem Login kopieren
Nach dem Login kopieren

Jetzt müssen wir das SelectiveContext -Objekt initialisieren. Wir können entweder Curie oder GPT-2 für das Modell und EN oder ZH für die Sprache auswählen. Ich werde GPT-2 für dieses Beispiel verwenden.

python -m spacy download en_core_web_sm
Nach dem Login kopieren

Als nächstes können wir unser selectiveContext -Objekt in der Textzeichenfolge aufrufen, die wir komprimieren möchten. Wir können die Parameter record_ratio und record_level festlegen. record_level muss einer der folgenden sein: "gesandt", "phrase" oder "token". Der Objektaufruf gibt ein (Kontext, reduziertes_Content) -Tupel zurück, wobei der Kontext die komprimierte Eingabeaufforderung und reduziertes Abbau ist, eine Liste entfernter Phrasen, Sätze oder Token.

sc = SelectiveContext(model_type = ‘gpt-2’, lang = ‘en’)
Nach dem Login kopieren

Lassen Sie uns jetzt einige Beispiele machen. Ich werde das GPT-3.5-Turbo-0125-Modell fragen, um den Abschnitt "Wann sollten wir die Eingabeaufforderungkomprimierung verwenden" aus diesem Artikel zusammenzufassen. Anschließend werden wir den Abschnitt mit einer Komprimierungsrate von 0,5 unter Verwendung aller drei Reduktionsniveaus komprimieren: Satz, Phrase und Token. Wir werden das Modell bitten, die komprimierten Versionen erneut zusammenzufassen und die Token -Anzahl jeder Eingabeaufforderung und die Ausgabe des Modells zu vergleichen.

Originalabsatz und Zusammenfassung

unten sehen Sie den API -Aufruf, den ich verwenden werde - wir ändern einfach die Textvariable in der Formatzeichenfolge. Zunächst bitten wir das Modell, den ursprünglichen, unkomprimierten Absatz zusammenzufassen:

context, reduced_content = sc(text, reduce_ratio = 0.5, reduce_level = ‘sent’)
Nach dem Login kopieren

durch Überprüfung der Fertigstellung. Ausschnitt können wir sehen, dass die ursprüngliche Eingabeaufforderung 304 Token lang ist, und hier ist die Ausgabe:

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}”}
]
)
Nach dem Login kopieren

Wie Sie sehen, hat das Modell den unkomprimierten Absatz recht gut zusammengefasst.

Token-Level-Reduktion

Versuchen wir nun die mit Token reduzierte Version. Der komprimierte Absatz sieht so aus:

[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.]
Nach dem Login kopieren

Die Eingabeaufforderung ist 162 Token lang, und hier ist die Modellzusammenfassung:

[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]
Nach dem Login kopieren

Der Absatz ist nicht korrekt zusammengefasst. Die Nuance über Chatgpt, die nicht von einer aggressiven Komprimierung profitiert, ging verloren.

Reduzierung auf Satzebene

Versuchen wir als nächstes die Reduzierung auf Satzebene. Die reduzierte Eingabeaufforderung ist 129 Token lang:

[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.]
Nach dem Login kopieren

Hier ist die Modellübersicht:

[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. ]
Nach dem Login kopieren

Diese Zusammenfassung enthält keine Fehler, sondern fehlt die Lag -Diskussion.

Phrase-Level-Reduktion

Testen wir schließlich die Reduktion auf Phrase-Ebene. Die Eingabeaufforderung ist 183 Token lang:

[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.]
Nach dem Login kopieren

Hier ist die Zusammenfassung des Modells:

[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
]
Nach dem Login kopieren

Die Zusammenfassung ist meist korrekt und kohärent. Es versteht jedoch fälschlicherweise den Teil über Chatgpt, der von einer aggressiven schnellen Komprimierung profitiert.

Bewertung der Eingabeaufforderungskomprimierung

Durch Vergleich der Token -Zahlen und des Inhalts der Zusammenfassungen des Modells in verschiedenen Komprimierungsstufen können wir die Auswirkungen der Eingabeaufforderung auf die Ausgabe des Modells sehen:

Komprimierungsebene

Token Count (Original ist 304 lang)

Genauigkeit

Token-Level

162

verloren wichtige Nuancen über Chatgpt, die nicht von aggressiver Komprimierung profitieren, und Fehler gemacht.

Satzebene

129

hat keine Fehler gemacht, sondern einen Kontext über Lag -Pipelines verpasst.

Phrase-Level

183

Ähnlich wie mit Token-Ebene erklärte fälschlicherweise, dass ChatGPT von einer aggressiven Komprimierung profitiert.

Insgesamt kann eine sofortige Komprimierung die Token -Anzahl erheblich verringern und gleichzeitig die Hauptideen erhalten. Es ist jedoch wichtig, ein Gleichgewicht zu treffen, um zu vermeiden, wichtige Nuancen und Kontext zu verlieren.

Diese Übung zeigt die Notwendigkeit, die Komprimierungsstufe basierend auf der spezifischen Anwendung und der Kritikalität der Aufrechterhaltung bestimmter Details in der Eingabeaufforderung sorgfältig auszuwählen.

Es ist erwähnenswert, dass wir alle Experimente mit einer Komprimierungsrate von 0,5 durchgeführt haben, was relativ hoch ist. Möglicherweise möchten Sie mit verschiedenen Komprimierungsraten für verschiedene Anwendungsfälle experimentieren, um das optimale Gleichgewicht zwischen der Reduzierung der sofortigen Größe und der Aufrechterhaltung der Integrität zu finden.

Schlussfolgerung

schnelle Komprimierung ist eine leistungsstarke Technik zur Optimierung der Effizienz und Kosteneffizienz von LLMs. Wir haben seine Grundlagen untersucht und ihre Bedeutung, verschiedene Techniken und Implementierungsdetails erörtert.

Wenn sich das Feld der generativen KI weiterentwickelt, ist es entscheidend, sich über die neuesten Entwicklungen auf dem Laufenden zu halten. Um Ihre Fähigkeiten und Ihr Verständnis der sofortigen Komprimierung und verwandten Techniken weiter zu verbessern, ermutige ich Sie, die in diesem Artikel verwiesenen Artikel sowie die folgenden umfassenden Blog -Beiträge und -kurse aus DataCamp zu untersuchen:

    Eingabeaufforderung für Engineering
  • verstehen
  • Umgehend einstellen
  • CHATGPT PROMPT ENGINEERING für Entwickler
Eingabeaufforderung Komprimierung Faqs

Was ist die Eingabeaufforderung Komprimierung und warum ist es wichtig? Es ist wichtig, weil es dazu beiträgt, innerhalb der Token-Grenzen zu bleiben, die Verarbeitungszeit und -kosten zu verkürzen. Darüber hinaus kann das Implementieren von maschinell-lernbasiertem und hybriden Ansätzen ressourcenintensiv und komplex sein.

Wie handhaben Sie die Eingabeaufforderung für die Komprimierung von Multi-Turn-Gesprächen in Chatbots? Techniken wie die selektive Kontextfilterung können helfen, indem sie kritische Teile der Konversation beibehalten und gleichzeitig weniger wichtige Informationen komprimieren. Dieser Ansatz hilft bei der Aufrechterhaltung der Kontinuität und Relevanz in den Antworten des Chatbot. Zu den Themen gehören das Verständnis der sofortigen Engineering, der schnellen Tuning und des Abrufs der Generation (RAG), die alle für die Beherrschung der sofortigen Komprimierung von entscheidender Bedeutung sind. Stellen Sie außerdem sicher, dass Sie die von Ihnen gelernten Techniken üben. Darüber hinaus können schnelle Komprimierungstechniken das Modell versehentlich Jailbreak, was es unvorhersehbar verhalten oder unangemessene Inhalte erzeugt. Es ist wichtig, die Auswirkungen einer sofortigen Komprimierung auf die Leistung und die Ausgaben des Modells zu überwachen, insbesondere in sensiblen Anwendungen wie Gesundheitswesen, Finanzen oder Rechtsberatung.

Das obige ist der detaillierte Inhalt vonSchnellkomprimierung: Eine Anleitung mit Python -Beispielen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage