Reinforcement Learning aus menschlichem Feedback (RLHF) verwendet Feedback von Menschen, um ein Modell zu optimieren. RLHF wird empfohlen, wenn die Ausgabe Ihres Modells komplex und schwer zu beschreiben ist. Das menschliche Feedback wird zwischen verschiedenen Ausgabeoptionen ausgewählt. Diese Auswahlmöglichkeiten bieten bessere Daten als mit Labels versehene Eingabeaufforderungen, die von der überwachten Feinabstimmung verwendet werden, um ein Modell zu optimieren, das eine Ausgabe erstellt, die schwer zu beschreiben ist. Wenn die Ausgabe Ihres Modells schwierig zu definieren ist, sollten Sie Ihr Textmodell mithilfe der überwachten Feinabstimmung optimieren.
Diese Seite enthält detaillierte Informationen zum Optimieren eines Textmodells mit RLHF-Abstimmung. Sie erfahren, welche Textmodelle die RLHF-Abstimmung unterstützen, wie Sie ein Dataset erstellen und wie Sie ein Textmodell mithilfe der RLHF-Abstimmung optimieren. Außerdem erfahren Sie, wie Sie abgestimmte Modelle, die mit RLHF-Abstimmung optimiert wurden, aufrufen und laden können.
Weitere Informationen zur RLHF-Abstimmung in Vertex AI finden Sie im Blogpost RLHF-Abstimmung mit Vertex AI.
Workflow für die RLHF-Modellabstimmung
Der Workflow für die RLHF-Modellabstimmung in Vertex AI umfasst die folgenden Schritte:
- Bereiten Sie Ihr Dataset für menschliche Präferenzen vor.
- Bereiten Sie das Prompt-Dataset vor.
- Laden Sie Ihre Datasets in den Cloud Storage-Bucket hoch. Sie müssen sich nicht im selben Cloud Storage-Bucket befinden.
- Erstellen Sie einen RLHF-Modelabstimmungsjob.
Nach Abschluss der Modellabstimmung wird das abgestimmte Modell auf einem Vertex AI-Endpunkt bereitgestellt. Der Name des Endpunkts entspricht dem Namen des feinabgestimmten Modells. Wenn Sie einen neuen Prompt erstellen möchten, können abgestimmte Modelle in Vertex AI Studio ausgewählt werden.
Unterstützte Modelle
Die folgenden Textmodelle unterstützen die Abstimmung mit bestärkendem Lernen durch menschliches Feedback in Vertex AI:
- Das Grundlagenmodell für die Textgenerierung
text-bison@002
. Weitere Informationen finden Sie unter Textgenerierungsmodell. - Die Flan Text-to-Text Transfer Transformermodelle
t5-small
,t5-large
,t5-xl
undt5-xxl
(Flan-T5). Flan-T5-Modelle können optimiert werden, um Aufgaben wie Textklassifizierung, Sprachübersetzung und Frageantworten auszuführen. Weitere Informationen finden Sie unter Flan-T5-Prüfpunkte.
Die folgenden Textmodelle unterstützen die RLHF-Abstimmung als selbstverwalteten Vertex AI Pipelines-Job.
- Llama 2, verfügbar über den Vertex AI Model Garden. Weitere Informationen finden Sie im Beispiel-Notebook. Da diese Methode komplexer ist, empfehlen wir, zuerst RLHF in Vertex AI zu testen.
Codemodelle unterstützen keine RLHF-Abstimmung.
RLHF-Abstimmungs-Datasets vorbereiten
Für die RLHF-Abstimmung müssen Sie zwei Datasets und ein optionales Dataset vorbereiten. Alle Datasets haben das JSON Lines-Format (JSONL) und müssen in einen Cloud Storage-Bucket hochgeladen werden. Das Dataset-Format zum Optimieren eines Textgenerierungsmodells unterscheidet sich vom Dataset-Format zum Optimieren eines Textchat-Modells.
Prompt-Dataset
Ein Dataset, das Aufforderungen ohne Label enthält. Aufforderungen können die gleichen Aufforderungen aus dem Präferenz-Dataset sein oder unterschiedlich sein. Jede Zeile im Dataset der Eingabeaufforderung enthält die folgenden Felder:
Text-Bison-Dataset
Das Dataset zur Textgenerierung enthält ein Feld:
input_text
: Ein Pflichtfeld, das die Eingabeaufforderung enthält.
Beispiel
{
"input_text": "Create a description for Plantation Palms."
}
Chat-Bison-Dataset
Das Dataset zur Chatgenerierung enthält zwei Felder:
messages
: ein Array von Autoren-Inhalts-Paaren Das Feldauthor
bezieht sich auf den Autor der Nachricht und wechselt zwischenuser
undassistant
. Das Feldcontent
ist der Inhalt der Nachricht. Dercontent
darf nicht leer sein. Der erste und der letzteauthor
müssen aufuser
festgelegt sein.context
: (optionaler) zusätzlicher Kontext für das Modell, das beim Antworten auf eine Eingabeaufforderung verwendet werden soll.
Beispiel
{
"context": "You are a pirate dog named Captain Barktholomew.",
"messages": [
{
"author": "user",
"content": "Hi"
},
{
"author": "assistant",
"content": "Argh! What brings ye to my ship?"
},
{
"author": "user",
"content": "What's your name?"
},
]
}
Weitere Informationen können Sie diesem Beispiel-Prompt-Dataset herunterladen und aufrufen.
Dataset mit menschlichen Präferenzen
Das menschliche Präferenz-Dataset enthält Präferenzen von Menschen. Jede Zeile im Dataset der menschlichen Präferenzen zeichnet die Präferenz zwischen zwei Optionen auf, die einem Menschen präsentiert wurden. Wir empfehlen, dass das Dataset für menschliche Präferenzen 5.000 bis 10.000 Beispiele enthält. Jede Zeile im Dataset für menschliche Präferenzen enthält eine Beispieleinstellung, die die Felder des Eingabe-Datasets für das abzustimmende Modell sowie die folgenden Felder enthält:
candidate_0
undcandidate_1
: Jedes dieser Felder enthält zwei Antworten. Der Mensch hilft bei der Feinabstimmung des Modells, indem er eine der beiden Antworten auswählt, die er bevorzugt.choice
: enthält eine Ganzzahl,0
oder1
, die angibt, welcher Kandidat der Human bevorzugt. Ein0
gibt an, dass die Personcandidate_0
ausgewählt hat, und ein1
gibt an, dass die Personcandidate_1
ausgewählt hat.
Ein Beispiel für eine Zeile im Dataset für menschliche Präferenzen ist:
{"input_text": "Create a description for Plantation Palms.", "candidate_0":
"Enjoy some fun in the sun at Gulf Shores.", "candidate_1": "A Tranquil Oasis of
Natural Beauty.", "choice": 0}
Wenn Sie weitere Informationen wünschen, können Sie dieses Beispiel-Dataset für menschliche Präferenzen herunterladen und ansehen.
Bewertungs-Dataset (optional)
Ein Dataset, das nach der Feinabstimmung des Modells Eingabeaufforderungen ohne Label für die Vorhersage enthält. Wenn das Bewertungs-Dataset angegeben ist, wird nach Abschluss des Abstimmungsjobs eine Inferenz ausgeführt. Das Format des Bewertungs-Datasets entspricht dem Format des Datasets für die Eingabeaufforderung. Die Eingabeaufforderungen in einem Bewertungs-Dataset müssen sich jedoch von den Eingabeaufforderungen im Dataset unterscheiden.
Für weitere Informationen können Sie dieses Beispiel-Bewertungs-Dataset herunterladen und ansehen.
Prämienmodell
Das Dataset mit menschlichen Präferenzen wird zum Trainieren eines Prämienmodells verwendet. Vertex AI erstellt und verwendet das Prämienmodell während der RLHF-Abstimmung. Prämienmodelle werden in einem privaten Cloud Storage-Bucket in einem Kundenmandantenprojekt erstellt. Ein Kundenmandantenprojekt ist ein internes Projekt, das für einen Kunden eindeutig ist. Sie können nicht auf ein Prämienmodell zugreifen und es wird nach Abschluss des Abstimmungsjobs gelöscht. Weitere Informationen finden Sie unter Mandantenprojekt.
Konsistenz mit Produktionsdaten gewährleisten
Die Beispiele in Ihren Datasets sollten dem erwarteten Produktionstraffic entsprechen. Wenn Ihr Dataset bestimmte Formatierungen, Keywords, Anleitungen oder Informationen enthält, sollten die Produktionsdaten auf die gleiche Weise formatiert sein und die gleichen Anweisungen enthalten.
Wenn die Beispiele in Ihrem Dataset beispielsweise ein "question:"
und ein "context:"
enthalten, sollte der Produktionstraffic ebenfalls so formatiert werden, dass er ein "question:"
und ein "context:"
in der gleichen Reihenfolge wie in den Dataset-Beispielen enthält. Wenn Sie den Kontext ausschließen, erkennt das Modell das Muster nicht, selbst wenn die genaue Frage in einem Beispiel im Dataset vorkommt.
Abstimmungs-Datasets in Cloud Storage hochladen
Zum Ausführen eines Abstimmungsjobs müssen Sie ein oder mehrere Datasets in einen Cloud Storage-Bucket hochladen. Sie können entweder einen neuen Cloud Storage-Bucket erstellen oder einen vorhandenen Bucket zum Speichern von Dataset-Dateien verwenden. Die Region des Buckets spielt keine Rolle. Wir empfehlen jedoch die Verwendung eines Buckets im selben Google Cloud-Projekt, in dem Sie die Modellabstimmung ausführen möchten.
Wenn der Bucket bereit ist, laden Sie Ihre Dataset-Datei in den Bucket hoch.
RLHF-Abstimmungsjob erstellen
Sie können die RLHF-Abstimmung mit der Cloud Console oder dem Vertex AI SDK für Python ausführen.
Vertex AI SDK für Python
Wenn Sie erfahren möchten, wie Sie das Vertex AI SDK für Python verwenden, um Ihre Modelle mit RLHF zu optimieren, öffnen und führen Sie das folgende Notebook mit Colab, GitHub oder Vertex AI Workbench aus:
Google Cloud Console
Führen Sie die folgenden Schritte aus, um ein Textmodell in der Google Cloud Console mithilfe der RLHF-Abstimmung zu optimieren:
- Rufen Sie im Bereich „Vertex AI“ der Google Cloud Console die Seite Vertex AI Studio auf.
- Klicken Sie auf den Tab Abstimmen und destillieren.
- Klicken Sie auf Abgestimmtes Modell erstellen.
- Bestärkendes Lernen durch menschliches Feedback (RLHF) auswählen
- Konfigurieren Sie die Modelldetails:
- Abgestimmter Modellname: Geben Sie einen Namen für das abgestimmte Modell ein.
- Basismodell: Wählen Sie das Basismodell aus, das Sie anpassen möchten.
- Region: Geben Sie die Region ein, in der die Modelloptimierung erfolgt. Unterstützte Regionen:
us-central1
: Verwendet 8 Nvidia A100-GPUs mit 80 GB.europe-west4
: Verwendet 64 Kerne des TPU v3-Pods.
- Ausgabeverzeichnis: Geben Sie den Cloud Storage-Speicherort ein, an dem Artefakte gespeichert werden, wenn Ihr Modell abgestimmt wird.
- Maximieren Sie Erweiterte Optionen, um weitere Einstellungen zu konfigurieren.
- Trainingsschritte für Belohnungsmodelle: Geben Sie die Anzahl der Schritte ein, die beim Trainieren des Belohnungsmodells verwendet werden sollen. Das Prämienmodell wird zur Feinabstimmung Ihres Modells verwendet. Der Standardwert ist 1.000.
- Multiplikator für die Prämienrate: Geben Sie beim Trainieren des Prämienmodells einen Gleitkommawert ein, der sich auf die Lernrate auswirkt. Geben Sie einen höheren Wert ein, um die Standard-Lernrate zu erhöhen. Geben Sie einen niedrigeren Wert ein, um die Standard-Lernrate zu verringern. Der Standardwert ist 1.0.
- Schritte beim verstärkten Training: Geben Sie die Anzahl der Schritte ein, die beim Optimieren des Basismodells mit dem verstärkten Lernen ausgeführt werden sollen. Der Standardwert ist 1000.
- Multiplikator beim verstärkten Lernen: Geben Sie einen Gleitkommawert ein, der die Lernrate beim Trainieren eines Bestärkenmodells beeinflusst. Geben Sie einen höheren Wert ein, um die Standard-Lernrate zu erhöhen. Geben Sie einen niedrigeren Wert ein, um die Standard-Lernrate zu verringern. Der Standardwert ist 1,0.
- Klicken Sie auf Weiter.
- Laden Sie unter Dataset für menschliche Präferenz ein menschliches Präferenz-Dataset hoch oder wählen Sie es aus, um ein Belohnungsmodell zu erstellen.
Wenn Sie Ihre Dataset-Datei hochladen möchten, wählen Sie JSONL-Datei in Cloud Storage hochladen aus. Wenn sich die Dataset-Datei bereits in einem Cloud Storage-Bucket befindet, wählen Sie Vorhandene JSONL-Datei in Cloud Storage.
JSONL-Datei hochladen
- Klicken Sie unter JSONL-Datei auswählen auf Durchsuchen und wählen Sie die Dataset-Datei aus.
- Klicken Sie unter Dataset-Speicherort auf Durchsuchen und wählen Sie den Cloud Storage-Bucket, in dem Sie die Dataset-Datei speichern möchten.
Vorhandene JSONL-Datei verwenden
Klicken Sie unter Cloud Storage-Dateipfad auf Durchsuchen und wählen Sie den Cloud Storage-Bucket, in dem sich Ihre Dataset-Datei befindet.
- Wenn Sie die Dataset-Datei unter Dataset-Prompt hochladen möchten, wählen Sie
JSONL-Datei hochladen
- Klicken Sie unter JSONL-Datei auswählen auf Durchsuchen und wählen Sie die Dataset-Datei aus.
- Klicken Sie unter Dataset-Speicherort auf Durchsuchen und wählen Sie den Cloud Storage-Bucket, in dem Sie die Dataset-Datei speichern möchten.
Vorhandene JSONL-Datei verwenden
Klicken Sie unter Cloud Storage-Dateipfad auf Durchsuchen und wählen Sie den Cloud Storage-Bucket, in dem sich Ihre Dataset-Datei befindet.
JSONL-Datei in Cloud Storage hochladen aus. Wenn sich den Dataset-Prompt bereits in einem Cloud Storage-Bucket befindet, wählen Sie Vorhandene JSONL-Datei in Cloud Storage aus.
- (Optional) So bewerten Sie Ihr abgestimmtes Modell:
- Klicken Sie auf Modellbewertung aktivieren.
- Klicken Sie im Bewertungs-Dataset auf Durchsuchen.
- Wechseln Sie zu dem Cloud Storage-Bucket, der Ihr Bewertungs-Dataset enthält, und wählen Sie Ihr Bewertungs-Dataset aus.
- Klicken Sie auf Abstimmung starten.
Status des Abstimmungsvorgangs prüfen
Rufen Sie in der Google Cloud Console die Seite Vertex AI Pipelines auf, um den Status Ihres Modellabstimmungsjobs zu prüfen. Auf dieser Seite wird der Status von Text- und Code-Modell-Abstimmungsjobs angezeigt.
Alternativ können Sie E-Mail-Benachrichtigungen für Vertex AI Pipelines konfigurieren, damit Sie per E-Mail benachrichtigt werden, wenn der Modellabstimmungsjob abgeschlossen oder fehlgeschlagen ist.
Nächste Schritte
- Selbstverwalteten RLHF-Abstimmungsjob für Llama 2 mit Vertex AI Pipelines ausführen.
- Verantwortungsbewusste Best Practices für KI und Sicherheitsfilter von Vertex AI
- Audit-Logs zum Datenzugriff für Ihre Endpunkte aktivieren
- Weitere Informationen zum Bewerten des optimierten Modells
- Weitere Informationen zur RLHF-Abstimmung in Vertex AI finden Sie im Blogpost RLHF-Abstimmung mit Vertex AI.