In diesem Dokument wird beschrieben, wie Sie ein Gemini-Modell mithilfe der überwachten Abstimmung optimieren.
Hinweise
- Erfahren Sie, wie die überwachte Abstimmung funktioniert und welche Vorteile sie bietet.
- Informationen zum Vorbereiten eines überwachten Abstimmungs-Datasets.
- Wählen Sie eine Region für die überwachte Abstimmung aus, um Abstimmungsjobs auszuführen.
Abstimmungsjob erstellen
Sie können einen überwachten Textmodell-Abstimmungsjob mit der Google Cloud Console, API oder dem Vertex AI SDK für Python erstellen. Anleitungen zur Konfiguration von Modellabstimmungen finden Sie unter Empfohlene Konfigurationen.
REST
Senden Sie zum Erstellen eines Modellabstimmungsjobs eine POST-Anfrage mit der Methode tuningJobs.create
.
Beachten Sie, dass einige Parameter nicht von allen Modellen unterstützt werden. Achten Sie darauf, dass Sie nur die für das abzustimmende Modell relevanten Parameter einfügen.
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- PROJECT_ID: Ihre Projekt-ID.
- TUNING_JOB_REGION: Die Region, in der der Abstimmungsjob ausgeführt wird. Dies ist auch die Standardregion, in der das abgestimmte Modell hochgeladen wird.
- BASE_MODEL: Name des zu optimierenden Foundation Models. Unterstützte Werte:
gemini-1.0-pro-002
. - TRAINING_DATASET_URI: Cloud Storage-URI Ihres Trainings-Datasets. Das Dataset muss als JSONL-Datei formatiert sein. Die besten Ergebnisse erzielen Sie, wenn Sie mindestens 100 bis 500 Beispiele angeben. Weitere Informationen finden Sie unter Überwachte Abstimmungs-Datasets.
- VALIDATION_DATASET_URIOptional: Der Cloud Storage-URI der Validierungs-Dataset-Datei.
- EPOCH_COUNTOptional: Die Anzahl der Epochen zum Trainieren. Legen Sie das Feld nicht fest, um den empfohlenen Wert verwenden zu lassen.
- LEARNING_RATE_MULTIPLIER: Optional: Ein Multiplikator, der auf die empfohlene Lernrate anzuwenden ist. Legen Sie das Feld nicht fest, um den empfohlenen Wert verwenden zu lassen.
- TUNED_MODEL_DISPLAYNAMEOptional: Ein Anzeigename für das abgestimmte Modell. Wenn nicht festgelegt, wird ein zufälliger Name generiert.
HTTP-Methode und URL:
POST https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs
JSON-Text der Anfrage:
{ "baseModel": "BASE_MODEL", "supervisedTuningSpec" : { "training_dataset_uri": "TRAINING_DATASET_URI", "validation_dataset_uri": "VALIDATION_DATASET_URI", "hyper_parameters": { "epoch_count": EPOCH_COUNT, "learning_rate_multiplier": LEARNING_RATE_MULTIPLIER }, }, "tunedModelDisplayName": "TUNED_MODEL_DISPLAYNAME, }
Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:
curl
Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json
und führen Sie den folgenden Befehl aus:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs"
PowerShell
Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json
und führen Sie den folgenden Befehl aus:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs" | Select-Object -Expand Content
Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:
Python
Console
Führen Sie folgende Schritte aus, um ein Textmodell mit überwachter Feinabstimmung über die Cloud Console 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.
Wählen Sie unter Methode zur Abstimmung das Optionsfeld für Überwachte Abstimmung aus.
Konfigurieren Sie unter Modelldetails Folgendes:
- Geben Sie im Feld Name des abgestimmten Modells einen Namen für das neue abgestimmte Modell ein, der maximal 128 Zeichen umfasst.
- Wählen Sie im Feld Basismodell die Option
gemini-1.0-pro-002
aus. - Wählen Sie im Drop-down-Feld Region die Region aus, in der der Pipeline-Optimierungsjob ausgeführt und in der das abgestimmte Modell bereitgestellt wird.
Optional: Maximieren Sie den Drop-down-Pfeil Erweiterte Optionen und konfigurieren Sie Folgendes:
- Geben Sie im Feld Anzahl der Epochen die Anzahl der Schritte ein, die für die Modellabstimmung ausgeführt werden sollen.
- Geben Sie im Feld Multiplikator für die Lernrate einen Wert ein. Geben Sie die Schrittgröße pro Durchlauf ein. Der Standardwert ist 1.
Klicken Sie auf Weiter.
Die Seite Abstimmungs-Dataset wird geöffnet.
Wählen Sie eine der folgenden Optionen aus, um eine Dataset-Datei hochzuladen:
- Wenn Sie noch kein Dataset hochgeladen haben, wählen Sie das Optionsfeld für Datei in Cloud Storage hochladen aus.
- Klicken Sie im Feld JSONL-Datei auswählen auf Durchsuchen und wählen Sie die Dataset-Datei aus.
- Klicken Sie im Feld Dataset-Speicherort auf Durchsuchen und wählen Sie den Cloud Storage-Bucket, in dem Sie die Dataset-Datei speichern möchten.
- Wenn sich die Dataset-Datei bereits in einem Cloud Storage-Bucket befindet, klicken Sie auf das Optionsfeld für Vorhandene Datei in Cloud Storage.
- Klicken Sie im Feld Cloud Storage-Dateipfad auf Durchsuchen und wählen Sie den Cloud Storage-Bucket, in dem sich Ihre Dataset-Datei befindet.
(Optional) Klicken Sie auf die Schaltfläche Modellvalidierung aktivieren, um Validierungsmesswerte während des Trainings abzurufen.
- Geben Sie in der Datei Validierungs-Dataset den Cloud Storage-Pfad Ihres Validierungs-Datasets ein.
Klicken Sie auf Abstimmung starten.
Ihr neues Modell wird auf der Seite Abstimmen und Destillieren im Abschnitt Gemini Pro-Modelle angezeigt. Wenn die Abstimmung des Modells abgeschlossen ist, lautet der Status Erfolgreich.
Beispiel: cURL-Befehls
PROJECT_ID=myproject
LOCATION=us-central1
curl \
-X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
"https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/tuningJobs" \
-d \
$'{
"baseModel": "gemini-1.0-pro-002",
"supervisedTuningSpec" : {
"training_dataset_uri": "gs://cloud-samples-data/ai-platform/generative_ai/sft_train_data.jsonl",
"validation_dataset_uri": "gs://cloud-samples-data/ai-platform/generative_ai/sft_validation_data.jsonl"
},
"tunedModelDisplayName": "tuned_gemini_pro"
}'
Empfohlene Konfigurationen
Die folgende Tabelle zeigt die empfohlenen Konfigurationen zum Optimieren eines Foundation Models nach Aufgabe:
Task | Anzahl der Beispiele im Datensatz | Anzahl der Epochen |
---|---|---|
Klassifizierung | 500+ | 2-4 |
Zusammenfassung | 1000+ | 2-4 |
Extractive QA | 500+ | 2-4 |
Chat | 1000+ | 2-4 |
Für die Anzahl der Epochen empfehlen wir, mehr als einen Wert auszuprobieren, um die beste Leistung für ein bestimmtes Dataset zu erhalten. Mit Erhöhung der Anzahl von Epochen erzielen Sie möglicherweise bessere Ergebnisse. Sie sollten jedoch bezüglich einer Überanpassung, insbesondere wenn das Dataset klein ist, vorsichtig sein und in diesem Fall die Epochennummer senken.
Bei Klassifizierungsaufgaben erhöht sich die Komplexität der Aufgabe mit der Anzahl der Klassen. Bei einer großen Anzahl von Klassen benötigen Sie möglicherweise größere Datasets.
Liste der Abstimmungsjobs aufrufen
Sie können eine Liste der Abstimmungsjobs in Ihrem aktuellen Projekt über die Google Cloud Console, das Vertex AI SDK für Python oder durch Senden einer GET-Anfrage mit der Methode tuningJobs
aufrufen.
REST
Senden Sie eine GET-Anfrage mit der Methode tuningJobs.list
, um eine Liste der Modellabstimmungsjobs aufzurufen.
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- PROJECT_ID: Ihre Projekt-ID.
- TUNING_JOB_REGION: Die Region, in der der Abstimmungsjob ausgeführt wird. Dies ist auch die Standardregion, in der das abgestimmte Modell hochgeladen wird.
HTTP-Methode und URL:
GET https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs
Senden Sie die Anfrage mithilfe einer der folgenden Optionen:
curl
Führen Sie folgenden Befehl aus:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs"
PowerShell
Führen Sie folgenden Befehl aus:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs" | Select-Object -Expand Content
Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:
Python
Console
Rufen Sie die Abstimmungsjobs in der Google Cloud Console auf der Seite Vertex AI Studio auf.
Ihre Gemini-Abstimmungsjobs sind in der Tabelle im Abschnitt Gemini Pro-Abstimmungsmodelle aufgeführt.
Details eines Abstimmungsjobs abrufen
Sie können die Details eines Abstimmungsjobs in Ihrem aktuellen Projekt mit der Google Cloud Console, dem Vertex AI SDK für Python oder durch Senden einer GET-Anfrage mit der Methode tuningJobs
abrufen.
REST
Senden Sie eine GET-Anfrage mit der Methode tuningJobs.get
und geben Sie TuningJob_ID
an, um eine Liste der Modellabstimmungsjobs aufzurufen.
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- PROJECT_ID: Ihre Projekt-ID.
- TUNING_JOB_REGION: Die Region, in der der Abstimmungsjob ausgeführt wird. Dies ist auch die Standardregion, in der das abgestimmte Modell hochgeladen wird.
- TUNING_JOB_ID: die ID des Abstimmungsjobs.
HTTP-Methode und URL:
GET https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs/TUNING_JOB_ID
Senden Sie die Anfrage mithilfe einer der folgenden Optionen:
curl
Führen Sie folgenden Befehl aus:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs/TUNING_JOB_ID"
PowerShell
Führen Sie folgenden Befehl aus:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs/TUNING_JOB_ID" | Select-Object -Expand Content
Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:
Python
Console
Details zu einem optimierten Modell in der Google Cloud Console finden Sie auf der Seite Vertex AI Studio.
Suchen Sie in der Tabelle Gemini Pro-Modelle Ihr Modell und klicken Sie auf Details.
Die Details Ihres Modells werden angezeigt.
Abstimmungsjob abbrechen
Sie können einen Abstimmungsjob in Ihrem aktuellen Projekt mit der Google Cloud Console, dem Vertex AI SDK für Python oder durch Senden einer POST-Anfrage mit der Methode tuningJobs
abbrechen.
REST
Senden Sie eine GET-Anfrage mit der Methode tuningJobs.cancel
und geben Sie TuningJob_ID
an, um eine Liste der Modellabstimmungsjobs aufzurufen.
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- PROJECT_ID: Ihre Projekt-ID.
- TUNING_JOB_REGION: Die Region, in der der Abstimmungsjob ausgeführt wird. Dies ist auch die Standardregion, in der das abgestimmte Modell hochgeladen wird.
- TUNING_JOB_ID: die ID des Abstimmungsjobs.
HTTP-Methode und URL:
POST https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs/TUNING_JOB_ID:cancel
Senden Sie die Anfrage mithilfe einer der folgenden Optionen:
curl
Führen Sie folgenden Befehl aus:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d "" \
"https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs/TUNING_JOB_ID:cancel"
PowerShell
Führen Sie folgenden Befehl aus:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-Uri "https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs/TUNING_JOB_ID:cancel" | Select-Object -Expand Content
Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:
Python
Console
Rufen Sie zum Abbrechen eines Abstimmungsjobs in der Google Cloud Console die Seite Vertex AI Studio auf.
Klicken Sie in der Tabelle Abgestimmte Gemini Pro-Modelle auf
Ausführung verwalten.Klicken Sie auf Abbrechen.
Vorhersage mit dem abgestimmten Modell erstellen
REST
Wenn Sie eine Vorhersage mit dem abgestimmten Modell aus einem Abstimmungsjob abrufen möchten, senden Sie eine POST-Anfrage und geben Sie TUNED_ENDPOINT_ID
an.
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- PROJECT_ID: Ihre Projekt-ID.
- TUNING_JOB_REGION: Die Region, in der der Abstimmungsjob ausgeführt wird. Dies ist auch die Standardregion, in der das abgestimmte Modell hochgeladen wird.
- ENDPOINT_ID ist die Endpunkt-ID des abgestimmten Modells von der GET API.
- TEMPERATURE:
Die Temperatur wird für die Probenahme während der Antwortgenerierung verwendet. Dies passiert, wenn
topP
undtopK
angewendet werden. Die Temperatur bestimmt den Grad der Zufälligkeit bei der Tokenauswahl. Niedrigere Temperaturen eignen sich gut für Prompts, die eine weniger offene oder kreative Antwort erfordern, während höhere Temperaturen zu vielfältigeren oder kreativeren Ergebnissen führen können. Eine Temperatur von0
bedeutet, dass immer die Tokens mit der höchsten Wahrscheinlichkeit ausgewählt werden. In diesem Fall sind die Antworten auf einen bestimmten Prompt größtenteils deterministisch, aber eine gewisse Variation ist dennoch möglich.Wenn das Modell eine zu allgemeine oder zu kurze Antwort zurückgibt, oder wenn das Modell eine Fallback-Antwort ausgibt, versuchen Sie, die Temperatur zu erhöhen.
- TOP_P:
Der Wert „Top-P“ ändert, wie das Modell Tokens für die Ausgabe auswählt. Die Tokens werden von den wahrscheinlichsten (siehe „Top-K“) bis zu den unwahrscheinlichsten Werten ausgewählt, bis die Summe ihrer Wahrscheinlichkeiten dem „Top-P“-Wert entspricht. Beispiel: Wenn die Tokens A, B und C eine Wahrscheinlichkeit von 0,3, 0,2 und 0,1 haben und der „Top-P“-Wert
0.5
ist, wählt das Modell anhand der Temperatur entweder A oder B als das nächste Token und C als Kandidaten ausschließen.Geben Sie einen niedrigeren Wert für weniger zufällige Antworten und einen höheren Wert für zufälligere Antworten an.
- TOP_K:
Der Wert „Top-K“ ändert, wie das Modell Tokens für die Ausgabe auswählt. Ein „Top-K“ von
1
bedeutet, dass das nächste ausgewählte Token unter den Tokens im Modell-Vokabular (auch als gierige Decodierung bezeichnet) am wahrscheinlichsten ist, während ein „Top-K“ von3
bedeutet, dass das nächste Token mithilfe der Temperatur aus den drei wahrscheinlichsten Tokens ausgewählt wird.Für jeden Tokenauswahlschritt werden die „Top-K“-Tokens mit den höchsten Wahrscheinlichkeiten abgetastet. Anschließend werden Tokens weiter auf der Grundlage von „Top-P“ gefiltert, wobei das endgültige Token mithilfe von Temperaturproben ausgewählt wird.
Geben Sie einen niedrigeren Wert für weniger zufällige Antworten und einen höheren Wert für zufälligere Antworten an.
- MAX_OUTPUT_TOKENS: Maximale Anzahl an Tokens, die in der Antwort generiert werden können. Ein Token besteht aus etwa vier Zeichen. 100 Tokens entsprechen etwa 60–80 Wörtern.
Geben Sie kürzere Werte für kürzere Antworten und höhere Werte für längere Antworten an.
HTTP-Methode und URL:
POST https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/endpoints/ENDPOINT_ID:generateContent
JSON-Text der Anfrage:
{ "contents": [ { "role": "USER", "parts": { "text" : "Why is sky blue?" } } ], "generation_config": { "temperature":TEMPERATURE, "top_p": TOP_P, "top_k": TOP_K, "max_output_tokens": MAX_OUTPUT_TOKENS } }
Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:
curl
Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json
und führen Sie den folgenden Befehl aus:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/endpoints/ENDPOINT_ID:generateContent"
PowerShell
Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json
und führen Sie den folgenden Befehl aus:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/endpoints/ENDPOINT_ID:generateContent" | Select-Object -Expand Content
Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:
Python
from vertexai.preview.generative_models import GenerativeModel
from vertexai.preview import tuning
from vertexai.preview.tuning import sft
sft_tuning_job = sft.SupervisedTuningJob("projects/<PROJECT_ID>/locations/<TUNING_JOB_REGION>/tuningJobs/<TUNING_JOB_ID>")
tuned_model = GenerativeModel(sft_tuning_job.tuned_model_endpoint_name)
print(tuned_model.generate_content(content))
Console
Details zu einem optimierten Modell in der Google Cloud Console finden Sie auf der Seite Vertex AI Studio.
Wählen Sie in der Tabelle Optimierte Modelle von Gemini Pro die Option Test aus.
Es wird eine Seite geöffnet, auf der Sie eine Unterhaltung mit Ihrem abgestimmten Modell erstellen können.
Messwerte für Feinabstimmung und Validierung
Sie können einen Modellabstimmungsjob konfigurieren, um Messwerte zur Modellabstimmung und Modellbewertung zu erfassen und zu melden, die dann auf der Seite Vertex AI Studio visualisiert werden können.
Messwerte für die Modellabstimmung
Der Modellabstimmungsjob erfasst automatisch die folgenden Abstimmungsmesswerte für gemini-1.0-pro-002
.
/train_total_loss
: Verlust für das Abstimmungs-Dataset in einem Trainingsschritt./train_fraction_of_correct_next_step_preds
: Die Tokengenauigkeit in einem Trainingsschritt. Eine einzelne Vorhersage besteht aus einer Abfolge von Tokens. Dieser Messwert misst die Genauigkeit der vorhergesagten Tokens im Vergleich zum Ground Truth im Abstimmungs-Dataset./train_num_predictions:
: Anzahl der vorhergesagten Tokens in einem Trainingsschritt.
Modellvalidierungsmesswerte:
Sie können einen Modellabstimmungsjob konfigurieren, um die folgenden Validierungsmesswerte für gemini-1.0-pro-002
zu erfassen.
/eval_total_loss
: Verlust für das Validierungs-Dataset in einem Validierungsschritt./eval_fraction_of_correct_next_step_preds
: Die Tokengenauigkeit in einem Validierungsschritt. Eine einzelne Vorhersage besteht aus einer Abfolge von Tokens. Dieser Messwert misst die Genauigkeit der vorhergesagten Tokens im Vergleich zum Ground Truth im Validierungs-Dataset./eval_num_predictions
: Anzahl der vorhergesagten Tokens in einem Validierungsschritt.
Die Messwertvisualisierungen sind verfügbar, sobald der Modellabstimmungsjob abgeschlossen wurde. Wenn Sie beim Erstellen des Abstimmungsjobs kein Validierungs-Dataset angeben, sind nur die Visualisierungen für die Abstimmungsmesswerte verfügbar.
Nächste Schritte
- Informationen zum Verwenden der überwachten Abstimmung in einer Lösung, die eine Wissensdatenbank mit generativer KI erstellt, finden Sie unter Schnellstartlösung: Wissensdatenbank für generative KI.