Usar o ajuste contínuo para modelos do Gemini

O ajuste contínuo permite continuar ajustando um modelo ou checkpoint de modelo já ajustado, adicionando mais épocas ou exemplos de treinamento. Usar um modelo ou checkpoint já ajustado como modelo de base permite uma experimentação de ajuste mais eficiente.

É possível usar o ajuste contínuo para:

  • Ajustar com mais dados se um modelo ajustado estiver com underfitting.
  • Melhorar o desempenho ou manter o modelo atualizado com novos dados.
  • Personalizar ainda mais um modelo ajustado.

Os seguintes modelos do Gemini são compatíveis com ajuste contínuo:

Clique para expandir os modelos compatíveis

Para informações detalhadas sobre as versões do modelo do Gemini, consulte Modelos do Google e Versões e ciclo de vida do modelo.

Configurar o ajuste contínuo

Ao criar um job de ajuste contínuo, observe o seguinte:

  • O ajuste contínuo é compatível com o SDK de IA generativa do Google. Ele não é compatível com o SDK da Agent Platform para Python.
  • Você precisa fornecer um nome de recurso do modelo:

    • No Google Cloud console, o nome do recurso do modelo aparece na página Ajuste da Agent Platform do Gemini Enterprise, no campo Detalhes do ajuste > Nome do modelo.
    • O nome do recurso do modelo usa o seguinte formato:
    projects/{project}/locations/{location}/models/{modelId}@{version_id}
    
    • {version_id} é opcional e pode ser o ID da versão gerada ou um alias de versão fornecido pelo usuário. Se for omitido, a versão padrão será usada.
  • Se você não especificar uma versão do modelo, a versão padrão será usada.

  • Se você estiver usando um checkpoint como modelo de base e não especificar um ID de checkpoint, o checkpoint padrão será usado. Para mais informações, consulte Usar checkpoints no ajuste supervisionado de modelos do Gemini. No Google Cloud console, o checkpoint padrão pode ser encontrado da seguinte maneira:

    1. Acessar a página Modelo de registro.
    2. Clique no Nome do modelo.
    3. Clique em Ver todas as versões.
    4. Clique na versão desejada para conferir uma lista de checkpoints. O checkpoint padrão é indicado pela palavra default ao lado do ID do checkpoint.
  • Por padrão, uma nova versão do modelo é criada no mesmo modelo pai do modelo pré-ajustado. Se você fornecer um novo nome de exibição do modelo ajustado, um novo modelo será criado.

  • Somente modelos de base de ajuste supervisionado ajustados a partir de 11 de julho de 2025 podem ser usados como modelos de base para ajuste contínuo.

  • Se você estiver usando chaves de criptografia gerenciadas pelo cliente (CMEK), o job de ajuste contínuo precisará usar a mesma CMEK usada no job de ajuste do modelo pré-ajustado.

Console

Para configurar o ajuste contínuo de um modelo pré-ajustado usando o Google Cloud console, siga estas etapas:

  1. Na seção Gemini Enterprise Agent Platform do Google Cloud console, acesse a Agent Platform Studio página.

    Acessar o Agent Platform Studio

  2. Clique em Criar modelo ajustado.

  3. Em Detalhes do modelo, configure o seguinte:

    1. Escolha Ajustar um modelo pré-ajustado.
    2. No campo Modelo pré-ajustado, escolha o nome do modelo pré-ajustado.
    3. Se o modelo tiver pelo menos um checkpoint, o campo suspenso Checkpoint vai aparecer. Escolha o checkpoint desejado.
  4. Clique em Continuar.

REST

Para configurar o ajuste contínuo, envie uma solicitação POST usando o tuningJobs.create método. Alguns dos parâmetros não são compatíveis com todos os modelos. Inclua apenas os parâmetros aplicáveis ao modelo que você está ajustando.

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • Parâmetros para ajuste contínuo:
    • TUNED_MODEL_NAME: nome do modelo ajustado a ser usado.
    • CHECKPOINT_IDOpcional: ID do checkpoint a ser usado.
  • Os parâmetros restantes são os mesmos do ajuste supervisionado ou ajuste de preferências.

Método HTTP e URL:

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

Corpo JSON da solicitação:

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

Para enviar a solicitação, escolha uma destas opções:

curl

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

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

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

$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

Você receberá uma resposta JSON semelhante a seguinte.

Exemplo de comando 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 de IA Generativa do Google

O exemplo a seguir mostra como configurar o ajuste contínuo usando o SDK de IA Generativa do Google.

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'