Utiliser le réglage continu pour les modèles Gemini

Le réglage continu vous permet de continuer à régler un modèle ou un point de contrôle de modèle déjà réglé en ajoutant des époques ou des exemples d'entraînement. L'utilisation d'un modèle ou d'un point de contrôle déjà réglé comme modèle de base permet d'effectuer des tests de réglage plus efficaces.

Vous pouvez utiliser le réglage continu aux fins suivantes :

  • Pour effectuer un réglage avec davantage de données si un modèle réglé existant est sous-apprentissage.
  • Pour améliorer les performances ou maintenir le modèle à jour avec de nouvelles données.
  • Pour personnaliser davantage un modèle réglé existant.

Les modèles Gemini suivants sont compatibles avec le réglage continu :

Cliquer pour développer les modèles compatibles

Pour obtenir des informations détaillées sur les versions des modèles Gemini, consultez Modèles Google et Versions et cycle de vie des modèles.

Configurer le réglage continu

Lorsque vous créez un job de réglage continu, tenez compte des points suivants :

  • Le réglage continu est compatible avec le SDK Google Gen AI. Il n'est pas compatible avec le SDK Agent Platform pour Python.
  • Vous devez fournir un nom de ressource de modèle :

    • Dans la Google Cloud console, le nom de ressource du modèle s'affiche sur la page Gemini Enterprise Agent Platform Tuning, dans le champ Tuning details > Model Name.
    • Le nom de ressource du modèle utilise le format suivant :
    projects/{project}/locations/{location}/models/{modelId}@{version_id}
    
    • {version_id} est facultatif et peut être l'ID de version généré ou un alias de version fourni par l'utilisateur. S'il est omis, la version par défaut est utilisée.
  • Si vous ne spécifiez pas de version de modèle, la version par défaut est utilisée.

  • Si vous utilisez un point de contrôle comme modèle de base et que vous ne spécifiez pas d'ID de point de contrôle, le point de contrôle par défaut est utilisé. Pour en savoir plus, consultez Utiliser des points de contrôle dans l'affinage supervisé pour les modèles Gemini. Dans la Google Cloud console, le point de contrôle par défaut se trouve comme suit :

    1. Accédez à la page Model Registry.
    2. Cliquez sur le nom du modèle.
    3. Cliquez sur Afficher toutes les versions.
    4. Cliquez sur la version souhaitée pour afficher la liste des points de contrôle. Le point de contrôle par défaut est indiqué par le mot default à côté de l'ID du point de contrôle.
  • Par défaut, une nouvelle version de modèle est créée sous le même modèle parent que le modèle pré-réglé. Si vous fournissez un nouveau nom à afficher pour le modèle réglé, un nouveau modèle est créé.

  • Seuls les modèles de base de réglage supervisé réglés à partir du 11 juillet 2025 peuvent être utilisés comme modèles de base pour le réglage continu.

  • Si vous utilisez des clés de chiffrement gérées par le client (CMEK), votre job de réglage continu doit utiliser la même CMEK que celle utilisée dans le job de réglage du modèle pré-réglé.

Console

Pour configurer le réglage continu d'un modèle pré-réglé à l'aide de la Google Cloud console, procédez comme suit :

  1. Dans la section Gemini Enterprise Agent Platform de la Google Cloud console, accédez à la page Agent Platform Studio.

    Accéder à Agent Platform Studio

  2. Cliquez sur Créer un modèle réglé.

  3. Sous Informations sur le modèle, configurez les éléments suivants :

    1. Choisissez Régler un modèle pré-réglé.
    2. Dans le champ Modèle pré-réglé, choisissez le nom de votre modèle pré-réglé.
    3. Si le modèle comporte au moins un point de contrôle, le champ déroulant Point de contrôle s'affiche. Choisissez le point de contrôle souhaité.
  4. Cliquez sur Continuer.

REST

Pour configurer le réglage continu, envoyez une requête POST à l'aide de la tuningJobs.create méthode. Certains paramètres ne sont pas compatibles avec tous les modèles. Veillez à n'inclure que les paramètres applicables au modèle que vous réglez.

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • Paramètres pour le réglage continu :
    • TUNED_MODEL_NAME : nom du modèle réglé à utiliser.
    • CHECKPOINT_ID (facultatif) : ID du point de contrôle à utiliser.
  • Les autres paramètres sont identiques à ceux des réglages supervisés ou des réglages de préférences.

Méthode HTTP et URL :

POST https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs

Corps JSON de la requête :

{
  "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"
}

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

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

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

$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

Vous devriez recevoir une réponse JSON semblable à la suivante.

Exemple de commande curl

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"
}'

SDK Google Gen AI

L'exemple suivant montre comment configurer le réglage continu à l'aide du SDK Google Gen AI.

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'