Codemodelle abstimmen

Codemodelle können mithilfe der überwachten Abstimmung optimiert werden. Die überwachte Abstimmung verwendet Labels, die den Typ der Ausgabe zeigen, den Sie während der Inferenz aus Ihrem Codegenerierungs- oder Code-Chat-Modell wünschen. Codemodelle unterstützen keine Abstimmung. Dazu wird die RLHF-Abstimmung (Reinforcement Learning from Human Feedback) verwendet.

Szenarien zur Verwendung der Feinabstimmung von Codemodellen

Die Feinabstimmung ist erforderlich, wenn ein Modell etwas weniger Allgemeines lernen soll, das von der allgemeinen Sprache und den üblichen Codemustern abweicht. Im Folgenden finden Sie Beispiele dafür, was Sie den Modellen code-bison und codechat-bison vermitteln können:

  • Code für benutzerdefinierte Bibliotheken generieren. Wenn Sie ein Codemodell mit per Label kenntlich gemachten Beispielen aus einer benutzerdefinierten Bibliothek trainieren, können Sie Code erstellen oder über Code chatten, der für diese benutzerdefinierte Bibliothek spezifisch ist.
  • Codebasis verwenden. Wenn Sie ein Modell mit per Label kenntlich gemachten Beispielen Ihrer Codebasis trainieren, können Sie Code generieren oder über Code chatten, der eindeutige Qualitäten in Ihrer Codebasis verwendet.
  • Code mit Varianten einer Programmiersprache generieren. Durch das Trainieren eines Codemodells mit per Label kenntlich gemachten Beispielen für Sprachvarianten können Sie Code generieren oder über Code chatten, der die speziellen Konventionen und Standards dieser Sprachvariante verwendet.

Diese Szenarien umfassen Codeanforderungen, die nur schwierig nur durch Aufforderungen allein erfasst werden können. Hier einige Beispiele:

Codegenerierung

  • Über diesen beispielhaften Prompt und die Antwort kann code-bison für die Arbeit mit einem bestimmten Dataset optimiert werden.

  • Über diesen beispielhaften Prompt und die Antwort kann code-bison ein Produkt mit Python erstellen.

Codechat

  • Über diesen beispielhaften Prompt und die Antwort wird codechat-bison optimiert, damit ein Nutzer lernen kann, mit einem bestimmten Dataset zu arbeiten.

  • Über diesen beispielhaften Prompt und die Antwort wird codechat-bison optimiert, damit ein Nutzer während einer Chatsitzung ein Produkt mit Python erstellen kann.

Dataset zur Feinabstimmung eines Codemodells vorbereiten

Das Dataset zum Optimieren eines Codemodells enthält Beispiele, die auf die Aufgabe ausgerichtet sind, welche das Modell ausführen soll. Ihr Dataset muss mindestens 10 Beispiele enthalten. Für gute Ergebnisse empfehlen wir mindestens 500 Beispiele. Je mehr Beispiele Sie angeben, desto besser sind die Ergebnisse.

Dataset-Format zum Feinabstimmung eines Codemodells

Das Feinabstimmungs-Dataset für ein Codegenerierungs-Modell und ein Code-Chat-Modell muss im JSONL-Format (JSONL) vorliegen. Im Folgenden finden Sie Details zum Dataset-Format und Dataset-Beispiele für die einzelnen Modelle:

Codegenerierung

Ihr Dataset zur Codeoptimierung muss im JSON Lines-Format (JSONL) vorliegen, wobei jede Zeile ein einzelnes Abstimmungsbeispiel enthält. Die einzelnen Beispiele enthalten je ein input_text-Feld, das den Prompt für das Modell enthält, und ein output_text-Feld, das eine vom abgestimmten Modell erwartete Beispielantwort enthält.

Ein Dataset für ein Textgenerierungsmodell kann maximal 10.000 Beispiele enthalten.

Beispiele für ein Dataset zur Abstimmung eines Codegenerierungs-Datasets

In diesem Thema finden Sie zwei Beispiele für die Feinabstimmung von Codegenerierungs-Modellen in Datasets. Hier ist das zweite Beispiel eines Datasets zur Codegenerierung:

{"input_text": "How to create a product in Python with the Cloud Vision API?", "output_text": "Use this
Python code sample to learn how to create a
product with the Cloud Vision API:\n\n```python\n\r\n\r\n\r\n\r\n\r\nfrom google.cloud import
vision\r\nfrom google.protobuf import field_mask_pb2 as field_mask\r\n\r\ndef
create_product(\r\n project_id, location, product_id, product_display_name,\r\n
product_category):\r\n \"\"\"Create one product.\r\n Args:\r\n project_id: Id of
the project.\r\n location: A compute region name.\r\n product_id: Id of the
product.\r\n product_display_name: Display name of the product.\r\n
product_category: Category of the product.\r\n \"\"\"\r\n client =
vision.ProductSearchClient()\r\n\r\n # A resource that represents Google Cloud
Platform location.\r\n location_path =
f\"projects/{project_id}/locations/{location}\"\r\n\r\n # Create a product with
the product specification in the region.\r\n # Set product display name and
product category.\r\n product = vision.Product(\r\n
display_name=product_display_name,\r\n
product_category=product_category)\r\n\r\n # The response is the product with
the `name` field populated.\r\n response = client.create_product(\r\n
parent=location_path,\r\n product=product,\r\n product_id=product_id)\r\n\r\n #
Display the product information.\r\n print('Product name:
{}'.format(response.name))\r\n```"}

Hier folgt das zweite Beispiel für ein Dataset zur Feinabstimmung der Codegenerierung:

{"input_text": "python to retrieve the labels of a dataset for a given dataset
ID in BigQuery", "output_text": "Here is a Python code sample to retrieve the labels of a
dataset for a given dataset ID in BigQuery.\n\n```python\n\n from google.cloud import
bigquery\n\n # Construct a BigQuery client object.\n client =
bigquery.Client()\n\n # TODO(developer): Set dataset_id to the ID of the dataset
to fetch.\n # dataset_id = \"your-project.your_dataset\"\n\n dataset =
client.get_dataset(dataset_id) # Make an API request.\n\n # View dataset
labels.\n print(\"Dataset ID: {}\".format(dataset_id))\n print(\"Labels:\")\n if
dataset.labels:\n for label, value in dataset.labels.items():\n print(\"\\t{}:
{}\".format(label, value))\n else:\n print(\"\\tDataset has no labels
defined.\")\n```"}

Codechat

Ihr Dataset zur Optimierung eines Codechat-Modells muss im JSON Lines-Format (JSONL) vorliegen, wobei jede Zeile ein einzelnes Abstimmungsbeispiel enthält. Jedes Beispiel besteht aus je einem messages-Feld, das beispielhafte Chatprompts und die vom abgestimmten Modell erwarteten Antworten enthält.

Die maximale Anzahl von author-Feldern, die die Beispiele im Dataset für ein Codechat-Modell enthalten können, beträgt 10.000. Dieses Maximum entspricht der Summe aller author-Felder in allen messages in allen Beispielen.

Beispiele für ein Dataset zur Abstimmung eines Code-Chat-Modells

In diesem Thema finden Sie zwei Beispiele für datasets für die Feinabstimmung von Codechat-Modellen. Hier ist das erste Beispiel für ein Dataset zur Feinabstimmung von Codechats:

{"messages": [{"author":"user", "content": "How to create a product in
Python with Cloud Vision?"}, {"author": "assistant", "content": "Use this Python code sample to
learn how to create a product with Cloud Vision:\n\n```python\n\r\n\r\n\r\n\r\n\r\nfrom
google.cloud import vision\r\nfrom google.protobuf import field_mask_pb2 as
field_mask\r\n\r\ndef create_product(\r\n project_id, location, product_id,
product_display_name,\r\n product_category):\r\n \"\"\"Create one product.\r\n
Args:\r\n project_id: Id of the project.\r\n location: A compute region
name.\r\n product_id: Id of the product.\r\n product_display_name: Display name
of the product.\r\n product_category: Category of the product.\r\n \"\"\"\r\n
client = vision.ProductSearchClient()\r\n\r\n # A resource that represents
Google Cloud Platform location.\r\n location_path =
f\"projects/{project_id}/locations/{location}\"\r\n\r\n # Create a product with
the product specification in the region.\r\n # Set product display name and
product category.\r\n product = vision.Product(\r\n
display_name=product_display_name,\r\n
product_category=product_category)\r\n\r\n # The response is the product with
the `name` field populated.\r\n response = client.create_product(\r\n
parent=location_path,\r\n product=product,\r\n product_id=product_id)\r\n\r\n #
Display the product information.\r\n print('Product name:
{}'.format(response.name))\r\n```"}]}

Hier folgt das zweite Beispiel für ein Dataset zur Feinabstimmung von Codechats:

{"messages": [{"author":"user", "content": "Python to retrieve the labels of a
dataset for a given dataset ID in BigQuery"}, {"author": "assistant", "content": "Here is a
Python code sample to retrieve the labels of a dataset for a given dataset
ID in BigQuery.\n\n```python\n\n from google.cloud import bigquery\n\n # Construct a
BigQuery client object.\n client = bigquery.Client()\n\n # TODO(developer): Set
dataset_id to the ID of the dataset to fetch.\n # dataset_id =
\"your-project.your_dataset\"\n\n dataset = client.get_dataset(dataset_id) #
Make an API request.\n\n # View dataset labels.\n print(\"Dataset ID:
{}\".format(dataset_id))\n print(\"Labels:\")\n if dataset.labels:\n for label,
value in dataset.labels.items():\n print(\"\\t{}: {}\".format(label, value))\n
else:\n print(\"\\tDataset has no labels defined.\")\n```"}]}

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.

Anleitungen in Beispiele einbinden

Für Aufgaben wie die Codegenerierung können Sie ein Dataset an Beispielen erstellen, die keine Anleitungen enthalten. Wenn Sie Befehle aus den Beispielen im Dataset ausschließen, führt dies nach der Feinabstimmung zu einer schlechteren Leistung als die Einbeziehung von Anweisungen. Dies gilt insbesondere bei kleineren Datasets.

Schließt Anleitungen aus:

{
  "input_text": "Calculate the sum of a list of integers.",
  "output_text": "```python\nnums = [1, 2, 3]\ntotal_sum = sum(nums)\n```"
}

Schließt Anleitungen ein:

{
  "input_text": "Write the code in Python: calculate the sum of a list of integers",
  "output_text": "```python\nnums = [1, 2, 3]\ntotal_sum = sum(nums)\n```"
}

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.

Einstellungen: Überwachte Feinabstimmungsregion

Beim Konfigurieren eines überwachten Abstimmungsjobs können drei Google Cloud-Regionseinstellungen festgelegt werden. In einer Region wird die Pipeline ausgeführt, die Ihr Modell optimiert. In der anderen Region wird der Modellabstimmungsjob ausgeführt und das abgestimmte Modell wird hochgeladen.

Pipelinejobregionen

Die Pipelinejobregion ist die Region, in der der Pipelinejob ausgeführt wird. Wenn die optionale Modelluploadregion nicht angegeben ist, wird das Modell in die Pipelinejobregion hochgeladen und dort bereitgestellt. Zwischendaten, wie das transformierte Dataset, werden in der Pipelinejobregion gespeichert. Informationen dazu, welche Regionen als Pipelinejobregion verwendt werden können, finden Sie unter Unterstützte Pipelinejob- und Modelluploadregionen. Sie müssen die Pipelinejobregion auf eine der folgenden Methoden angeben:

  • Wenn Sie das Vertex AI SDK verwenden, können Sie die Region, in der der Pipelinejob ausgeführt wird, mit dem tuning_job_location-Parameter für die tune_model-Methode des Objekts, das das abzustimmende Modell darstellt (z. B. die TextGenerationModel.tune_model-Methode).

  • Wenn Sie einen überwachten Abstimmungsjob durch Senden einer POST-Anfrage mit der pipelineJobs.create-Methode erstellen, verwenden Sie die URL, um die Region anzugeben, in der der Pipelinejob ausgeführt wird. Ersetzen Sie in der folgenden URL beide Instanzen von PIPELINE_JOB_REGION durch die Region, in der die Pipeline ausgeführt wird:

     https://PIPELINE_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/PIPELINE_JOB_REGION/pipelineJobs
    
  • Wenn Sie die Google Cloud Console verwenden, um einen überwachten Modellabstimmungsjob zu erstellen, geben Sie die Pipelinejobregion in der Regionssteuerung bei der Erstellung der Region an. In der Google Cloud Console gibt die Regionssteuerung sowohl die Pipelinejob- als auch die Modelluploadregion an. Wenn Sie die Google Cloud Console zum Erstellen eines überwachten Jobs zur Feinabstimmung des Modells verwenden, sind beide Regionen immer identisch.

Modelluploadregionen

Mit dem optionalen Parameter tuned_model_location geben Sie an, wohin Ihr abgestimmtes Modell hochgeladen werden soll. Ist die Modelluploadregion nicht angegeben ist, wird das abgestimmte Modell in die Pipelinejobregion hochgeladen. Sie können eine unterstützten Pipelinejobs- und Modelluploadregionen für Ihre Modelluploadregion verwenden. Sie können die Modelluploadregion mit einer der folgenden Methoden angeben:

  • Wenn Sie das Vertex AI SDK verwenden, wird der tuned_model_location-Parameter in der tune_model-Methode des Objekts angegeben, das das abzustimmende Modell darstellt (z. B., die TextGenerationModel.tune_model-Methode).

  • Wenn Sie einen überwachten Modellabstimmungsjob durch Senden einer POST-Anfrage mit der pipelineJobs-Methode erstellen, können Sie dielocation-Parameter zur Angabe der Modelluploadregion verwenden.

  • Wenn Sie die Google Cloud Console verwenden, um einen überwachten Modellabstimmungsjob zu erstellen, geben Sie bei der Erstellung des Abstimmungsjobs die Pipelinejobregion in der Regionssteuerung an. In der Google Cloud Console gibt die Regionssteuerung sowohl die Region des Modelluploads als auch die des Pipelinejobs an. Wenn Sie die Google Cloud Console zum Erstellen eines überwachten Jobs zur Feinabstimmung des Modells verwenden, sind beide Regionen immer identisch.

Modelloptimierungsregion

Im Bereich der Modelloptimierung wird die Berechnungen zur Modellabstimmung durchgeführt. Diese Region wird durch den ausgewählten Beschleunigertyp bestimmt. Wenn Sie für Ihren Beschleunigertyp TPU angeben, erfolgt die Berechnung der Modellfeinabstimmung in europe-west4. Wenn Sie für Ihren Beschleunigertyp GPU angeben, erfolgt die Modelloptimierung in us-central1.

Unterstützte Pipelinejob- und Modelluploadregionen

Sie können eine der folgenden Regionen verwenden, um die Modellupload- und die Pipelinejobregion anzugeben:

  • us-central1
  • europe-west4
  • asia-southeast1
  • us-west1
  • europe-west3
  • europe-west2
  • asia-northeast1
  • us-east4
  • us-west4
  • northamerica-northeast1
  • europe-west9
  • europe-west1
  • asia-northeast3

Codemodell-Feinabstimmungsjob erstellen

Sie können einen überwachten Feinabstimmungsjob mit der Google Cloud Console, der API oder dem Vertex AI SDK für Python erstellen. Anleitungen zur Konfiguration von Modellabstimmungen finden Sie unter Empfohlene Konfigurationen.

Job zur Modelloptimierung für die Codegenerierung erstellen

Im Folgenden wird gezeigt, wie Sie mit der Google Cloud Console oder den REST API-Befehlen einen Job zur Modelloptimierung erstellen.

REST

Senden Sie zum Erstellen eines Jobs zur Feinabstimmung eines Codeerstellungsmodells eine POST-Anfrage mit der Methode pipelineJobs.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_ID: Ihre Projekt-ID.
  • TUNINGPIPELINE_DISPLAYNAME: Ein Anzeigename für den pipelineJob.
  • OUTPUT_DIR: Der URI des Buckets, an den Pipelineartefakte ausgegeben werden sollen.
  • MODEL_DISPLAYNAME: Ein Anzeigename für das von der Pipelinejob hochgeladene (erstellte) Modell.
  • DATASET_URI: URI Ihrer Dataset-Datei.
  • EVAL_DATASET_URI: (Optional) Der URI der JSONL-Datei, die das Bewertungs-Dataset für Batchvorhersage und -bewertung enthält. Die Bewertung wird für codechat-bison nicht unterstützt. Weitere Informationen finden Sie unter Dataset-Format zur Abstimmung eines Codemodells. Das Bewertungs-Dataset erfordert zwischen 10 und 250 Beispiele.
  • EVAL_INTERVAL: (Optional, Standard 20) Die Anzahl der Feinabstimmungsschritte zwischen den einzelnen Bewertungen. Ein Auswertungsintervall wird für Chatmodelle nicht unterstützt. Da die Bewertung für das gesamte Bewertungs-Dataset ausgeführt wird, führt ein kleineres Bewertungsintervall zu einer längeren Abstimmungszeit. Beispiel: Wenn steps 200 und EVAL_INTERVAL 100 ist, erhalten Sie nur zwei Datenpunkte für die Bewertungsmesswerte. Für diesen Parameter muss evaluation_data_uri festgelegt sein.
  • PIPELINE_JOB_REGION: Die Region, in der der Pipeline-Abstimmungsjob ausgeführt wird. Dies ist auch die Standardregion, in der das abgestimmte Modell hochgeladen wird. Wenn Sie Ihr Modell in eine andere Region hochladen möchten, verwenden Sie den location-Parameter, um die Uploadregion für das abgestimmte Modell anzugeben. Weitere Informationen finden Sie unter Pipelinejobregion.
  • MODEL_UPLOAD_REGION: (Optional) Die Region, in der das abgestimmte Modell hochgeladen wird. Wenn Sie keine Region für den Modellupload angeben, wird das abgestimmte Modell in die Region hochgeladen, in der der Pipelinejob ausgeführt wird. Weitere Informationen finden Sie unter Modelluploadregion.
  • ACCELERATOR_TYPE: (optional, Standard GPU) Der Beschleunigertyp, der für die Modelloptimierung verwendet werden soll. Gültige Optionen sind:
    • GPU: Verwendet acht A100 mit 80 GPUs zur Abstimmung. Achten Sie darauf, dass Ihr Kontingent ausreicht. Wenn Sie GPU auswählen, wird VPC-SC unterstützt. CMEK wird unterstützt, wenn Feinabstimmungs- und Modelluploadstandort us-centra1 sind. Weitere Informationen finden Sie unter Einstellungen für die überwachte Optimierungsregion. Wenn Sie GPU auswählen, werden die Berechnungen zur Modelloptimierung in der us-central1-Region durchgeführt.
    • TPU: Verwendet 64 Kerne des TPU v3-Pods für die Optimierung. Achten Sie darauf, dass Ihr Kontingent ausreicht. CMEK wird nicht unterstützt, aber VPC-SC wird unterstützt. Wenn Sie TPU wählen, werden die Berechnungen zur Modelloptimierung in der europe-west4-Region durchgeführt.
  • ENABLE_EARLY_STOPPING: (optional, Standard true) Ein boolean, der bei Einstellung auf true die Abstimmung vor der Ausführung aller Feinabstimmungsschritte beendet, falls sich die Modellleistung, gemessen über die Genauigkeit der vorhergesagten Tokens, zwischen den Auswertungsausführungen nicht verbessert. Bei false wird die Abstimmung fortgesetzt, bis alle Abstimmungsschritte abgeschlossen sind. Für diesen Parameter muss evaluation_data_uri festgelegt sein. Das Aktivieren des vorzeitigen Beendens wird für Chatmodelle nicht unterstützt.
  • ENABLE_CHECKPOINT_SELECTION: Ein Stringwert, der true, false oder default sein kann. Wenn dieser Wert auf „true“ gesetzt ist, wählt Vertex AI den Prüfpunkt mit der besten Modellbewertungsleistung von allen während des Abstimmungsjobs erstellten Prüfpunkten aus. Wenn dieser Wert auf „false“ gesetzt ist, wird der letzte Prüfpunkt zurückgegeben, der während des Abstimmungsjobs erstellt wurde. Jeder Prüfpunkt bezieht sich während eines Abstimmungsjobs auf einen Snapshot des Modells.
  • TENSORBOARD_RESOURCE_ID: (Optional) Die ID einer Vertex AI TensorBoard-Instanz. Die Vertex AI TensorBoard-Instanz wird verwendet, um nach Abschluss des Abstimmungsjobs einen Test zu erstellen. Die Vertex AI TensorBoard-Instanz muss sich in derselben Region wie die Abstimmungspipeline befinden.
  • ENCRYPTION_KEY_NAME: (optional) Der voll qualifizierte Name eines vom Kunden verwalteten Verschlüsselungsschlüssels (Customer-Managed Encryption Key, CMEK), den Sie für die Datenverschlüsselung verwenden möchten. Ein CMEK ist nur in us-central1 verfügbar. Wenn Sie us-central1 verwenden und keinen CMEK angeben, wird ein von Google verwalteter Verschlüsselungsschlüssel verwendet. Ein von Google verwalteter Verschlüsselungsschlüssel wird standardmäßig in allen anderen verfügbaren Regionen verwendet. Weitere Informationen finden Sie in der Übersicht zu CMEK.
  • STEPS: Die Anzahl der Schritte, die für die Abstimmung eines Modells ausgeführt werden sollen. Der Standardwert ist 300. Die Batchgröße variiert je nach Ort der Abstimmung und Modellgröße. Für 8.000-Modelle, z. B. text-bison@002, chat-bison@002, code-bison@002 und codechat-bison@002:
    • us-central1 hat eine Batchgröße von 8.
    • europe-west4 hat eine Batchgröße von 24.
    Für 32.000-Modelle wie text-bison-32k, chat-bison-32k, code-bison-32k und codechat-bison-32k:
    • us-central1 hat eine Batchgröße von 8.
    • europe-west4 hat eine Batchgröße von 8.

    Wenn Sie beispielsweise text-bison@002 in europe-west4 trainieren, gibt es 240 Beispiele in einem Trainings-Dataset und Sie setzen steps auf 20, dann beträgt die Anzahl der Trainingsbeispiele das Produkt aus 20 Schritten und die Batchgröße von 24 oder 480 Trainingsschritten. In diesem Fall umfasst der Trainingsprozess zwei Epochen, da die Beispiele zweimal durchlaufen werden. Wenn in us-central1 240 Beispiele in einem Trainings-Dataset vorhanden sind und Sie steps auf 15 setzen, beträgt die Anzahl der Trainingsbeispiele das Produkt aus 15 Schritten und der Batchgröße von 8 oder 120 Trainingsschritte. In diesem Fall gibt es 0,5 Epochen, da es halb so viele Trainingsschritte wie Beispiele gibt.

  • LEARNING_RATE_MULTIPLIER: Die Schrittgröße pro Durchlauf Der Standardwert ist 1.

HTTP-Methode und URL:

POST https://PIPELINE_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/PIPELINE_JOB_REGION/pipelineJobs

JSON-Text der Anfrage:

{
  "displayName": "PIPELINEJOB_DISPLAYNAME",
  "runtimeConfig": {
    "gcsOutputDirectory": "gs://OUTPUT_DIR",
    "parameterValues": {
      "project": "PROJECT_ID",
      "model_display_name": "MODEL_DISPLAYNAME",
      "dataset_uri": "gs://DATASET_URI",
      "evaluation_data_uri": "EVAL_DATASET_URI",
      "evaluation_interval": "EVAL_INTERVAL",
      "enable_early_stopping": "ENABLE_EARLY_STOPPING",
      "enable_checkpoint_selection": "ENABLE_CHECKPOINT_SELECTION",
      "tensorboard_resource_id": "TENSORBOARD_RESOURCE_ID",
      "location": "MODEL_UPLOAD_REGION",
      "accelerator_type": "ACCELERATOR_TYPE",
      "large_model_reference": "code-bison@002",
      "train_steps": STEPS,
      "learning_rate_multiplier": LEARNING_RATE_MULTIPLIER
    }
  }
  "templateUri": "https://us-kfp.pkg.dev/ml-pipeline/large-language-model-pipelines/tune-large-model/v3.0.0"
}

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://PIPELINE_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/PIPELINE_JOB_REGION/pipelineJobs"

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://PIPELINE_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/PIPELINE_JOB_REGION/pipelineJobs" | Select-Object -Expand Content

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten: Beachten Sie, dass pipelineSpec gekürzt wurde, um Speicherplatz zu sparen.

Console

Führen Sie folgende Schritte aus, um über die Google Cloud Console eine Codegenerierung oder ein Codechat-Modell mit überwachter Feinabstimmung zu optimieren:

  1. Rufen Sie im Bereich „Vertex AI“ der Google Cloud Console die Seite Vertex AI Studio auf.

    Zu Vertex AI Studio

  2. Klicken Sie auf den Tab Abstimmen und destillieren.
  3. Klicken Sie auf Abgestimmtes Modell erstellen.
  4. Klicken Sie auf Überwachte Feinabstimmung.
  5. Konfigurieren Sie die Modelldetails:
    • Name des abgestimmten Modells: Geben Sie einen Namen für das abgestimmte Modell ein.
    • Basismodell: Wählen Sie das Modell aus, das Sie anpassen möchten.
    • Region: Wählen Sie die Region aus, in der der Pipeline-Optimierungsjob ausgeführt und in der das abgestimmte Modell bereitgestellt wird.
    • Ausgabeverzeichnis: Geben Sie den Cloud Storage-Speicherort ein, an dem Artefakte gespeichert werden, nachdem Ihr Modell optimiert wurde.
  6. Maximieren Sie Erweiterte Optionen, um erweiterte Einstellungen zu konfigurieren.
    • Trainingsschritte: Geben Sie die Anzahl der Schritte ein, die zur Modellabstimmung ausgeführt werden sollen. Der Standardwert ist 300. Die Batchgröße variiert je nach Ort der Abstimmung und Modellgröße. Für 8.000-Modelle, z. B. text-bison@002, chat-bison@002, code-bison@002 und codechat-bison@002:
      • us-central1 hat eine Batchgröße von 8.
      • europe-west4 hat eine Batchgröße von 24.
      Für 32.000-Modelle wie text-bison-32k, chat-bison-32k, code-bison-32k und codechat-bison-32k:
      • us-central1 hat eine Batchgröße von 8.
      • europe-west4 hat eine Batchgröße von 8.

      Wenn Sie beispielsweise text-bison@002 in europe-west4 trainieren, gibt es 240 Beispiele in einem Trainings-Dataset und Sie setzen steps auf 20, dann beträgt die Anzahl der Trainingsbeispiele das Produkt aus 20 Schritten und die Batchgröße von 24 oder 480 Trainingsschritten. In diesem Fall umfasst der Trainingsprozess zwei Epochen, da die Beispiele zweimal durchlaufen werden. Wenn in us-central1 240 Beispiele in einem Trainings-Dataset vorhanden sind und Sie steps auf 15 setzen, beträgt die Anzahl der Trainingsbeispiele das Produkt aus 15 Schritten und der Batchgröße von 8 oder 120 Trainingsschritte. In diesem Fall gibt es 0,5 Epochen, da es halb so viele Trainingsschritte wie Beispiele gibt.

    • Multiplikator für die Lernrate: Geben Sie die Schrittgröße pro Durchlauf ein. Der Standardwert ist 1.
    • Beschleunigertyp: (Optional) Geben Sie den Typ des Beschleunigers ein, der für die Modelloptimierung verwendet werden soll. Gültige Optionen sind:
      • GPU: Verwendet acht A100 mit 80 GPUs zur Abstimmung. Achten Sie darauf, dass Ihr Kontingent ausreicht. Wenn Sie GPU auswählen, wird VPC-SC unterstützt. CMEK wird unterstützt, wenn Feinabstimmungs- und Modelluploadstandort us-centra1 sind. Weitere Informationen finden Sie unter Einstellungen für die überwachte Optimierungsregion. Wenn Sie GPU wählen, werden die Berechnungen zur Modelloptimierung in der us-central1-Region durchgeführt.
      • TPU: Verwendet 64 Kerne des TPU v3-Pods für die Optimierung. Achten Sie darauf, dass Ihr Kontingent ausreicht. CMEK wird nicht unterstützt, aber VPC-SC wird unterstützt. Wenn Sie TPU wählen, werden die Berechnungen zur Modelloptimierung in der europe-west4-Region durchgeführt.
    • TensorBoard-Instanz hinzufügen: (optional) Die ID einer Vertex AI TensorBoard-Instanz. Die Vertex AI TensorBoard-Instanz wird verwendet, um nach Abschluss des Abstimmungsjobs einen Test zu erstellen. Die Vertex AI TensorBoard-Instanz muss sich in derselben Region wie die Abstimmungspipeline befinden.
    • Verschlüsselung (optional) Wählen Sie aus, ob Sie einen von Google verwalteten Verschlüsselungsschlüssel oder einen vom Kunden verwalteten Verschlüsselungsschlüssel (CMEK) verwenden möchten. Ein CMEK ist nur für die Verschlüsselung in der Region us-central1 verfügbar. In allen anderen verfügbaren Regionen wird ein von Google verwalteter Verschlüsselungsschlüssel verwendet. Weitere Informationen finden Sie in der CMEK-Übersicht.
    • Dienstkonto (optional) Wählen Sie ein nutzerverwaltetes Dienstkonto aus. Ein Dienstkonto bestimmt, auf welche Google Cloud-Ressourcen Ihr Dienstcode zugreifen kann. Wenn Sie kein Dienstkonto auswählen, wird ein von Google verwaltetes Dienstkonto verwendet, das für die meisten Modelle passende Berechtigungen enthält.
  7. Klicken Sie auf Weiter.
  8. 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.

  9. (Optional) Wählen Sie Evaluierung des Modells aktivieren aus und konfigurieren Sie die Modellbewertung, um das destillierte Modell zu bewerten:
    • Bewertungs-Dataset: (optional) Der URI der JSONL-Datei, die das Bewertungs-Dataset für Batchvorhersage und -bewertung enthält. Die Bewertung wird für codechat-bison nicht unterstützt. Weitere Informationen finden Sie unter Dataset-Format zur Abstimmung eines Codemodells. Das Bewertungs-Dataset erfordert zwischen 10 und 250 Beispiele.
    • Bewertungs-Intervall: (optional, Standard 20) Die Anzahl der Abstimmungsschritte zwischen den einzelnen Bewertungen. Ein Auswertungsintervall wird für Chatmodelle nicht unterstützt. Da die Bewertung für das gesamte Bewertungs-Dataset ausgeführt wird, führt ein kleineres Bewertungsintervall zu einer längeren Abstimmungszeit. Beispiel: Wenn steps 200 und EVAL_INTERVAL 100 ist, erhalten Sie nur zwei Datenpunkte für die Bewertungsmesswerte. Für diesen Parameter muss evaluation_data_uri festgelegt sein.
    • Vorzeitiges Beenden aktivieren: (optional, Standardeinstellung true) Ein boolean, der bei Einstellung auf true die Abstimmung vor der Ausführung aller Feinabstimmungsschritte beendet, falls sich die Modellleistung, gemessen über die Genauigkeit der vorhergesagten Tokens, zwischen den Auswertungsausführungen nicht verbessert. Bei false wird die Abstimmung fortgesetzt, bis alle Abstimmungsschritte abgeschlossen sind. Für diesen Parameter muss evaluation_data_uri festgelegt sein. Das Aktivieren des vorzeitigen Beendens wird für Chatmodelle nicht unterstützt.
    • Prüfpunktauswahl aktivieren: Wenn diese Option aktiviert ist, wählt Vertex AI den Prüfpunkt mit der besten Modellbewertungsleistung von allen während des Abstimmungsjobs erstellten Prüfpunkten aus. Bei Deaktivierung wird der letzte Prüfpunkt zurückgegeben, der während des Abstimmungsjobs erstellt wurde. Jeder Prüfpunkt bezieht sich während eines Abstimmungsjobs auf einen Snapshot des Modells.
    • TensorBoard-ID: (Optional) Die ID einer Vertex AI TensorBoard-Instanz. Die Vertex AI TensorBoard-Instanz wird verwendet, um nach Abschluss des Abstimmungsjobs einen Test zu erstellen. Die Vertex AI TensorBoard-Instanz muss sich in derselben Region wie die Abstimmungspipeline befinden.
  10. Klicken Sie auf Abstimmung starten.

Python

Informationen zum Installieren oder Aktualisieren von Python finden Sie unter Vertex AI SDK für Python installieren. Weitere Informationen finden Sie in der Referenzdokumentation zur Python API.

from __future__ import annotations

from typing import Optional

from google.auth import default
from google.cloud import aiplatform
import pandas as pd
import vertexai
from vertexai.preview.language_models import CodeGenerationModel, TuningEvaluationSpec

credentials, _ = default(scopes=["https://www.googleapis.com/auth/cloud-platform"])

def tune_code_generation_model(
    project_id: str,
    location: str,
    training_data: pd.DataFrame | str,
    train_steps: int = 300,
    evaluation_dataset: Optional[str] = None,
    tensorboard_instance_name: Optional[str] = None,
) -> None:
    """Tune a new model, based on a prompt-response data.

    "training_data" can be either the GCS URI of a file formatted in JSONL format
    (for example: training_data=f'gs://{bucket}/{filename}.jsonl'), or a pandas
    DataFrame. Each training example should be JSONL record with two keys, for
    example:
      {
        "input_text": <input prompt>,
        "output_text": <associated output>
      },
    or the pandas DataFame should contain two columns:
      ['input_text', 'output_text']
    with rows for each training example.

    Args:
      project_id: GCP Project ID, used to initialize vertexai
      location: GCP Region, used to initialize vertexai
      training_data: GCS URI of jsonl file or pandas dataframe of training data
      train_steps: Number of training steps to use when tuning the model.
      evaluation_dataset: GCS URI of jsonl file of evaluation data.
      tensorboard_instance_name: The full name of the existing Vertex AI TensorBoard instance:
        projects/PROJECT_ID/locations/LOCATION_ID/tensorboards/TENSORBOARD_INSTANCE_ID
        Note that this instance must be in the same region as your tuning job.
    """
    vertexai.init(project=project_id, location=location, credentials=credentials)
    eval_spec = TuningEvaluationSpec(evaluation_data=evaluation_dataset)
    eval_spec.tensorboard = aiplatform.Tensorboard(
        tensorboard_name=tensorboard_instance_name
    )
    model = CodeGenerationModel.from_pretrained("code-bison@001")

    model.tune_model(
        training_data=training_data,
        # Optional:
        train_steps=train_steps,
        tuning_job_location="europe-west4",
        tuned_model_location=location,
        tuning_evaluation_spec=eval_spec,
    )

    print(model._job.status)
    return model

Beispiel für einen curl-Befehl zum Optimieren eines Codegenerierungs-Modells

PROJECT_ID=myproject
DATASET_URI=gs://my-gcs-bucket-uri/dataset
EVAL_DATASET_URI=gs://cloud-samples-data/vertex-ai/model-evaluation/eval_sample.jsonl
OUTPUT_DIR=gs://my-gcs-bucket-uri/output
ACCELERATOR_TYPE=GPU
LOCATION=us-central1

curl \
-X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
"https://${REGION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${REGION}/pipelineJobs?pipelineJobId=tune-large-model-$(date +%Y%m%d%H%M%S)" -d \
$'{
  "displayName": "'${PIPELINE_NAME}'",
  "runtimeConfig": {
    "gcsOutputDirectory": "'${OUTPUT_DIR}'",
    "parameterValues": {
      "project": "'${PROJECT_ID}'",
      "model_display_name": "The display name for your model in the UI",
      "dataset_uri": "'${DATASET_URI}'",
      "evaluation_data_uri:": "'${EVAL_DATASET_URI}'",
      "location": "'${LOCATION}'",
      "accelerator_type": "'${ACCELERATOR_TYPE}'",
      "large_model_reference": "code-bison@002",
      "learning_rate_multiplier": 1,
      "train_steps": 300
    }
  },
  "templateUri": "https://us-kfp.pkg.dev/ml-pipeline/large-language-model-pipelines/tune-large-model/v3.0.0"
}'

OPtimierungsjob für Code-Chatmodelle erstellen

Im Folgenden wird gezeigt, wie Sie mit der Google Cloud Console oder den REST API-Befehlen einen Job zur Optimierung eines Codechat-Modells erstellen.

REST

Senden Sie zum Erstellen eines Jobs zur Optimierung eines Codechat-Modells eine POST-Anfrage mit der Methode pipelineJobs.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_ID: Ihre Projekt-ID.
  • TUNINGPIPELINE_DISPLAYNAME: Ein Anzeigename für den pipelineJob.
  • OUTPUT_DIR: Der URI des Buckets, an den Pipelineartefakte ausgegeben werden sollen.
  • PIPELINE_JOB_REGION: Die Region, in der der Pipeline-Abstimmungsjob ausgeführt wird. Dies ist auch die Standardregion, in der das abgestimmte Modell hochgeladen wird. Wenn Sie Ihr Modell in eine andere Region hochladen möchten, verwenden Sie den location-Parameter, um die Uploadregion für das abgestimmte Modell anzugeben. Weitere Informationen finden Sie unter Pipelinejobregion.
  • MODEL_UPLOAD_REGION: (Optional) Die Region, in der das abgestimmte Modell hochgeladen wird. Wenn Sie keine Region für den Modellupload angeben, wird das abgestimmte Modell in die Region hochgeladen, in der der Pipelinejob ausgeführt wird. Weitere Informationen finden Sie unter Modelluploadregion.
  • ACCELERATOR_TYPE: (optional, Standard GPU) Der Beschleunigertyp, der für die Modelloptimierung verwendet werden soll. Gültige Optionen sind:
    • GPU: Verwendet acht A100 mit 80 GPUs zur Abstimmung. Achten Sie darauf, dass Ihr Kontingent ausreicht. Wenn Sie GPU auswählen, wird VPC-SC unterstützt. CMEK wird unterstützt, wenn Feinabstimmungs- und Modelluploadstandort us-centra1 sind. Weitere Informationen finden Sie unter Einstellungen für die überwachte Optimierungsregion. Wenn Sie GPU auswählen, werden die Berechnungen zur Modelloptimierung in der us-central1-Region durchgeführt.
    • TPU: Verwendet 64 Kerne des TPU v3-Pods für die Optimierung. Achten Sie darauf, dass Ihr Kontingent ausreicht. CMEK wird nicht unterstützt, aber VPC-SC wird unterstützt. Wenn Sie TPU wählen, werden die Berechnungen zur Modelloptimierung in der europe-west4-Region durchgeführt.
  • MODEL_DISPLAYNAME: Ein Anzeigename für das von der Pipelinejob hochgeladene (erstellte) Modell.
  • DATASET_URI: URI Ihrer Dataset-Datei.
  • TENSORBOARD_RESOURCE_ID: (Optional) Die ID einer Vertex AI TensorBoard-Instanz. Die Vertex AI TensorBoard-Instanz wird verwendet, um nach Abschluss des Abstimmungsjobs einen Test zu erstellen. Die Vertex AI TensorBoard-Instanz muss sich in derselben Region wie die Abstimmungspipeline befinden.
  • ENCRYPTION_KEY_NAME: (optional) Der voll qualifizierte Name eines vom Kunden verwalteten Verschlüsselungsschlüssels (Customer-Managed Encryption Key, CMEK), den Sie für die Datenverschlüsselung verwenden möchten. Ein CMEK ist nur in us-central1 verfügbar. Wenn Sie us-central1 verwenden und keinen CMEK angeben, wird ein von Google verwalteter Verschlüsselungsschlüssel verwendet. Ein von Google verwalteter Verschlüsselungsschlüssel wird standardmäßig in allen anderen verfügbaren Regionen verwendet. Weitere Informationen finden Sie in der Übersicht zu CMEK.
  • DEFAULT_CONTEXT: Der Kontext, der für alle Feinabstimmungsbeispiele im Abstimmungs-Dataset gilt. Wenn Sie in einem Beispiel das context-Feld festlegen, wird der Standardkontext überschrieben.
  • STEPS: Die Anzahl der Schritte, die für die Abstimmung eines Modells ausgeführt werden sollen. Der Standardwert ist 300. Die Batchgröße variiert je nach Ort der Abstimmung und Modellgröße. Für 8.000-Modelle, z. B. text-bison@002, chat-bison@002, code-bison@002 und codechat-bison@002:
    • us-central1 hat eine Batchgröße von 8.
    • europe-west4 hat eine Batchgröße von 24.
    Für 32.000-Modelle wie text-bison-32k, chat-bison-32k, code-bison-32k und codechat-bison-32k:
    • us-central1 hat eine Batchgröße von 8.
    • europe-west4 hat eine Batchgröße von 8.

    Wenn Sie beispielsweise text-bison@002 in europe-west4 trainieren, gibt es 240 Beispiele in einem Trainings-Dataset und Sie setzen steps auf 20, dann beträgt die Anzahl der Trainingsbeispiele das Produkt aus 20 Schritten und die Batchgröße von 24 oder 480 Trainingsschritten. In diesem Fall umfasst der Trainingsprozess zwei Epochen, da die Beispiele zweimal durchlaufen werden. Wenn in us-central1 240 Beispiele in einem Trainings-Dataset vorhanden sind und Sie steps auf 15 setzen, beträgt die Anzahl der Trainingsbeispiele das Produkt aus 15 Schritten und der Batchgröße von 8 oder 120 Trainingsschritte. In diesem Fall gibt es 0,5 Epochen, da es halb so viele Trainingsschritte wie Beispiele gibt.

  • LEARNING_RATE_MULTIPLIER Die Schrittgröße pro Durchlauf Der Standardwert ist 1.

HTTP-Methode und URL:

POST https://PIPELINE_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/PIPELINE_JOB_REGION/pipelineJobs

JSON-Text der Anfrage:

{
  "displayName": "PIPELINEJOB_DISPLAYNAME",
  "runtimeConfig": {
    "gcsOutputDirectory": "gs://OUTPUT_DIR",
    "parameterValues": {
      "project": "PROJECT_ID",
      "model_display_name": "MODEL_DISPLAYNAME",
      "dataset_uri": "gs://DATASET_URI",
      "tensorboard_resource_id": "TENSORBOARD_RESOURCE_ID",
      "location": "MODEL_UPLOAD_REGION",
      "accelerator_type": "ACCELERATOR_TYPE",
      "large_model_reference": "codechat-bison@002",
      "default_context": "DEFAULT_CONTEXT",
      "train_steps": STEPS,
      "learning_rate_multiplier": LEARNING_RATE_MULTIPLIER
    }
  },
  "templateUri": "https://us-kfp.pkg.dev/ml-pipeline/large-language-model-pipelines/tune-large-chat-model/v3.0.0"
}

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://PIPELINE_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/PIPELINE_JOB_REGION/pipelineJobs"

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://PIPELINE_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/PIPELINE_JOB_REGION/pipelineJobs" | Select-Object -Expand Content

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:
Beachten Sie, dass pipelineSpec gekürzt wurde, um Speicherplatz zu sparen.

Console

Führen Sie folgende Schritte aus, um über die Google Cloud Console eine Codegenerierung oder ein Codechat-Modell mit überwachter Feinabstimmung zu optimieren:

  1. Rufen Sie im Bereich „Vertex AI“ der Google Cloud Console die Seite Vertex AI Studio auf.

    Zu Vertex AI Studio

  2. Klicken Sie auf den Tab Abstimmen und destillieren.
  3. Klicken Sie auf Abgestimmtes Modell erstellen.
  4. Klicken Sie auf Überwachte Feinabstimmung.
  5. Konfigurieren Sie die Modelldetails:
    • Name des abgestimmten Modells: Geben Sie einen Namen für das abgestimmte Modell ein.
    • Basismodell: Wählen Sie das Modell aus, das Sie anpassen möchten.
    • Region: Wählen Sie die Region aus, in der der Pipeline-Optimierungsjob ausgeführt und in der das abgestimmte Modell bereitgestellt wird.
    • Ausgabeverzeichnis: Geben Sie den Cloud Storage-Speicherort ein, an dem Artefakte gespeichert werden, nachdem Ihr Modell optimiert wurde.
  6. Maximieren Sie Erweiterte Optionen, um erweiterte Einstellungen zu konfigurieren.
    • Trainingsschritte: Geben Sie die Anzahl der Schritte ein, die zur Modellabstimmung ausgeführt werden sollen. Der Standardwert ist 300. Die Batchgröße variiert je nach Ort der Abstimmung und Modellgröße. Für 8.000-Modelle, z. B. text-bison@002, chat-bison@002, code-bison@002 und codechat-bison@002:
      • us-central1 hat eine Batchgröße von 8.
      • europe-west4 hat eine Batchgröße von 24.
      Für 32.000-Modelle wie text-bison-32k, chat-bison-32k, code-bison-32k und codechat-bison-32k:
      • us-central1 hat eine Batchgröße von 8.
      • europe-west4 hat eine Batchgröße von 8.

      Wenn Sie beispielsweise text-bison@002 in europe-west4 trainieren, gibt es 240 Beispiele in einem Trainings-Dataset und Sie setzen steps auf 20, dann beträgt die Anzahl der Trainingsbeispiele das Produkt aus 20 Schritten und die Batchgröße von 24 oder 480 Trainingsschritten. In diesem Fall umfasst der Trainingsprozess zwei Epochen, da die Beispiele zweimal durchlaufen werden. Wenn in us-central1 240 Beispiele in einem Trainings-Dataset vorhanden sind und Sie steps auf 15 setzen, beträgt die Anzahl der Trainingsbeispiele das Produkt aus 15 Schritten und der Batchgröße von 8 oder 120 Trainingsschritte. In diesem Fall gibt es 0,5 Epochen, da es halb so viele Trainingsschritte wie Beispiele gibt.

    • Multiplikator für die Lernrate: Geben Sie die Schrittgröße pro Durchlauf ein. Der Standardwert ist 1.
    • Beschleunigertyp: (Optional) Geben Sie den Typ des Beschleunigers ein, der für die Modelloptimierung verwendet werden soll. Gültige Optionen sind:
      • GPU: Verwendet acht A100 mit 80 GPUs zur Abstimmung. Achten Sie darauf, dass Ihr Kontingent ausreicht. Wenn Sie GPU auswählen, wird VPC-SC unterstützt. CMEK wird unterstützt, wenn Feinabstimmungs- und Modelluploadstandort us-centra1 sind. Weitere Informationen finden Sie unter Einstellungen für die überwachte Optimierungsregion. Wenn Sie GPU wählen, werden die Berechnungen zur Modelloptimierung in der us-central1-Region durchgeführt.
      • TPU: Verwendet 64 Kerne des TPU v3-Pods für die Optimierung. Achten Sie darauf, dass Ihr Kontingent ausreicht. CMEK wird nicht unterstützt, aber VPC-SC wird unterstützt. Wenn Sie TPU wählen, werden die Berechnungen zur Modelloptimierung in der europe-west4-Region durchgeführt.
    • TensorBoard-Instanz hinzufügen: (optional) Die ID einer Vertex AI TensorBoard-Instanz. Die Vertex AI TensorBoard-Instanz wird verwendet, um nach Abschluss des Abstimmungsjobs einen Test zu erstellen. Die Vertex AI TensorBoard-Instanz muss sich in derselben Region wie die Abstimmungspipeline befinden.
    • Verschlüsselung (optional) Wählen Sie aus, ob Sie einen von Google verwalteten Verschlüsselungsschlüssel oder einen vom Kunden verwalteten Verschlüsselungsschlüssel (CMEK) verwenden möchten. Ein CMEK ist nur für die Verschlüsselung in der Region us-central1 verfügbar. In allen anderen verfügbaren Regionen wird ein von Google verwalteter Verschlüsselungsschlüssel verwendet. Weitere Informationen finden Sie in der CMEK-Übersicht.
    • Dienstkonto (optional) Wählen Sie ein nutzerverwaltetes Dienstkonto aus. Ein Dienstkonto bestimmt, auf welche Google Cloud-Ressourcen Ihr Dienstcode zugreifen kann. Wenn Sie kein Dienstkonto auswählen, wird ein von Google verwaltetes Dienstkonto verwendet, das für die meisten Modelle passende Berechtigungen enthält.
  7. Klicken Sie auf Weiter.
  8. 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.

  9. (Optional) Wählen Sie Evaluierung des Modells aktivieren aus und konfigurieren Sie die Modellbewertung, um das destillierte Modell zu bewerten:
    • Bewertungs-Dataset: (optional) Der URI der JSONL-Datei, die das Bewertungs-Dataset für Batchvorhersage und -bewertung enthält. Die Bewertung wird für codechat-bison nicht unterstützt. Weitere Informationen finden Sie unter Dataset-Format zur Abstimmung eines Codemodells. Das Bewertungs-Dataset erfordert zwischen 10 und 250 Beispiele.
    • Bewertungs-Intervall: (optional, Standard 20) Die Anzahl der Abstimmungsschritte zwischen den einzelnen Bewertungen. Ein Auswertungsintervall wird für Chatmodelle nicht unterstützt. Da die Bewertung für das gesamte Bewertungs-Dataset ausgeführt wird, führt ein kleineres Bewertungsintervall zu einer längeren Abstimmungszeit. Beispiel: Wenn steps 200 und EVAL_INTERVAL 100 ist, erhalten Sie nur zwei Datenpunkte für die Bewertungsmesswerte. Für diesen Parameter muss evaluation_data_uri festgelegt sein.
    • Vorzeitiges Beenden aktivieren: (optional, Standardeinstellung true) Ein boolean, der bei Einstellung auf true die Abstimmung vor der Ausführung aller Feinabstimmungsschritte beendet, falls sich die Modellleistung, gemessen über die Genauigkeit der vorhergesagten Tokens, zwischen den Auswertungsausführungen nicht verbessert. Bei false wird die Abstimmung fortgesetzt, bis alle Abstimmungsschritte abgeschlossen sind. Für diesen Parameter muss evaluation_data_uri festgelegt sein. Das Aktivieren des vorzeitigen Beendens wird für Chatmodelle nicht unterstützt.
    • Prüfpunktauswahl aktivieren: Wenn diese Option aktiviert ist, wählt Vertex AI den Prüfpunkt mit der besten Modellbewertungsleistung von allen während des Abstimmungsjobs erstellten Prüfpunkten aus. Bei Deaktivierung wird der letzte Prüfpunkt zurückgegeben, der während des Abstimmungsjobs erstellt wurde. Jeder Prüfpunkt bezieht sich während eines Abstimmungsjobs auf einen Snapshot des Modells.
    • TensorBoard-ID: (Optional) Die ID einer Vertex AI TensorBoard-Instanz. Die Vertex AI TensorBoard-Instanz wird verwendet, um nach Abschluss des Abstimmungsjobs einen Test zu erstellen. Die Vertex AI TensorBoard-Instanz muss sich in derselben Region wie die Abstimmungspipeline befinden.
  10. Klicken Sie auf Abstimmung starten.

Beispiel für einen curl-Befehl zum Optimieren eines Codechat-Modells

PROJECT_ID=myproject
DATASET_URI=gs://my-gcs-bucket-uri/dataset
OUTPUT_DIR=gs://my-gcs-bucket-uri/output
ACCELERATOR_TYPE=GPU
LOCATION=us-central1

curl \
-X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
"https://${REGION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${REGION}/pipelineJobs?pipelineJobId=tune-large-chat-model-$(date +%Y%m%d%H%M%S)" -d \
$'{
  "displayName": "'${PIPELINE_NAME}'",
  "runtimeConfig": {
    "gcsOutputDirectory": "'${OUTPUT_DIR}'",
    "parameterValues": {
      "project": "'${PROJECT_ID}'",
      "model_display_name": "your-model-display-name",
      "dataset_uri": "'${DATASET_URI}'",
      "location": "'${LOCATION}'",
      "large_model_reference": "codechat-bison@002",
      "train_steps": 300,
      "learning_rate_multiplier": 1,
      "encryption_spec_key_name": "projects/myproject/locations/us-central1/keyRings/sample-key/cryptoKeys/sample-key"
    }
  },
  "encryptionSpec": {
    "kmsKeyName": "projects/myproject/locations/us-central1/keyRings/sample-key/cryptoKeys/sample-key"
  "templateUri": "https://us-kfp.pkg.dev/ml-pipeline/large-language-model-pipelines/tune-large-chat-model/v3.0.0"
}'

Die folgende Tabelle zeigt die empfohlenen Konfigurationen zum Abstimmen eines Codemodells nach Aufgabe:

Task Anzahl der Beispiele im Datensatz Trainingsschritte
Codegenerierung 500+ 200-1000
Codechat 500+ 200-1000

Als Trainingsschritten können Sie mehr als einen Wert ausprobieren, um die beste Leistung für ein bestimmtes Dataset zu erhalten, z. B. 100, 200, 500.

Liste der optimierten Modelle anzeigen

Sie können die Google Cloud Console oder das Vertex AI SDK für Python verwenden, um eine Liste Ihrer optimierten Codemodelle in Ihrem aktuellen Projekt aufzurufen.

Liste der optimierten Codemodelle anzeigen (Console)

Rufen Sie die Seite Vertex AI Model Registry auf, um Ihre optimierten Codechat- und Codegenerierungsmodelle in der Google Cloud Console aufzurufen.

Zur Vertex AI Model Registry

Liste der optimierten Codegenerierungsmodelle (SDK) anzeigen

Der folgende Beispielcode verwendet das Vertex AI SDK für Python, um die abgestimmten Codegenerierungsmodelle in Ihrem aktuellen Projekt aufzulisten:

import vertexai
from vertexai.preview.language_models import CodeGenerationModel

model = CodeGenerationModel.from_pretrained("code-bison@002").list_tuned_model_names()

Liste der optimierten Code-Chat-Modelle anzeigen (SDK)

Der folgende Beispielcode verwendet das Vertex AI SDK für Python, um die abgestimmten Codechat-Modelle in Ihrem aktuellen Projekt aufzulisten:

import vertexai
from vertexai.preview.language_models import CodeChatModel

model = CodeChatModel.from_pretrained("codechat-bison@002").list_tuned_model_names()

Feinabgestimmtes Modell laden

Sie können das Vertex AI SDK für Python verwenden, um ein feinabgestimmtes Codemodell zu laden.

Ein optimiertes Codegenerierungs-Modell laden

Im folgenden Beispielcode wird das Vertex AI SDK für Python verwendet, um ein optimiertes Codegenerierungs-Modell zu laden. Ersetzen Sie im Beispielcode TUNED_MODEL_NAME durch den qualifizierten Ressourcennamen Ihres feinabgestimmten Modells. Dieser Name hat das Format projects/PROJECT_ID/locations/LOCATION/models/MODEL_ID. Die Modell-ID Ihres feinabgestimmten Modells finden Sie in Vertex AI Model Registry.

import vertexai
from vertexai.preview.language_models import CodeGenerationModel

model = CodeGenerationModel.get_tuned_model(TUNED_MODEL_NAME)

Feinabstimmtes Code-Chat-Modell laden

Im folgenden Beispielcode wird das Vertex AI SDK für Python verwendet, um ein optimiertes Codechat-Modell zu laden.

import vertexai
from vertexai.preview.language_models import CodeChatModel

model = CodeChatModel.get_tuned_model(TUNED_MODEL_NAME)

Messwerte für die Abstimmung und Evaluierung

Sie können einen Modellabstimmungsjob konfigurieren, um Messwerte zur Modellabstimmung und Modellbewertung zu erfassen und zu melden. Diese können dann mit Vertex AI TensorBoard visualisiert werden.

Messwerte für die Modellabstimmung

Sie können einen Modellabstimmungsjob konfigurieren, um die folgenden Abstimmungsmesswerte für chat-bison, code-bison, codechat-bison und text-bison zu erfassen:
  • /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

Modellbewertungsmesswerte

Sie können einen Modellabstimmungsjob konfigurieren, um die folgenden Bewertungsmesswerte für code-bison und text-bison zu erfassen:

  • /eval_total_loss: Verlust für das Bewertungs-Dataset in einem Bewertungsschritt.
  • /eval_fraction_of_correct_next_step_preds: Die Tokengenauigkeit in einem Auswertungsschritt. Eine einzelne Vorhersage besteht aus einer Abfolge von Tokens. Dieser Messwert misst die Genauigkeit der vorhergesagten Tokens im Vergleich zum Ground Truth im Bewertungs-Dataset.
  • /eval_num_predictions: Anzahl der vorhergesagten Tokens in einem Bewertungsschritt.

Die Messwertvisualisierungen sind verfügbar, nachdem der Modellabstimmungsjob abgeschlossen ist. Wenn Sie beim Erstellen des Abstimmungsjobs nur eine Vertex AI TensorBoard-Instanz-ID und kein Bewertungs-Dataset angeben, sind nur die Visualisierungen für die Abstimmungsmesswerte verfügbar.

Kontingent

Die Abstimmungsjobs in us-central1 verwenden acht A100-GPUs mit 80 GB.

Feinabstimmungsjobs in europe-west4 verwenden 64 Kerne der benutzerdefinierten TPU v3 pod-Trainingsmodellressource.

Wenn Sie kein ausreichendes Kontingent haben oder mehrere gleichzeitige Abstimmungsjobs in Ihrem Google Cloud-Projekt ausführen möchten, müssen Sie zusätzliche Kontingente anfordern:

  • Senden Sie für us-central1 eine Anfrage für Restricted image training Nvidia A100 80 GB GPUs per region in der us-central1-Region mit einem Vielfachen von acht.

  • Senden Sie für europe-west4 eine Anfrage für Restricted image training TPU V3 pod cores per region in der europe-west4-Region mit einem Vielfachen von 64.

Nächste Schritte

  • Weitere Modelle, erweiterte Features und die Möglichkeit, Dateien bis zu acht Stunden zu transkribieren, finden Sie unter Speech-to-Text.