Usar o ajuste contínuo para modelos do Gemini

Com o ajuste contínuo, é possível continuar ajustando um modelo ou um ponto de verificação do modelo já ajustado adicionando mais épocas ou exemplos de treinamento. Usar um modelo ou ponto de verificação já ajustado como modelo de base permite uma experimentação de ajuste mais eficiente.

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

  • Para ajustar com mais dados se um modelo ajustado estiver subajustado.
  • Para melhorar a performance ou manter o modelo atualizado com novos dados.
  • Para personalizar ainda mais um modelo ajustado.

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

Clique para abrir 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.
  • Forneça um nome de recurso do modelo:

    • No console Google Cloud , o nome do recurso do modelo aparece na página Ajuste da plataforma do agente 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 ponto de verificação como modelo de base e não especificar um ID, o ponto de verificação padrão será usado. Para mais informações, consulte Usar pontos de verificação no ajuste supervisionado de detalhes para modelos do Gemini. No console Google Cloud , o ponto de verificação padrão pode ser encontrado da seguinte maneira:

    1. Acesse a página "Model Registry".
    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 pontos de verificação. O checkpoint padrão é indicado pela palavra default ao lado do ID.
  • Por padrão, uma nova versão do modelo é criada no mesmo modelo principal que o modelo pré-ajustado. Se você fornecer um novo nome de exibição para o modelo ajustado, um novo modelo será criado.

  • Apenas 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 precisa usar a mesma CMEK usada no job de ajuste para o modelo pré-ajustado.

Console

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

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

    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 método tuningJobs.create. 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 ponto de verificação 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 abaixo:

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

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'