Heim > Technologie-Peripheriegeräte > KI > Erweiterte schnelle Technik: Denkkette (COT)

Erweiterte schnelle Technik: Denkkette (COT)

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Freigeben: 2025-02-26 03:17:10
Original
657 Leute haben es durchsucht

Die Argumentationsfähigkeit großer Sprachmodelle: Kettendenken und andere Technologien

Advanced Prompt Engineering: Chain of Thought (CoT) _Wenn Sie kein Mitglied sind, aber diesen Artikel lesen möchten, überprüfen Sie bitte diesen Freund. _

Chain Thinking (COT) gibt es schon seit einiger Zeit und ist technisch gesehen ein fortschrittlicher Tipptechnik, hat aber bis heute einige Jahre nach seiner ersten Einführung immer noch von Bedeutung. Alle Formen von COT sollen oft große Sprachmodelle zur Vernunft erzwingen.

Nachdem Openai im September dieses Jahres seine Vorschau -Version O1 O1 veröffentlicht hatte, haben wir festgestellt, dass die Popularität um COT zugenommen hat.

Niemand weiß genau, wie O1 funktioniert (außer OpenAI), ob es sich um ein kombinatorisches System handelt, welche Daten es für die Feinabstimmung verwendet, ob Verstärkungslernen verwendet werden oder ob mehrere Modelle zusammenarbeiten.

Vielleicht ist ein Modell für die Planung verantwortlich, das andere ist für das Denken verantwortlich und das dritte ist für die Bewertung verantwortlich. Aber wir wissen, dass sie einen Schritt-für-Schritt-Argumentationsansatz verfolgen.

Es wurden viele öffentliche Forschung zu diesem Thema durchgeführt, und Sie müssen sich möglicherweise damit befassen. In diesem Beitrag werde ich also die vorhandenen Methoden abdecken, damit Sie wissen, welche Methoden Sie anwenden können. Natürlich werde ich verschiedene Technologien testen, um zu sehen, ob wir echte Verbesserungen vornehmen können.

Wenn Sie dann technische Arbeit leisten möchten, werde ich Ihnen helfen, ein System zu erstellen, das das interne Konfidenzniveau des Modells untersucht, um Antworten zu generieren.

Forschungsergebnisse

In den letzten zwei Jahren wurden viele Papiere veröffentlicht und ich habe viele von ihnen gesammelt, die ich hier gefunden habe.

Sie werden die Argumentationstechniken sehen, die sie auf dem Bild unten diskutieren.

Der größte Teil der Arbeit stammt direkt von der DeepMind oder der Princeton University. Vielen Dank an sie, dass sie so viel Arbeit geöffnet haben.

Advanced Prompt Engineering: Chain of Thought (CoT) Das Wort COT stammt aus dem 2022 -Papier von DeepMind, wobei es nur in Eingabeaufforderungen verwendet wird. Das neueste Papier wird zweimal mit Monte -Carlo -Suche und COT ohne Aufforderungen überlegt.

In diesem Artikel werden wir einfaches Kettendenken (COT), COT-Ketten, gierige Dekodierung, COT-SC, Decoding COT und Twoes Thinking (Tot) mit Monte Carlo Tree-Suche vorstellen.

Wir werden auch unseren eigenen Datensatz verwenden, um die Verbesserungen zu verstehen, die wir bei der Verwendung dieser Inferenztechniken vornehmen können.

Basiswerte für große Sprachmodelle

Um zu verstehen, wie die Ergebnisse großer Sprachmodelle verbessert werden können, müssen wir zunächst eine Art Benchmark -Score festlegen.

Bei der Einführung eines Modells enthält es normalerweise Bewertungsmetriken. Es gibt einige beliebte Indikatoren wie MMLU (Sprachverständnis), Bigbench (Inferenz), Hellaswag (Argumentation des gesunden Menschenverstandes) und so weiter.

Advanced Prompt Engineering: Chain of Thought (CoT) Sie sollten jedoch wissen, dass einige dieser Datensätze veraltet sind und möglicherweise etwas kontaminiert sind.

Umarmung Face hat im Dezember ein neues LLM -Ranking gestartet, das anhand neuerer Datensätze bewertet wird, und Sie können deutlich erkennen, dass die meisten Modelle viel niedrigere Ergebnisse haben als der ursprüngliche Datensatz.

Es lohnt sich, hier einige Nachforschungen anzustellen, um zu verstehen, wie Sie die Modellbewertung berücksichtigen sollten und welche Gründe Sie und Ihr Unternehmen bewerten sollten. Ein interner privater Datensatz zum Testen ist möglicherweise nicht die schlimmste Idee.

Aber trotzdem habe ich ungefähr 350 Fragen aus verschiedenen Datensätzen und einige beliebte Fragen extrahiert, die ich online gefunden habe, um bis zu 11 verschiedene Modelle zu bewerten.

Ich muss auch verstehen, wie die Antworten, die diese Datensätze und Großsprachenmodelle generiert haben, aussehen.

Also habe ich mein eigenes Skript erstellt, um diese Fragen zu durchlaufen, und bewertete das große Sprachmodell mit 0 oder 1 jeder Frage.

Sie können mich einen Perfektionisten nennen. Sie können sehen, was ich unten gefunden habe.

Advanced Prompt Engineering: Chain of Thought (CoT) Was sagt uns das? Nun, nicht viel.

Ich habe Fragen von Big Bank, MMLU, Putnam und beliebten Fragen wie "Wie viele R in Erdbeeren gibt" verwendet, aber wir können nicht wissen, ob diese Probleme von ihnen verdorben wurden. Darüber hinaus ist dies ein ziemlich kleiner Datensatz.

Wir können jedoch deutlich erkennen, dass größere Modelle besser abschneiden.

Interessanterweise können wir diese Bewertungen verbessern, indem wir Methoden anwenden, die vor der Antwort den Modellgrund und „denken“.

Kettendenken (COT)

Kettendenken (COT) wurden von DeepMinds Gehirnteam in 2022 von "Kettendenken Tipps zur Erzielung von Inferenz in großen Sprachmodellen" vorgeschlagen.

Die Idee von COT gibt es schon seit einiger Zeit.

Dieses erste Papier ist jedoch eine Studie darüber, wie das Modell das Erzwingen von Problemen durch die Aktivierung der inhärenten Argumentationsfähigkeit des Modells durch Verwendung von Cue -Strategien erzwingen kann.

Zu diesem Zeitpunkt forderten die Menschen nur die richtige Art und Weise auf, indem sie das Modell aufforderten, "gründlich zu denken", was durch Null -Probe (keine Beispiele bereitgestellt) oder nur wenige Beispiele (einige Beispiele) erreicht werden konnte.

Heute können Sie dies für verschiedene Modelle wie Claude, Chatgpt oder andere Modelle tun, indem Sie einfach "Schritt für Schritt" am Ende der Eingabeaufforderung hinzufügen. Wenn Sie weniger Beispiellern ausprobieren möchten, können Sie einige Beispiele in den Eingabeaufforderungen angeben. Advanced Prompt Engineering: Chain of Thought (CoT)

DeepMind berichtet, dass sie überprüfen können, ob die Eingabeaufforderungen erhebliche Verbesserungen bei der Verwendung von COT -Technologie verbessert werden.

Seitdem wurden viele Papiere auf diesen Technologien aufgebaut, die sich auf zunehmend fortgeschrittene Pfade erstrecken.

Erstellen Sie die Argumentationskette

Tipp viele Menschen in der technischen Gemeinschaft verwenden Technologie im Cot-Stil, um zu experimentieren. Ich habe die meisten Repositories gesammelt, die ich hier gefunden habe, daher ist es leicht zu finden.

Advanced Prompt Engineering: Chain of Thought (CoT) Vor nicht allzu langer Zeit hob Benjamin Klieger etwas hervor, dass er eine Anwendung im schnellen Stil erstellt hat, bei der CRQ und Lama 3.1 70b verwendet werden, um das Kettendenken zu induzieren, indem er den Denkprozess weiter abschließt.

Sie können seine App hier finden.

Die Idee ist, ein großes Sprachmodell zu bitten, sein Denken in Ketten zu zerlegen, und es wird weiterhin denken, bis es voller Vertrauen in die Antwort ist.

Das System generiert dann weiterhin ein großes Sprachmodell für jeden Teil der Kette, anstatt den gesamten Denkprozess in einer Antwort zu haben.

Sehen Sie, dass das Beispiel auf GROK-Beta angewendet wird Das Modell selbst richtet jeden Abschnitt ein, benennt ihn und entscheidet, ob eine andere "Idee" benötigt wird und fortgesetzt werden sollte oder ob es die endgültige Antwort erreicht hat.

Dies ist immer noch eine Technik im COT-Stil, da es lineare Beziehungen hat, aber etwas fortgeschrittener ist, als das Modell einfach zu bitten, "Schritt für Schritt zu denken". Advanced Prompt Engineering: Chain of Thought (CoT)

Ich habe einen Teil seines Code verwendet, um ein Skript zu erstellen, das einige Benchmark -Probleme großer Sprachmodelle durchschlägt, um zu sehen, wie viel Verbesserungen dieses Systems tatsächlich erzeugt. Ich habe auch Claude und Groks Skripte optimiert, um diese Strategie zu bewerten.

Sie werden die prozentuale Verbesserung unten sehen.

Lama 3.1 70b erzielte die beste Verbesserung in den ersten drei Kategorien. Grok geht es bei der Pandemie schlechter (wie Haiku).

Putnam-Datensatz ist erweiterte Mathematik, und nur wenige große Sprachmodelle können diesbezüglich gut abschneiden. Wenn Claude Sonnet 3.5 O1-Vorsicht (O1-Voransicht) bei 68,75% in diesen Cot-Ketten übertreffen konnte, war ich überrascht, als es es sich war 63%). Advanced Prompt Engineering: Chain of Thought (CoT) Insgesamt verbesserte die Verwendung von COT durch Sonett bei fortgeschrittener Mathematik 81%.

Denken Sie daran, ich benutze hier einen sehr kleinen Datensatz, nur zu verstehen, was sie gut machen und ob wir die Punktzahl verbessern können. Es sagt uns nichts Bestimmtes, ohne auf einem größeren Datensatz zu testen.

Ich habe jedoch auch festgestellt, dass wenn kleinere Modelle einfache Probleme überanalysieren, dies möglicherweise schlechtere Ergebnisse erzielt. Dies zeigt sich in der beliebten „einfacheren“ Ausgabe von Grok-Beta und Haiku.

einfachere nichtmathematische Probleme erhalten möglicherweise nicht die gleichen Vorteile wie COT.

Wir müssen uns auch daran erinnern, dass wir Modelle dazu bringen können, innerhalb ihrer Fähigkeiten zu arbeiten, aber ihre Fähigkeiten selten übertreffen. Wenn es die Antwort nicht kennt, weiß es nicht.

Feinabstimmung für Argumentation

Ich möchte die Feinabstimmung erwähnen, bevor ich fortfahren.

Ein sehr interessanter Bereich besteht darin, kleinere Modelle im COT-Datensatz zu fäuigen, um ihre Genauigkeit zu verbessern, sodass sie die Genauigkeit der Modelle 1-2-mal größer erreichen.

Ich habe mehrere Ressourcen gefunden, aber leider habe ich keine signifikanten Verbesserungen des Benchmark -Modells gefunden, das meiner Meinung nach eine ordnungsgemäße Analyse wert ist.

Sie sehen das Open -Source -Modell, das ich unten gefunden habe.

Advanced Prompt Engineering: Chain of Thought (CoT) Sie sehen den Open Source -Cot -Datensatz, den ich unten gefunden habe.

Advanced Prompt Engineering: Chain of Thought (CoT) Dies bedeutet nicht, dass die Feinabstimmung für COT nicht funktioniert. Es erfordert nur ein besseres, gut dokumentiertes Modell.

Wenn Sie sich selbst versuchen, sich selbst zu überlegen, lesen Sie diese Ressourcen. Ich glaube, es gibt mehr Ressourcen.

Technologie der Alternative Generation

Bisher haben wir die lineare Technik von Modellen untersucht, die Ausgaben in einem Faden (oder Ketten) erzeugen.

, aber kurz nach der Veröffentlichung des ersten COT-Papiers schlug DeepMind eine fortschrittlichere Technik vor, die als selbstkonsistentes Kettendenken (COT-SC) bezeichnet wird.

Diese Technik erstellt mehrere Inferenzwege und verwendet eine Methode, um am Ende die konsistenteste Antwort (oder Pfad) auszuwählen.

Advanced Prompt Engineering: Chain of Thought (CoT) berichten, dass die Verwendung dieser Methode eine Verbesserung der arithmetischen Argumentation von ungefähr 1 bis 8% erzielt hat.

Eine in diesem Jahr vorgeschlagene Methode folgt der gleichen Idee, mehrere Pfade zu verwenden, verwendet jedoch keine Hinweise.

Erinnern Sie sich an die Idee der gierigen Dekodierung, die ich im vorherigen Abschnitt besprochen habe?

Dieser Ansatz ist ähnlich, außer dass er nicht nur den wahrscheinlichsten Marker erzwingt, sondern auch die Vertrauenswerte der gesamten Antwort untersucht.

Advanced Prompt Engineering: Chain of Thought (CoT), um dies zu tun, startet das System zuerst eine bestimmte Anzahl von K-Markierungen der obersten Ebene und erzeugt dann einen Pfad aus jedem Marker. Nachdem die Antwort generiert wurde, berechnet sie den Konfidenzwert durch Analyse der Wahrscheinlichkeit (Logit) jedes Markers auf verschiedenen Pfaden.

Gibt die Antwort (oder Pfad) mit höchster Wahrscheinlichkeit zurück.

Diese Methode wird als Decoding COT bezeichnet und wird von DeepMind vorgeschlagen. Die Idee dieses Ansatzes ist es, das interne Vertrauen des Modells in die Rückkehr zu beobachten.

Aber was passiert, wenn es nicht das inhärente Wissen gibt, um die Frage zu beantworten? Wie COT-SC hängt dieser Ansatz weitgehend davon ab, ob das Modell überhaupt die richtige Antwort hat.

Dies bedeutet jedoch nicht, dass wir es nicht testen sollten.

Für all diese Technologien gibt es in Open Source unterschiedliche praktische Implementierungen, und dieser ist keine Ausnahme.

Es fällt mir also einfach, ein System zu erstellen, um diese Methoden zu testen und das kleinere Open -Source -Modell LLAMA 3 8B zu verwenden, um zu vergleichen, welche besser ist.

Advanced Prompt Engineering: Chain of Thought (CoT) Dank der Codelion für Open Source seine Implementierung, was es mir leicht macht, sie zu replizieren.

Ansehen Sie die obigen Ergebnisse.

Wir erstellen eine API im technischen Abschnitt, die dieses dekodierende COT -System verwendet, damit Sie verstehen, wie es funktioniert.

aktualisierte Technologie

Es ist schwer, Schritt zu halten, aber die Forschung ist weit über das Einsatz von einfachem COT für die Argumentation in Bereichen mit höherem Risiko hinaus gegangen.

Ich werde momentan nicht alle diese Strategien behandeln, denn das ist ein weiteres Thema, aber ich möchte das Denken zweimal (TOT) erwähnen, insbesondere wenn ich in Verbindung mit der Monte -Carlo -Suche verwendet habe.

TOT wurde Ende 2023 von der Princeton University und DeepMind vorgeschlagen, basiert jedoch normalerweise auf früheren auf Baumbasierten Inferenzmethoden.

Überlegen Sie zweimal, bevor es (TOT) etwas anders ist als selbstkonsistentes Kettendenken (COT-SC). Anstatt mehrere Wege zu generieren und sie nach ihrer Erstellung zu bewerten, bewertet es die Ideen, die Tot im Verlauf hervorgeht, dynamisch.

Advanced Prompt Engineering: Chain of Thought (CoT) Betrachten Sie es als 4 verschiedene Personen, die zusammenarbeiten, um das Problem zu lösen. In jedem Schritt präsentieren sie ihre Ideen und bewerten gemeinsam, welche Ideen am vielversprechendsten sind. Wenn die Argumentation fehlerhaft zu sein scheint, gehen sie, so dass andere weiterhin an ihren Problemen arbeiten.

Schließlich können Menschen, die korrekt argumentieren können, ihre Antworten geben.

Dies ermöglicht es dem Modell, dynamisch Pfade zu schließen, die schlecht aussehen, und sich auf vielversprechendere Fäden konzentrieren und möglicherweise Ressourcen sparen.

kann jedoch fragen, wie das System entscheidet, welcher Thread richtig ist und welcher Thread falsch ist? Dies wird durch das Modell selbst bestimmt.

Aus diesem Grund bieten Erweiterungen wie Monte Carlo Tree Search (MCTs) einen unvoreingenommeneren Bewertungsmechanismus. MCTs ermöglichen eine Backpropagation, was bedeutet, dass sie frühzeitig die frühen Schritte auf der Grundlage neuer Informationen überdenken und verbessern kann, während ein einfacher TOT nur voranschreitet.

Für 4 Personen mit Problemlösungsfällen können MCTs Menschen weniger als ideale Ideen haben und können noch länger im Spiel bleiben. Die Bewertungsmethode wird unterschiedlich sein.

MCTs können mehrere zukünftige Pfade simulieren, ihr Potenzial bewerten und einen Backtrack zur Verbesserung der frühen Entscheidungen verbessern. Es führt externe Metriken (Belohnungen) ein, anstatt sich vollständig auf das Modell zu verlassen.

Statistiken wie UCB (obere Konfidenzgrenze) verwenden diese Belohnungen, um zu entscheiden, welche Ideen weiter oder erneut besucht werden sollen.

mcts ist etwas komplizierter als ein einfacher Tot und kann separat geschrieben werden.

Die Wirtschaft von Cot

Also, bisher denken Sie vielleicht, wir haben einige Verbesserungen, warum nicht immer eine fortgeschrittenere Form des Kettendenkens verwenden?

Ok, zuallererst die Kosten (und Zeit zum Nachdenken).

Für die Ketten, die ich auf verschiedene Modelle angewendet habe, berechnete ich die durchschnittliche Anzahl von Inferenzschritten.

Advanced Prompt Engineering: Chain of Thought (CoT) Wenn Sie sich das ansehen, zahlen Sie durchschnittlich 8 -mal mehr pro Frage. Für Sonnet, das bei fortgeschrittenen mathematischen Problemen am besten funktioniert, zahlen Sie bis zu 15 US -Dollar pro 500 Fragen.

Dies scheint nicht viel zu sein, aber sobald Sie dieses System verwendet haben, um Antworten für Ihren Kundenservice oder Ihr Team jeden Tag zu generieren, geben Sie pro Monat Hunderte oder sogar Tausende von Dollar aus.

In einigen Fällen ist es sinnvoll, erweiterte Argumentationsmethoden zu verwenden, aber nicht immer.

Es kann jetzt einen Fall geben, in dem die Feinabstimmung für COT durchgeführt wird und im Wesentlichen die Notwendigkeit beseitigt, mehrere Anrufe zu generieren, aber ich habe bisher keine gut gemachten Open-Source-Modelle gesehen.

Hier gibt es einige Kompromisse. Wir möchten die Denkzeit erhöhen, damit das Modell genügend Zeit hat, um effektiv zu argumentieren, aber dies erhöht auch die Frustration und die Kosten von Benutzern.

Erstellen Sie ein intelligentes System

Im September dieses Jahres wurde ein Papier mit dem Titel "Cot oder nicht zu Cot?"

wir sehen dies auch hier mit begrenzten Verbesserungen an einfachen Fragen.

Wenn wir diese Ketten anwenden, müssen wir länger warten, um eine Antwort zu erhalten. Lohnt es sich? Es ist jedoch zu beachten, dass all diese Strategien für einfache Aufgaben zu komplex sein können.

Aus diesem Grund können Sie sich in den meisten Fragen frustriert fühlen, wenn Sie Openai O1 verwenden, und einfache Antworten sind normalerweise gut genug.

, aber wenn Sie ein System bauen, das sicherstellen muss, dass die Antwort korrekt ist, ist es möglicherweise eine gute Idee, irgendeine Form von Kinderbett oder Decodierung anzunehmen.

Es kann sich lohnt, ein Modell zu verwenden, um den ersten Schritt basierend auf der Schwierigkeit der Frage festzulegen, und dann zu analysieren, ob es zuversichtlich ist, dass es zuerst beantworten kann. Lassen Sie das Modell dann (durch die Kette) abschließen und lassen Sie am Ende ein anderes Modell die Antwort bewerten.

Hinweis

Gibt es weitere Frameworks als das, was ich hier vorgestellt habe? Absolut, aber ich stelle nur diejenigen vor, die ich für interessant halte. Dies gibt Ihnen eine Vorstellung davon, wie viel Fortschritte wir ohne Informationsüberladung erzielt haben.

Die meisten KI -Ingenieure sind in diesen Rahmenbedingungen gut vertraut, aber leider hat sich die Studie nicht so schnell wie erwartet für die Öffentlichkeit ausbreitet.

Lernen, wie man COT implementiert, sollte Teil der Grundlagen des Bauens von LLM -Anwendungen sein, auch wenn Sie sich entscheiden, sie nicht zu verwenden.

technische Arbeit

Lassen Sie es uns in die Praxis umsetzen.

Wir werden das Dekodierungs -COT -System mithilfe des Open Source Model Lama 3.1 8b implementieren.

Die Methode zur Dekodierung des Cots von Cot stammt aus dem in diesem Jahr veröffentlichten Papier "Kettendenken ohne Tipps", und die Implementierung wurde aus dem Codelion erhalten, das hier gefunden wurde. Ich habe einige Funktionen hinzugefügt, damit das System den Schwierigkeitsgrad überprüft, um die Anzahl der Pfade (k) zu bestimmen.

Da ich das letzte Mal Modal verwendet habe, können wir diesmal Beam verwenden, was auch eine serverlose LLM -Serviceplattform ist. Sie bieten eine 15-stündige kostenlose Stufe, also ist es kostenlos. Das Skript, das wir verwenden, finden Sie hier.

Wenn Sie Colab bevorzugen, können Sie dieses Skript hier ausführen.

Das Ergebnis sollte ein API -Endpunkt sein, der es uns ermöglicht, eine Frage zu stellen, die die Schwierigkeit bewertet und dann ein Dekodierungsbett für die Frage ausführt und die folgende Antwort zurückgibt.

Advanced Prompt Engineering: Chain of Thought (CoT) Sie sehen die Anzahl der Anfragen für große Sprachmodelle und wie das System das Problem klassifiziert. Sie werden auch feststellen, dass das System ziemlich langsam ist, da es mehrere Antworten zur Bewertung generiert.

Wenn wir jedoch mit demselben 8B -Modell versuchen, werden wir feststellen, dass die Frage nicht richtig beantwortet.

Advanced Prompt Engineering: Chain of Thought (CoT) Die richtige Antwort beträgt 27,3, und für zusätzlichen Kraftstoff können zusätzliche Punkte erhalten werden.

In Bezug auf die endgültige Antwort werde ich feststellen, dass ein so kleineres Modell uns nur so weit bringen kann. Leider erfordert die Verwendung eines größeren Modells mehr Arbeit, da wir es irgendwo aufbewahren müssen, was teuer sein kann.

Um dieses System einzurichten, werde ich 5 Minuten Zeit in Anspruch nehmen. Sie können die folgenden Anweisungen befolgen.

umarmtes Gesicht

Wir werden zuerst Zugriff auf das Modell erhalten, das wir verwenden werden. Um das LAMA 3 8B -Modell zu verwenden, müssen Sie durch Umarmung Zugang dazu erhalten.

Wenn Sie bereits ein umarmendes Gesichtskonto haben, ist dieser Vorgang normalerweise sehr schnell. Wenn Sie kein Konto haben, können Sie ein Konto kostenlos erstellen und zur Modellkarte navigieren.

Advanced Prompt Engineering: Chain of Thought (CoT) Sobald wir die Modellkarte eingegeben haben, können wir das Modell genauso gut testen und sehen, mit welcher Frage wir dieses neue System testen können.

Advanced Prompt Engineering: Chain of Thought (CoT) Dies ist eine ziemlich Standardfrage. Ich habe sie bereits in meiner Bewertung verwendet, aber das Standard -Lama 3 8b -Modell ist schwer zu handhaben.

Navigieren Sie nach dem Zugriff zu Einstellungen, um das Zugangs -Token zu erhalten.

Advanced Prompt Engineering: Chain of Thought (CoT) Speichern Sie dieses Token irgendwo, weil wir es in Strahl einstellen müssen.

strahl.cloud

Wenn Sie kein Strahlkonto haben, müssen Sie ein Konto erstellen (es sei denn, Sie verwenden Colab direkt). Natürlich können Sie auch Ihr eigenes System auf verschiedenen Plattformen erstellen.

Wenn Sie sich für die Verwendung von Balken entscheiden, holen Sie sich die API -Taste von seinem Dashboard.

Advanced Prompt Engineering: Chain of Thought (CoT) ### Einrichten der Umgebung

Jetzt können wir anfangen. Öffnen Sie ein neues Terminal und erstellen Sie ein neues Verzeichnis und eine CD für dieses Verzeichnis.

<code>mkdir my-testing-dir
cd my-testing-dir</code>
Nach dem Login kopieren
Nach dem Login kopieren

klonen Sie das von mir eingerichtete Repository.

<code>git clone https://github.com/ilsilfverskiold/decoding-cot-beam.git </code>
Nach dem Login kopieren
Nach dem Login kopieren

Erstellen Sie eine virtuelle Umgebung (Sie müssen dafür Python installieren).

<code>python3 -m venv .venv && source .venv/bin/activate</code>
Nach dem Login kopieren

Installe den Strahl und authentifizieren.

<code>pip install beam-client
beam configure default --token "your_token_here"</code>
Nach dem Login kopieren

Stellen Sie sicher, dass Sie das HF_TOOKE einrichten, das wir zuvor vom Umarmungsgesicht erhalten haben.

<code>beam secret create HF_TOKEN</code>
Nach dem Login kopieren

Sie können Dienste direkt von hier aus erstellen, aber lasst uns kurz den Code vorstellen.

Wenn Sie nicht interessiert sind, können Sie den nächsten Abschnitt überspringen.

Code

Es gibt drei Python -Dateien im Stammordner.

<code>│
├── app.py
├── question_classifier.py
└── cot_decoder.py </code>
Nach dem Login kopieren

In app.py haben wir Code von Beam, mit dem wir das Gewicht des Modells vom Umarmungsgesicht (beim Start) herunterladen und es durch die Lautstärke zwischenspeichern können. Dies bedeutet, dass wir beim ersten Mal ungeschickt und langsam sein können.

Strahl ermöglicht es uns auch, Pakete zu laden, wenn das Skript aus der Ferne auf Strahl ausgeführt wird.

Folgendes ist der Beginn von App.py mit meinem Kommentar:

<code>[...]
# 这确保了这些包仅在脚本在 Beam 上远程运行时加载
if env.is_remote():
    import torch
    from transformers import AutoModelForCausalLM, AutoTokenizer
    from cot_decoder import cot_decode
    from question_classifier import get_k_value

# 模型参数和在卷中缓存的位置
MODEL_NAME = "meta-llama/Meta-Llama-3-8B-Instruct"
CACHE_PATH = "./cached_models2"

# 加载模型和标记器
def load_models():
    tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME, cache_dir=CACHE_PATH)
    tokenizer.pad_token = tokenizer.eos_token
    model = AutoModelForCausalLM.from_pretrained(
        MODEL_NAME, device_map="auto", torch_dtype=torch.float16, cache_dir=CACHE_PATH
    )
    return model, tokenizer

# 定义端点
# 您可以指定 CPU/内存/GPU + 图像
@endpoint(
    secrets=["HF_TOKEN"],
    on_start=load_models, # 启动时加载模型以进行缓存
    name="meta-llama-3-8b-instruct",
    cpu=2,
    memory="32Gi",
    gpu="A100-40",
    image=Image(
        python_version="python3.9",
        python_packages=["torch", "transformers", "accelerate"],
    ),
    volumes=[Volume(name="cached_models2", mount_path=CACHE_PATH)],
)
[...]</code>
Nach dem Login kopieren

Wir definieren einen @endpoint mit den Ressourcen, die wir verwenden möchten (A100 GPU und 2 CPU -Kerne). Sie werden auch sehen, dass wir das Modell beim Start laden.

Nach dem Empfangen des API -Aufrufs werden wir die Funktion generate_text () ausführen.

<code>[...]

def generate_text(context: Dict[str, Any], **inputs: Dict[str, Any]) -> Dict[str, Any]:
    # 从 on_start 检索模型和标记器
    model, tokenizer = context.on_start_value

    # 根据问题的复杂性获取自适应 k 值
    classification_type = None
    if k is None:
        k, classification_type = get_k_value(messages, context)

    try:
        output_text, confidence, llm_calls = cot_decode(
            model=model,
            tokenizer=tokenizer,
            messages=messages,
            k=k,  # 使用自适应 k 值
            **inputs  # 将任何其他参数直接传递给 cot_decode
        )

        # 返回输出
        return {
            "output": output_text,
            "confidence": confidence,
            "complexity_info": {
                "k": k,
                "total_calls": llm_calls + 1,  # + 分类调用
                "classification": classification_type
            }
        }
    except Exception as e:
        return {"error": f"Error during generation: {str(e)}"}</code>
Nach dem Login kopieren

Wir haben eine Funktion, die zuerst get_k_value () verwendet, um K auf der Grundlage der Komplexität zu berechnen. Die Schlüsselfunktion hier ist jedoch cot_decode (), die die Dekodierungskette über unser Problem überlegt.

Diese Funktion empfängt Nachrichten, Modelle und Tokenizer und tätigt den ersten ersten Anruf, um k mögliche nächste Tags mithilfe des höchsten Logits vorherzusagen.

logit ist die ursprüngliche Punktzahl, die das Modell für jeden möglichen nächsten Marker zugewiesen hat, sodass wir die Konfidenz -Bewertung des Modells für jede Option wissen können.

Diese dienen als potenzielle Ausgangspunkte für die Generierung mehrerer Antworten. Für jeden dieser Ausgangspunkte oder Startmarken generieren wir eine vollständige Antwort und bewerten sie dann als Ganzes.

Erinnern Sie sich an das gierige Decodieren, das wir besprochen haben? Wenn die Wahrscheinlichkeit des nächsten Tags hoch ist, erzeugen wir es nur? Dies untersucht den gesamten Satz durch Berechnung von Vertrauenswerten, die den Grad widerspiegeln, in dem das Modell die vollständige Antwort bestimmt, anstatt sie einzeln zu markieren.

Nachdem der Pfad mit dem höchsten Konfidenzwert erhalten wurde, wird er mit dem K -Wert zurückgegeben.

Es gibt einige andere Optionen, z. B. das Hinzufügen von Aggregate_answers bool, wenn das Modell mehrere Antworten auf hohe Vertrauen zurückgibt, aber wir verwenden es hier nicht.

lass es uns ausführen

Jetzt, da ich den Code kurz erklärt habe, werden wir ihn ausführen, um zu sehen, wie er funktioniert.

Wenn Sie alles richtig eingerichtet haben, sollten Sie in der Lage sein, einfach Serve anzurufen.

<code>beam serve app.py:generate_text</code>
Nach dem Login kopieren

Wenn zeitlich abgerechnet wird, rennen Sie erneut und dienen Sie das Modell für Sie.

Um zu sehen, wo das Modell gespeichert ist, können Sie zur Volumen in der Plattform Strahl.cloud gehen.

Sobald es ausgeführt wird, werden Sie Folgendes sehen.

Advanced Prompt Engineering: Chain of Thought (CoT) Dies bedeutet, dass es zum Testen bereit ist.

Sie können Postman starten oder Curl verwenden (was bedeutet, dass Sie in einem Terminalfenster einen Aufruf zum Endpunkt ausführen)

<code>mkdir my-testing-dir
cd my-testing-dir</code>
Nach dem Login kopieren
Nach dem Login kopieren

Die Antwort sollte den folgenden ähnlich sein.

Advanced Prompt Engineering: Chain of Thought (CoT) Wie Sie sehen können, funktioniert es etwas besser.

Wenn Sie das Modell bereitstellen möchten, können Sie einfach die Bereitstellung ausführen.

<code>git clone https://github.com/ilsilfverskiold/decoding-cot-beam.git </code>
Nach dem Login kopieren
Nach dem Login kopieren

Ich habe es gerade verwendet, um es zu testen, damit ich es jetzt ausschalten kann.

Ich hoffe, dieser Artikel ist lehrreich und interessant, und Sie werden etwas gewinnen.

Wenn Sie Ergebnisse für Großsprachenmodelle und COT -Technologien anzeigen möchten, können Sie diese Tabelle und alle anderen Ressourcen anzeigen, die Sie in diesem Repository finden.

Wenn es Ihnen hilft, hinterlassen Sie bitte einen Kommentar und begrüßen Sie mich.

Das obige ist der detaillierte Inhalt vonErweiterte schnelle Technik: Denkkette (COT). 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage