Ajustar modelos do Gemini usando o ajuste de preferências

Neste documento, descrevemos como realizar o ajuste de preferências em um modelo do Gemini.

Antes de começar

Antes de começar, prepare um conjunto de dados seguindo as instruções em Preparar dados de ajuste de preferências para modelos do Gemini.

Criar um modelo de ajuste

Console

Para configurar o ajuste de preferências usando o Google Cloud console, siga estas etapas:

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

    Acessar o Agent Platform Studio

  2. Clique em Criar modelo ajustado.

  3. Selecione Ajuste de preferências.

  4. Em Detalhes do modelo, configure o seguinte:

    1. No campo Nome do modelo ajustado , insira um nome para o novo modelo ajustado com até 128 caracteres.
    2. No campo Modelo base, selecione o modelo de fundação a ser ajustado.
    3. No campo suspenso Região, selecione a região em que o job de ajuste do pipeline será executado e onde o modelo ajustado será implantado.
  5. Em Configuração de ajuste, configure o seguinte:

    1. No campo Número de períodos, insira o número de etapas a serem executadas para o ajuste do modelo.
    2. No campo Tamanho do adaptador, insira o tamanho do adaptador a ser usado para ajuste de modelos.
    3. Opcional: no campo Beta, insira o valor beta desejado. Beta é o coeficiente que controla o quão próximo o modelo ajustado está da linha de base.
    4. No campo Multiplicador da taxa de aprendizado, insira o tamanho da etapa em cada iteração. O valor padrão é 1. .
  6. Opcional: para desativar os checkpoints intermediários e usar apenas o mais recente, clique na opção Exportar apenas o último checkpoint.

  7. Clique em Continuar.

    A página Conjunto de dados de ajuste é aberta.

  8. Para fazer upload de um arquivo de conjunto de dados, selecione uma das seguintes opções:

    1. Se você ainda não fez o upload de um conjunto de dados, selecione o botão de opção Fazer o upload do arquivo para o Cloud Storage.
    2. No campo Selecionar arquivo JSONL, clique em Procurar e selecione o arquivo do conjunto de dados.
    3. Em Local do conjunto de dados, clique em Procurar e selecione o bucket do Cloud Storage em que você quer armazenar o arquivo do conjunto de dados.
    4. Se o arquivo do conjunto de dados já estiver em um bucket do Cloud Storage, selecione o botão de opção Arquivo existente no Cloud Storage.
    5. Em Caminho do arquivo do Cloud Storage, clique em Procurar e selecione o bucket do Cloud Storage em que o arquivo do conjunto de dados está localizado.
  9. Opcional: para receber métricas de validação durante o treinamento, clique na opção Ativar validação do modelo.

    1. No arquivo Conjunto de dados de validação, insira o caminho do Cloud Storage referente ao conjunto de dados de validação.
  10. Clique em Iniciar ajuste.

    O novo modelo aparece na seção Ajuste gerenciado na página Ajustar e destilar. Quando o ajuste do modelo for concluído, o Status será Concluído.

REST

Para criar um job de ajuste do modelo, 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 estas substituições:

  • PROJECT_ID: o ID do projeto.
  • TUNING_JOB_REGION: a região onde o job de ajuste é executado. Essa também é a região padrão para onde o modelo ajustado é transferido.
  • BASE_MODEL: nome do modelo de fundação a ser ajustado.
  • TRAINING_DATASET_URI: URI do Cloud Storage do conjunto de dados de treinamento. O conjunto de dados precisa estar formatado como um arquivo JSONL. Para melhores resultados, forneça pelo menos 100 a 500 exemplos. Para mais informações, consulte Sobre conjuntos de dados de ajuste supervisionados .
  • VALIDATION_DATASET_URIOpcional: o URI do Cloud Storage do arquivo do conjunto de dados de validação.
  • EPOCH_COUNTOpcional: o número de transmissões completas que o modelo faz em todo o conjunto de dados de treinamento durante o treinamento. Deixe essa opção desmarcada para usar o valor recomendado pré-preenchido.
  • BETAOpcional: o coeficiente que controla o quão próximo o modelo ajustado está da linha de base.
  • ADAPTER_SIZEOpcional: o tamanho do adaptador que será usado para o job de ajuste. O tamanho do adaptador influencia o número de parâmetros treináveis para o job de ajuste. Um tamanho maior do adaptador significa que o modelo pode aprender tarefas mais complexas, mas exige um conjunto de dados de treinamento maior e tempos de treinamento mais longos.
  • LEARNING_RATE_MULTIPLIER: opcional: um multiplicador para aplicar à taxa de aprendizado recomendada. Deixe essa opção desmarcada para usar o valor recomendado.
  • EXPORT_LAST_CHECKPOINT_ONLYOpcional: defina como true para usar apenas o checkpoint mais recente.
  • TUNED_MODEL_DISPLAYNAMEOpcional: um nome de exibição para o modelo ajustado. Se não for definido, um nome aleatório será gerado.
  • KMS_KEY_NAMEOpcional: o identificador de recursos do Cloud KMS da chave de criptografia gerenciada pelo cliente usada para proteger um recurso. A chave tem o formato: projects/my-project/locations/my-region/keyRings/my-kr/cryptoKeys/my-key. A chave precisa estar na mesma região em que o recurso de computação é criado. Para mais informações, consulte Chaves de criptografia gerenciadas pelo cliente (CMEK).
  • SERVICE_ACCOUNTOpcional: a conta de serviço em que a carga de trabalho tuningJob é executada. Se não for especificado, o agente de serviço de ajuste fino seguro da Agent Platform no projeto será usado. Consulte Agente de serviço de ajuste. Se você planeja usar uma conta de serviço gerenciada pelo cliente, conceda o papel roles/aiplatform.tuningServiceAgent à conta de serviço. Conceda também o papel Agente de serviço de ajuste roles/iam.serviceAccountTokenCreator à conta de serviço gerenciada pelo cliente.

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:

{
  "baseModel": "BASE_MODEL",
  "preferenceOptimizationSpec" : {
      "trainingDatasetUri": "TRAINING_DATASET_URI",
      "validationDatasetUri": "VALIDATION_DATASET_URI",
      "hyperParameters": {
          "epochCount": "EPOCH_COUNT",
          "beta": "BETA",
          "adapterSize": "ADAPTER_SIZE",
          "learningRateMultiplier": "LEARNING_RATE_MULTIPLIER"
      },
      "exportLastCheckpointOnly": EXPORT_LAST_CHECKPOINT_ONLY,
  },
  "tunedModelDisplayName": "TUNED_MODEL_DISPLAYNAME",
  "encryptionSpec": {
    "kmsKeyName": "KMS_KEY_NAME"
  },
  "serviceAccount": "SERVICE_ACCOUNT"
}

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

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 \
$'{
   "baseModel": "${BASE_MODEL}",
   "preferenceOptimizationSpec" : {
      "trainingDatasetUri": "gs://mybucket/preference_tuning/data/train_data.jsonl",
      "validationDatasetUri": "gs://mybucket/preference_tuning/data/validation_data.jsonl"
   },
   "tunedModelDisplayName": "tuned_gemini"
}'

SDK de IA Generativa do Google

import time

from google import genai
from google.genai.types import CreateTuningJobConfig, HttpOptions, TuningDataset

client = genai.Client(http_options=HttpOptions(api_version="v1"))

training_dataset = TuningDataset(
    gcs_uri="gs://mybucket/preference_tuning/data/train_data.jsonl",
)
validation_dataset = TuningDataset(
    gcs_uri="gs://mybucket/preference_tuning/data/validation_data.jsonl",
)

# Refer to https://docs.cloud.google.com/vertex-ai/generative-ai/docs/models/gemini-use-continuous-tuning#google-gen-ai-sdk
# for example to continuous tune from SFT tuned model.
tuning_job = client.tunings.tune(
    base_model="gemini-3.5-flash",
    training_dataset=training_dataset,
    config=CreateTuningJobConfig(
        tuned_model_display_name="Example tuning job",
        method="PREFERENCE_TUNING",
        validation_dataset=validation_dataset,
    ),
)

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@1
# 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'

Como ajustar os hiperparâmetros

Recomendamos enviar o primeiro job de ajuste sem alterar os hiperparâmetros. O valor padrão é o recomendado com base nos resultados de benchmarking para gerar a melhor qualidade de saída do modelo.

  • Períodos: o número de transmissões completas que o modelo faz em todo o conjunto de dados de treinamento durante o treinamento. A Gemini Enterprise Agent Platform ajusta automaticamente o valor padrão ao tamanho do conjunto de dados de treinamento. Esse valor é baseado nos resultados de benchmarking para otimizar a qualidade da saída do modelo.
  • Beta: o coeficiente que controla o quão próximo o modelo ajustado está de sua linha de base. Um beta mais baixo significa atualizações mais agressivas em relação às respostas preferidas. O intervalo recomendado é de 0,01 a 0,5, inclusive. Um valor beta de 0 impede que o modelo aprenda.
  • Tamanho do adaptador: o tamanho do adaptador que será usado para o job de ajuste. O tamanho do adaptador influencia o número de parâmetros treináveis para o job de ajuste. Um tamanho maior do adaptador significa que o modelo pode aprender tarefas mais complexas, mas exige um conjunto de dados de treinamento maior e tempos de treinamento mais longos.
  • Multiplicador da taxa de aprendizado: um multiplicador para aplicar à taxa de aprendizado recomendada. É possível aumentar o valor para convergir mais rapidamente ou diminuir o valor para evitar o overfitting.

Ver ou cancelar um job de ajuste

Para listar jobs de ajuste, conferir detalhes de jobs de ajuste, cancelar um job de ajuste ou excluir um modelo ajustado, consulte as seções a seguir na documentação de ajuste supervisionado:

Métricas de ajuste de modelos

O job de ajuste de modelo coleta automaticamente as seguintes métricas de ajuste:

  • /preference_optimization_train_loss: perda de preferência para o conjunto de dados de ajuste em uma etapa de treinamento.

Métricas de validação do modelo

Quando os dados de validação são fornecidos, o job de ajuste de modelo coleta automaticamente as seguintes métricas de validação:

  • /eval_total_loss: perda de preferência para o conjunto de dados de validação em uma etapa de validação.

As visualizações de métricas ficam disponíveis após o início do job de ajuste. Elas são atualizadas em tempo real à medida que o ajuste avança. Se você não especificar um conjunto de dados de validação ao criar o job de ajuste, apenas as visualizações das métricas de ajuste estarão disponíveis.

A seguir