Kontinuierliche Abstimmung für Gemini-Modelle verwenden

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

Sie können das kontinuierliche Tuning für die folgenden Zwecke verwenden:

  • Um ein vorhandenes abgestimmtes Modell mit mehr Daten abzustimmen, wenn es nicht ausreichend angepasst ist.
  • Um die Leistung zu steigern oder das Modell mit neuen Daten auf dem neuesten Stand zu halten.
  • Ein vorhandenes abgestimmtes Modell weiter anpassen.

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

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

Kontinuierliches Optimieren konfigurieren

Beachten Sie beim Erstellen eines Jobs für das kontinuierliche Feinabstimmen Folgendes:

  • Das kontinuierliche Fine-Tuning wird im Google Gen AI SDK unterstützt. Es wird im Vertex AI SDK für Python nicht unterstützt.
  • Sie müssen einen Modellressourcennamen angeben:

    • In der Google Cloud Console wird der Modellressourcenname auf der Seite Vertex AI Tuning im Feld Tuning-Details > Modellname angezeigt.
    • Der Name der Modellressource 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 bereitgestellter Versionsalias sein. Wenn nichts angegeben ist, 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 Checkpoints bei der überwachten Feinabstimmung für Gemini-Modelle verwenden. In der Google Cloud Console finden Sie den Standard-Checkpoint so:

    1. Rufen Sie die Seite „Model Registry“ auf.
    2. Klicken Sie auf den Modellnamen des Modells.
    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 vortrainierte Modell erstellt. Wenn Sie einen neuen Anzeigenamen für das abgestimmte Modell angeben, wird ein neues Modell erstellt.

  • Nur auf oder nach dem 11. Juli 2025 abgestimmte Basismodelle für die überwachte Feinabstimmung können als Basismodelle für die kontinuierliche Feinabstimmung verwendet werden.

  • Wenn Sie vom Kunden verwaltete Verschlüsselungsschlüssel (Customer-Managed Encryption Keys, CMEK) verwenden, muss für den kontinuierlichen Abstimmungsjob derselbe CMEK verwendet werden wie für den Abstimmungsjob für das vorab abgestimmte Modell.

Console

Führen Sie die folgenden Schritte aus, um die kontinuierliche Feinabstimmung für ein vorab abgestimmtes Modell über dieGoogle Cloud Console zu konfigurieren:

  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 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 Vortrainiertes Modell den Namen Ihres vortrainierten 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 Methode tuningJobs.create. 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 diese Werte in den folgenden Anfragedaten:

  • Parameter für die kontinuierliche Optimierung:
    • TUNED_MODEL_NAME: Name des zu verwendenden optimierten Modells.
    • CHECKPOINT_IDOptional: ID des zu verwendenden Checkpoints.
  • Die verbleibenden Parameter sind dieselben wie für überwachtes Fine-Tuning oder Abstimmung auf Präferenzen.

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-2.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 Optimierung 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'