Usar o ajuste contínuo para modelos do Gemini

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

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

  • Para ajustar com mais dados se um modelo ajustado estiver subajustado.
  • Para melhorar o desempenho 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:

Para informações detalhadas sobre as versões do modelo 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 da IA generativa do Google. Ele não é compatível com o SDK da Vertex AI para Python.
  • Forneça um nome de recurso do modelo:

    • No console do Google Cloud , o nome do recurso do modelo aparece na página Ajuste da Vertex AI, 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 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 ver 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 "Vertex AI" do Google Cloud console, acesse a página do Vertex AI Studio.

    Acessar o Vertex AI 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 ponto de verificação 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 do 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-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 do Google Gen AI

O exemplo a seguir mostra como configurar o ajuste contínuo usando o SDK da Gen AI 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'