Sign In
Free Sign Up
  • English
  • Español
  • 简体中文
  • Deutsch
  • 日本語
Sign In
Free Sign Up
  • English
  • Español
  • 简体中文
  • Deutsch
  • 日本語

Wie man ein LLM mit OpenAI feinabstimmt

Willkommen zurück zu unserer Serie über die Feinabstimmung von Sprachmodellen (LLMs)! In unserem vorherigen Beitrag haben wir die Feinabstimmung von LLMs mit Hugging Face (opens new window) erkundet. Heute richten wir unseren Fokus auf die OpenAI-Plattform. Während viele OpenAI hauptsächlich mit ChatGPT und dem API-Schlüsselzugriff zur Integration von KI-Funktionen in Verbindung bringen, gibt es noch eine weitere leistungsstarke Funktion: die Möglichkeit, Modelle an Ihre spezifischen Anforderungen anzupassen. Dieser Prozess ermöglicht es Ihnen, die umfangreiche Wissensbasis vortrainierter Modelle zu nutzen und gleichzeitig Kompatibilität und Optimierung mit Ihrem eigenen Datensatz sicherzustellen.

In diesem Blog zeigen wir Ihnen, wie Sie Ihr Modell mithilfe der OpenAI-API feinabstimmen können. Egal, ob Sie einen Chatbot verbessern, neue Arten von Geschichten erstellen oder ein System zur Beantwortung von Fragen einrichten möchten, dieser Beitrag zeigt Ihnen, wie Sie das Beste aus der Feinabstimmungsfunktion von OpenAI herausholen können.

# Voraussetzungen

Bevor wir beginnen, stellen Sie sicher, dass Sie die erforderlichen Pakete installiert haben. Sie benötigen das Paket datasets zum Umgang mit unseren Daten und openai zur Interaktion mit der OpenAI-API. Öffnen Sie Ihr Terminal und geben Sie den folgenden Befehl ein.

pip install datasets openai

Die datasets-Bibliothek ist ein vielseitiges Werkzeug zum Laden und Manipulieren von Datensätzen, das besonders für maschinelles Lernen geeignet ist.

Verwandter Artikel: Wie man ein Empfehlungsmodell erstellt (opens new window)

# Laden des Datensatzes

Wir beginnen damit, unseren Datensatz zu laden. Zu Demonstrationszwecken verwenden wir einen auf Hugging Face verfügbaren Datensatz. So können Sie ihn laden:

from datasets import load_dataset

# Laden Sie Ihren Datensatz von Hugging Face
dataset = load_dataset("lamini/lamini_docs")

In diesem Code-Snippet laden wir unseren Datensatz mit dem Namen "lamini/lamini_docs". Ersetzen Sie dies durch den Namen Ihres Datensatzes, falls er anders lautet.

# Erkunden des Datensatzes

Bevor Sie mit der Feinabstimmung fortfahren, ist es wichtig, Ihren Datensatz zu verstehen. Werfen wir einen Blick auf die Struktur unseres Datensatzes:

dataset

Dies gibt Ergebnisse wie diese aus:

DatasetDict({
    train: Dataset({
        features: ['question', 'answer', 'input_ids', 'attention_mask', 'labels'],
        num_rows: 1260
    })
    test: Dataset({
        features: ['question', 'answer', 'input_ids', 'attention_mask', 'labels'],
        num_rows: 140
    })
})

Der nächste Schritt besteht darin, die benötigten Daten aus diesem Datensatz zu extrahieren und für das Training vorzubereiten.

Verwandter Artikel: Erstellen einer Bildsuchanwendung (opens new window)

# Formatieren der Daten für die Feinabstimmung

Der Datensatz ist in Trainings- und Testaufteilungen unterteilt. Wir werden nur die Trainingsdaten verwenden. Extrahieren wir diese.

import pandas as pd
train_dataset = dataset['train']
train_df = pd.DataFrame(train_dataset)
questions_answers = train_df[['question', 'answer']]

In diesem Schritt extrahieren wir nur Fragen und Antworten aus dem DataFrame, da wir für die Feinabstimmung hauptsächlich diese beiden Elemente benötigen.

OpenAI erfordert die Daten in einem spezifischen JSONL-Format für die Feinabstimmung. Jede Zeile muss ein JSON-Objekt darstellen, das ein einzelnes Trainingsbeispiel repräsentiert. So formatieren Sie Ihre Daten:

with open('feinabstimmungsdaten_chat_format.jsonl', 'w') as jsonl_file:
    for index, example in questions_answers.iterrows():
        formatted_data = {
            "messages": [
                {"role": "system", "content": "Du bist ein hilfreicher Assistent"}, 
                {"role": "user", "content": example['question']},
                {"role": "assistant", "content": example['answer']}
            ]
        }
        jsonl_file.write(json.dumps(formatted_data) + '\\n')

Hinweis: Unser Ziel ist es, einen Chatbot zu erstellen und gpt-3.5-turbo für die Feinabstimmung zu verwenden, daher verwenden wir ein konversationelles Chat-Format. Sie können auf der Chat-Format (opens new window)-Seite von OpenAI andere Formate sehen.

# Hochladen Ihres Datensatzes zu OpenAI

Bevor Sie die Feinabstimmung durchführen können, müssen Sie Ihren formatierten Datensatz bei OpenAI hochladen:

from openai import OpenAI
from pathlib import Path

client = OpenAI(api_key="Ihr_API-Schlüssel")
response = client.files.create(
  file=Path('feinabstimmungsdaten_chat_format.jsonl'),
  purpose='feinabstimmung'
)

Hinweis: Speichern Sie Ihren API-Schlüssel sicher und geben Sie ihn niemals in freigegebenem oder öffentlichem Code preis. Der Parameter purpose='feinabstimmung' gibt an, dass die hochgeladene Datei für das Modelltraining bestimmt ist.

# Starten des Feinabstimmungsprozesses

Mit Ihren hochgeladenen Daten können Sie nun den Feinabstimmungsprozess starten:

fine_tune_response = client.fine_tuning.jobs.create(
  training_file=response.id,  # Verwenden Sie die ID der hochgeladenen Datei
  model="gpt-3.5-turbo"       # Geben Sie das Modell an, das Sie feinabstimmen möchten
)

print("Feinabstimmungsvorgang gestartet mit ID:", fine_tune_response.id)

Damit wird der Feinabstimmungsprozess auf dem ausgewählten Modell gestartet. Die Job-ID dient zur Verfolgung des Fortschritts Ihres Feinabstimmungsvorgangs.

Hinweis: Sie erhalten eine E-Mail mit dem Modellnamen, sobald das Training abgeschlossen ist. Diesen Modellnamen verwenden Sie im Testteil.

Boost Your AI App Efficiency now
Sign up for free to benefit from 150+ QPS with 5,000,000 vectors
Free Trial
Explore our product

# Überwachen des Fortschritts der Feinabstimmung

Sie können den Status Ihres Feinabstimmungsvorgangs wie folgt überwachen:

client.fine_tuning.jobs.retrieve("Ihre_Feinabstimmungs-Job-ID")

Ersetzen Sie "Ihre_Feinabstimmungs-Job-ID" durch die ID, die vom Job-Erstellungsschritt zurückgegeben wurde. Dieser Befehl liefert detaillierte Informationen zum Status und zur Leistung des Jobs.

# Testen des feinabgestimmten Modells

Nach der Feinabstimmung ist es an der Zeit, Ihr Modell zu testen. So können Sie Abschlüsse mit Ihrem feinabgestimmten Modell generieren:

completion = client.chat.completions.create(
  model="Ihr_feinabgestimmter_Modellname",
  messages=[
    {"role": "system", "content": "Du bist ein hilfreicher Assistent."},
    {"role": "user", "content": "Ihre Nachricht hier"}
  ],
  max_tokens=50
)
print(completion.choices[0].message.content)

Ersetzen Sie "Ihr_feinabgestimmter_Modellname" und "Ihr Prompt hier" durch Ihren Modellnamen und Ihren Test-Prompt.

Jetzt sollten Sie ein Modell haben, das optimal auf Ihre Bedürfnisse abgestimmt ist, aber das ist nur der Anfang mit OpenAI. Diese Plattform ermöglicht es Ihnen, noch fortschrittlichere und komplexe Modelle zu trainieren und so Ihre KI-Möglichkeiten zu erweitern.

Join Our Newsletter

# Vergleich der Feinabstimmung von LLMs mit Hugging Face und OpenAI

Nach dem umfassenden Überblick und der Arbeit mit beiden Techniken werfen wir einen Vergleich.

Faktor Hugging Face OpenAI
Benutzerfreundlichkeit Benutzerfreundliche Oberfläche. Umfassende Dokumentation, erfordert jedoch fundierte Kenntnisse im Bereich maschinelles Lernen. Einfach und erfordert etwas Vertrautheit mit maschinellem Lernen.
Verfügbarkeit von Modellen Breites Spektrum an vortrainierten Modellen (BERT, GPT, etc.). Konzentriert sich hauptsächlich auf GPT-Varianten mit hoher Optimierung. Bietet auch Jurassic-1 Jumbo (QA) und Codex (Code-Generierung) an.
Anpassungsmöglichkeiten Umfangreiche Anpassungsoptionen für die Feinabstimmung. Vereinfachter Anpassungsprozess, weniger granular als Hugging Face.
Datenschutz Starke Optionen: ermöglicht lokale oder private Cloud-Verarbeitung. Stark, hauptsächlich cloud-basiert. Möglicherweise nicht für alle Datenschutzanforderungen geeignet.
Leistung Variiert je nach Modell und Einstellungen, skalierbar mit geeigneter Hardware. Hohe Leistung, insbesondere bei Sprachverständnis und -generierung.
Skalierbarkeit Benutzerverwaltete Skalierbarkeit, abhängig von Hardware und Datensatzgröße. Von OpenAI verwaltet, weniger Benutzeranforderungen für die Infrastruktur.
Kosten Kostenlose und kostenpflichtige Stufen, kosteneffizient bei gutem Management (insbesondere bei lokaler Verarbeitung). Nutzungsabhängige Preisgestaltung, kann bei Skalierung teuer sein.
Community & Support Große, aktive Community mit Foren, Tutorials und gemeinsamen Projekten. Starke offizielle Kanäle und Dokumentation, weniger community-getrieben.
Zusätzliche Funktionen TRL-Bibliothek vereinfacht die Feinabstimmung (SFT, RLHF) Benutzerfreundliche API für die Integration in Anwendungen

Beide Feinabstimmungstechniken haben ihre Vor- und Nachteile, aber es hängt hauptsächlich von Ihrem Anwendungsfall ab. Wenn Sie Datenschutz wünschen und über technisches Wissen verfügen, können Sie Hugging Face wählen, ansonsten können Sie OpenAI verwenden.

# Fazit

Die Feinabstimmung von LLMs mit der OpenAI-API bietet Ihnen einen effizienten und leistungsstarken Ansatz zur Anpassung von Sprachmodellen an Ihre spezifischen Anforderungen. Durch Befolgen der in diesem Artikel beschriebenen Schritte können Sie Ihr Modell effizient feinabstimmen und sicherstellen, dass es maßgeschneiderte und hochwertige Ergebnisse liefert. Denken Sie daran, dass die Effektivität der Feinabstimmung stark von der Qualität und Relevanz Ihrer Trainingsdaten abhängt. Investieren Sie Zeit in die Kuratierung und Strukturierung Ihres Datensatzes, um die besten Ergebnisse aus Ihren Feinabstimmungsbemühungen zu erzielen.

Die Feinabstimmung eines Modells kann das Generieren von Einbettungen oder Vektoren für Eingabedaten umfassen. In einigen Fällen können diese Einbettungen in einer Vektordatenbank gespeichert werden, um eine effiziente Abfrage oder Ähnlichkeitssuche zu ermöglichen. Wenn Sie beispielsweise ein Sprachmodell für eine bestimmte Anwendung wie die Dokumentklassifizierung feinabstimmen, ist MyScale (opens new window), eine SQL-Vektordatenbank, für KI-Anwendungen konzipiert und bietet eine schnelle Abfrage- oder Ähnlichkeitssuchleistung. Es ist für Entwickler sehr zugänglich, da nur SQL für die Interaktion erforderlich ist.

Für Ihr Feedback oder Ihre Vorschläge können Sie uns im MyScale Discord (opens new window) kontaktieren.

Keep Reading
images
Optimierung der gefilterten Vektor-Suche in MyScale

Die Vektorsuche sucht in einem Datensatz nach ähnlichen Vektoren oder Datenpunkten basierend auf ihren Vektorrepräsentationen. Jedoch ist die reine Vektorsuche in realen Szenarien selten ausreichend. ...

Start building your Al projects with MyScale today

Free Trial
Contact Us