In der dynamischen Welt der künstlichen Intelligenz werden ständig neue Durchbrüche erzielt, die den Weg für intelligentere und anpassungsfähigere Modelle ebnen. Der jüngste Meilenstein auf diesem Weg ist die mit Spannung erwartete Fähigkeit zur Feinabstimmung von gpt-3.5-turbo! OpenAIs GPT-3.5 Turbo hat uns bereits mit seiner Fähigkeit, Kontext zu verstehen, menschenähnlichen Text zu generieren und bei verschiedenen Aufgaben zu helfen, verblüfft. Jetzt, mit dem zusätzlichen Potenzial der Feinabstimmung, ist seine Effizienz noch größer. Aber das ist noch nicht alles - in Kürze werden wir Zugang zur Feinabstimmung für GPT-4 erhalten, was eine neue Ära der KI-Fähigkeiten einläuten wird!
Konzentrieren wir uns zunächst auf die Tuning-Fähigkeiten von GPT 3.5 und lernen Sie diese einfachen Schritte, um diese Fähigkeiten in Ihrer Arbeit zu nutzen.
Um mit der Feinabstimmung zu beginnen, müssen Sie einen Datensatz im JSONL-Format vorbereiten. Ihr Feinabstimmungsdatensatz sollte mindestens 10 Beispiele enthalten, während optimale Verbesserungen in der Regel bei Sätzen von 50 bis 100 Beispielen erzielt werden. Hier ist ein Beispiel:
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What's the capital of France?"}, {"role": "assistant", "content": "Paris, as if everyone doesn't know that already."}]}
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "Who wrote 'Romeo and Juliet'?"}, {"role": "assistant", "content": "Oh, just some guy named William Shakespeare. Ever heard of him?"}]}
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "How far is the Moon from Earth?"}, {"role": "assistant", "content": "Around 384,400 kilometers. Give or take a few, like that really matters."}]}
Jede Zeile Ihrer JSONL-Datei enthält ein Objekt mit dem Schlüssel „messages“, das ein Array mit drei Meldungen enthält:
Sie können Ihre Daten auf verschiedene Arten in einem bestimmten Format verarbeiten. Zum Beispiel können Sie ein einfaches Python-Skript oder das ChatGPT Code Interpreter Plugin verwenden, um die gewünschte Ausgabe zu erhalten.
Sobald Ihr Feinabstimmungsdatensatz fertig ist, besteht der nächste Schritt darin, ihn zu OpenAI hochzuladen. Am einfachsten geht das mit einem Python-Skript, das eine OpenAI-Bibliothek verwendet.
Um die Anfrage zu senden, verwenden wir openai.File.create. Vergessen Sie nicht, Ihre Antwort oder zumindest die Datei-ID zu speichern, da diese für den nächsten Schritt benötigt wird.
Der letzte Schritt Ihrer Reise besteht darin, einen Feinabstimmungsauftrag über die OpenAI-API zu initiieren, wiederum mit Hilfe eines kurzen Python-Skripts.
Denken Sie daran, „api_key“ und „file_id“ durch Ihren tatsächlichen API-Schlüssel und Ihre Datei-ID zu ersetzen. Sie erhalten eine E-Mail-Benachrichtigung, sobald der Trainingsauftrag eingerichtet ist. Normalerweise dauert das Training für einen kleinen Datensatz etwa 10 Minuten. Danach erhalten Sie eine weitere E-Mail mit der Bestätigung, dass das Feintuning abgeschlossen ist und mit den Details Ihres neu angepassten Modells.
In einem praktischen Testfall mit technischen Begriffen haben wir 10 Beispiele vorbereitet. Wir haben das Modell angewiesen, diese Begriffe zusammen mit ihren Definitionen in einem bestimmten JSON-Format bereitzustellen. Unser Trainingsset umfasste insgesamt ~106k Token, was Trainingskosten von ca. $1 verursachte.
Wir erstellten eine erste Eingabeaufforderung mit einer Systemrolle für die Anpassung, einer TypeScript-Schnittstelle für die gewünschte Ausgabe und klaren Anweisungen. Nach dem Training wurde die Eingabeaufforderung prägnanter und ließ die Systemnachricht und unnötige Details sowie TS-Schnittstellenspezifikationen weg.
Hier ist eines der Ergebnisse der Testfälle, das einen Vergleich zwischen der oberen Struktur eines vollständigen Prompts vor dem Feintuning und der unteren Struktur nach dem Feintuning zeigt.
Ziel unseres Tests war es, die Länge komplexer Prompts zu reduzieren, ihre Gesamtstruktur zu vereinfachen und vor allem eine bestimmte JSON-Ausgabestruktur zu erreichen, ohne diese in jedem Prompt angeben zu müssen. Außerdem wollten wir einen kohärenten Kontext schaffen, indem wir die Antworten des Modells durch bestimmte Rollen oder Interpretationen leiten.
Wie das Ergebnis zeigt, kann die Feinabstimmung des Falles je nach subjektiver Nutzung des Modells bereits nach 10 Beispielen zu den erwarteten Ergebnissen führen, wenn die gleiche Struktur wie in den Trainingsbeispielen abgefragt wird.
Während der durchgeführten Tests passte sich unser fein abgestimmtes Modell weitgehend an, um das gewünschte Ausgabeformat über eine begrenzte Anzahl von Tests zu erzeugen, wodurch die Größe und Komplexität der Eingabeaufforderung effektiv reduziert wurde.
Für die Kostenanalyse verweisen wir auf openai.com/pricing:
Die Trainingskosten in Stunden hängen vom Datensatz ab und liegen im Durchschnitt bei 1 bis 1,5 Token pro Wort. In der Praxis sind sowohl die Eingabe- als auch die Ausgabetoken mit dem fein abgestimmten Modell 8-mal teurer. Der Aspekt der Kosteneffizienz der Feinabstimmung ist sehr subjektiv und hängt von Ihrem spezifischen Anwendungsszenario ab.
Die Feinabstimmung eröffnet Entwicklern eine Reihe von Möglichkeiten:
In der aufregenden Welt der KI-Entwicklung markiert die Einführung der GPT 3.5 Turbo Tuning Funktion von OpenAI einen entscheidenden Moment. Wenn Sie in eine neue Ära der Möglichkeiten der künstlichen Intelligenz eintreten möchten, lade ich Sie ein, mit uns hier bei BCF Software zusammenzuarbeiten und das große Potenzial zu entdecken.
Ob Sie Entwickler, Forscher oder Enthusiast sind, lassen Sie uns zusammenarbeiten, um Innovationen in diesem sich ständig weiterentwickelnden Bereich zu entwickeln. Wir sind zuversichtlich, dass wir gemeinsam bemerkenswerte Fortschritte in der Entwicklung und Anwendung von künstlicher Intelligenz erzielen können.