Kontinuierliche Abstimmung für Gemini-Modelle verwenden

Mit der kontinuierlichen Abstimmung können Sie ein bereits abgestimmtes Modell oder einen Modellprüfpunkt weiter abstimmen, indem Sie weitere Epochen oder Trainingsbeispiele hinzufügen. Wenn Sie ein bereits abgestimmtes Modell oder einen Prüfpunkt als Basismodell verwenden, können Sie effizienter mit der Abstimmung experimentieren.

Sie können die kontinuierliche Abstimmung für folgende Zwecke verwenden:

  • Abstimmung mit mehr Daten, wenn ein vorhandenes abgestimmtes Modell nicht gut genug ist. nicht gut genug ist.
  • Leistung steigern oder Modell mit neuen Daten auf dem neuesten Stand halten.
  • Vorhandenes abgestimmtes Modell weiter anpassen.

Die folgenden Gemini-Modelle unterstützen die kontinuierliche Abstimmung:

Klicken Sie, um die unterstützten Modelle zu maximieren.

Ausführliche Informationen zu Gemini-Modellversionen finden Sie unter Google-Modelle und Modellversionen und Lebenszyklus.

Kontinuierliche Abstimmung konfigurieren

Beachten Sie beim Erstellen eines Jobs für die kontinuierliche Abstimmung Folgendes:

  • Die kontinuierliche Abstimmung wird im Google Gen AI SDK unterstützt. Im Agent Platform SDK für Python wird sie nicht unterstützt.
  • Sie müssen einen Modellressourcennamen angeben:

    • In der Google Cloud Console wird der Modellressourcenname auf der Gemini Enterprise Agent Platform Tuning Seite im Feld Tuning details > Model Name angezeigt.
    • Der Modellressourcenname hat das folgende Format:
    projects/{project}/locations/{location}/models/{modelId}@{version_id}
    
    • {version_id} ist optional und kann entweder die generierte Versions-ID oder ein vom Nutzer angegebener Versionsalias sein. Wenn sie nicht angegeben wird, wird die Standardversion verwendet.
  • Wenn Sie keine Modellversion angeben, wird die Standardversion verwendet.

  • Wenn Sie einen Prüfpunkt als Basismodell verwenden und keine Prüfpunkt-ID angeben, wird der Standardprüfpunkt verwendet. Weitere Informationen finden Sie unter Prüfpunkte bei der überwachten Feinabstimmung für Gemini-Modelle verwenden. In der Google Cloud Console finden Sie den Standardprüfpunkt so:

    1. Zur Seite Model Registry
    2. Klicken Sie auf den Modellnamen für das Modell.
    3. Klicken Sie auf Alle Versionen ansehen.
    4. Klicken Sie auf die gewünschte Version, um eine Liste der Prüfpunkte aufzurufen. Der Standardprüfpunkt wird durch das Wort default neben der Prüfpunkt-ID gekennzeichnet.
  • Standardmäßig wird eine neue Modellversion unter demselben übergeordneten Modell wie das vorabgestimmte Modell erstellt. Wenn Sie einen neuen Anzeigenamen für das abgestimmte Modell angeben, wird ein neues Modell erstellt.

  • Nur Basismodelle für die überwachte Abstimmung, die am oder nach dem 11. Juli 2025 abgestimmt wurden, können als Basismodelle für die kontinuierliche Abstimmung verwendet werden.

  • Wenn Sie kundenverwaltete Verschlüsselungsschlüssel (Customer-managed Encryption Keys, CMEK), verwenden, muss für den Job für die kontinuierliche Abstimmung derselbe CMEK verwendet werden, der auch für den Abstimmungs job für das vorabgestimmte Modell verwendet wurde.

Console

So konfigurieren Sie die kontinuierliche Abstimmung für ein vorabgestimmtes Modell über die Google Cloud Console:

  1. Rufen Sie im Bereich Gemini Enterprise Agent Platform der Google Cloud Console die Seite Agent Platform Studio auf.

    Zu Agent Platform Studio

  2. Klicken Sie auf Abgestimmtes Modell erstellen.

  3. Konfigurieren Sie unter Modelldetails Folgendes:

    1. Wählen Sie Bereits abgestimmtes Modell weiter abstimmen aus.
    2. Wählen Sie im Feld Vorabgestimmtes Modell den Namen des vorabgestimmten Modells aus.
    3. Wenn das Modell mindestens einen Prüfpunkt hat, wird das Drop-down-Feld Prüfpunkt angezeigt. Wählen Sie den gewünschten Prüfpunkt aus.
  4. Klicken Sie auf Weiter.

REST

Senden Sie zum Konfigurieren der kontinuierlichen Abstimmung eine POST-Anfrage mit der tuningJobs.create Methode. Einige Parameter werden nicht von allen Modellen unterstützt. Achten Sie darauf, dass Sie nur die für das abzustimmende Modell relevanten Parameter einfügen.

Ersetzen Sie folgende Werte in den Anfragedaten:

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:

{
  "preTunedModel": {
      "tunedModelName": "TUNED_MODEL_NAME",
      "checkpointId": "CHECKPOINT_ID",
  },
  "supervisedTuningSpec" : {
      "trainingDatasetUri": "TRAINING_DATASET_URI",
      "validationDatasetUri": "VALIDATION_DATASET_URI",
      "hyperParameters": {
          "epochCount": EPOCH_COUNT,
          "adapterSize": "ADAPTER_SIZE",
          "learningRateMultiplier": "LEARNING_RATE_MULTIPLIER"
      },
      "exportLastCheckpointOnly": EXPORT_LAST_CHECKPOINT_ONLY,
      "evaluationConfig": {
          "metrics": [
              {
                  "aggregation_metrics": ["AVERAGE", "STANDARD_DEVIATION"],
                  "METRIC_SPEC": {
                      "METRIC_SPEC_FIELD_NAME":
                          METRIC_SPEC_FIELD_CONTENT
                  }
              },
          ],
          "outputConfig": {
              "gcs_destination": {
                  "output_uri_prefix": "CLOUD_STORAGE_BUCKET"
              }
          },
      },
  },
  "tunedModelDisplayName": "TUNED_MODEL_DISPLAYNAME",
  "encryptionSpec": {
    "kmsKeyName": "KMS_KEY_NAME"
  },
  "serviceAccount": "SERVICE_ACCOUNT"
}

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:

Beispiel: cURL-Befehls

PROJECT_ID=myproject
LOCATION=global
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 \
$'{
   "preTunedModel": "gemini-3.5-flash",
   "supervisedTuningSpec" : {
      "trainingDatasetUri": "gs://cloud-samples-data/ai-platform/generative_ai/gemini/text/sft_train_data.jsonl",
      "validationDatasetUri": "gs://cloud-samples-data/ai-platform/generative_ai/gemini/text/sft_validation_data.jsonl"
   },
   "tunedModelDisplayName": "tuned_gemini"
}'

Google Gen AI SDK

Im folgenden Beispiel wird gezeigt, wie Sie die kontinuierliche Abstimmung mit dem Google Gen AI SDK konfigurieren.

import time

from google import genai
from google.genai.types import HttpOptions, TuningDataset, CreateTuningJobConfig

# TODO(developer): Update and un-comment below line
# tuned_model_name = "projects/123456789012/locations/us-central1/models/1234567890@1"
# checkpoint_id = "1"

client = genai.Client(http_options=HttpOptions(api_version="v1beta1"))

training_dataset = TuningDataset(
    gcs_uri="gs://cloud-samples-data/ai-platform/generative_ai/gemini/text/sft_train_data.jsonl",
)
validation_dataset = TuningDataset(
    gcs_uri="gs://cloud-samples-data/ai-platform/generative_ai/gemini/text/sft_validation_data.jsonl",
)

tuning_job = client.tunings.tune(
    base_model=tuned_model_name,  # Note: Using a Tuned Model
    training_dataset=training_dataset,
    config=CreateTuningJobConfig(
        tuned_model_display_name="Example tuning job",
        validation_dataset=validation_dataset,
        pre_tuned_model_checkpoint_id=checkpoint_id,
    ),
)

running_states = set([
    "JOB_STATE_PENDING",
    "JOB_STATE_RUNNING",
])

while tuning_job.state in running_states:
    print(tuning_job.state)
    tuning_job = client.tunings.get(name=tuning_job.name)
    time.sleep(60)

print(tuning_job.tuned_model.model)
print(tuning_job.tuned_model.endpoint)
print(tuning_job.experiment)
# Example response:
# projects/123456789012/locations/us-central1/models/1234567890@2
# projects/123456789012/locations/us-central1/endpoints/123456789012345
# projects/123456789012/locations/us-central1/metadataStores/default/contexts/tuning-experiment-2025010112345678

if tuning_job.tuned_model.checkpoints:
    for i, checkpoint in enumerate(tuning_job.tuned_model.checkpoints):
        print(f"Checkpoint {i + 1}: ", checkpoint)
    # Example response:
    # Checkpoint 1:  checkpoint_id='1' epoch=1 step=10 endpoint='projects/123456789012/locations/us-central1/endpoints/123456789000000'
    # Checkpoint 2:  checkpoint_id='2' epoch=2 step=20 endpoint='projects/123456789012/locations/us-central1/endpoints/123456789012345'