Ajuste os modelos do Gemini através do ajuste fino supervisionado

Este documento descreve como otimizar um modelo Gemini através da otimização supervisionada.

Antes de começar

Antes de começar, tem de preparar um conjunto de dados de ajuste fino supervisionado. Existem requisitos diferentes consoante o seu exemplo de utilização.

Modelos suportados

Os seguintes modelos Gemini suportam a otimização supervisionada:

Crie uma tarefa de ajuste

Pode criar uma tarefa de ajuste fino supervisionado através da Google Cloud consola, do SDK de IA gen da Google, do SDK Vertex AI para Python, da API REST ou do Colab Enterprise:

Consola

Para otimizar um modelo de texto com a otimização precisa supervisionada através da Google Cloud consola, siga estes passos:

  1. Na secção Vertex AI da Google Cloud consola, aceda à página Vertex AI Studio.

    Aceda ao Vertex AI Studio

  2. Clique em Criar modelo otimizado.

  3. Em Detalhes do modelo, configure o seguinte:

    1. No campo Nome do modelo otimizado, introduza um nome para o novo modelo otimizado, com um máximo de 128 carateres.
    2. No campo Modelo de base, selecione gemini-2.5-flash.
    3. No campo pendente Região, selecione a região onde a tarefa de otimização do pipeline é executada e onde o modelo otimizado é implementado.
  4. Em Definição de otimização, configure o seguinte:

    1. No campo Número de épocas, introduza o número de passos a executar para a otimização do modelo.
    2. No campo Tamanho do adaptador, introduza o tamanho do adaptador a usar para o ajuste de modelos.
    3. No campo Multiplicador da taxa de aprendizagem, introduza o tamanho do passo em cada iteração. O valor predefinido é 1. .
  5. Opcional: para desativar os pontos de verificação intermédios e usar apenas o ponto de verificação mais recente, clique no botão Exportar apenas o último ponto de verificação.

  6. Clique em Continuar.

    É apresentada a página Conjunto de dados de ajuste.

  7. Para carregar um ficheiro de conjunto de dados, selecione uma das seguintes opções:

    1. Se ainda não tiver carregado um conjunto de dados, selecione o botão de opção para Carregar ficheiro para o Cloud Storage.
    2. No campo Selecionar ficheiro JSONL, clique em Procurar e selecione o ficheiro do conjunto de dados.
    3. No campo Localização do conjunto de dados, clique em Procurar e selecione o contentor do Cloud Storage onde quer armazenar o ficheiro do conjunto de dados.
    4. Se o ficheiro do conjunto de dados já estiver num contentor do Cloud Storage, selecione o botão de rádio Ficheiro existente no Cloud Storage.
    5. No campo Caminho do ficheiro do Cloud Storage, clique em Procurar e selecione o contentor do Cloud Storage onde se encontra o ficheiro do conjunto de dados.
  8. (Opcional) Para receber métricas de validação durante a preparação, clique no botão Ativar validação do modelo.

    1. No ficheiro Validation dataset, introduza o caminho do Cloud Storage do seu conjunto de dados de validação.
  9. Clique em Iniciar otimização.

    O seu novo modelo aparece na secção Modelos otimizados do Gemini Pro na página Otimizar e destilar. Quando a otimização do modelo estiver concluída, o Estado indica Êxito.

SDK Google Gen AI

import time

from google import genai
from google.genai.types import HttpOptions, CreateTuningJobConfig, TuningDataset, EvaluationConfig, OutputConfig, GcsDestination, Metric

# TODO(developer): Update and un-comment below line
# output_gcs_uri = "gs://your-bucket/your-prefix"

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",
)

evaluation_config = EvaluationConfig(
    metrics=[
        Metric(
            name="FLUENCY",
            prompt_template="""Evaluate this {prediction}"""
        )
    ],
    output_config=OutputConfig(
        gcs_destination=GcsDestination(
            output_uri_prefix=output_gcs_uri,
        )
    ),
)

tuning_job = client.tunings.tune(
    base_model="gemini-2.5-flash",
    training_dataset=training_dataset,
    config=CreateTuningJobConfig(
        tuned_model_display_name="Example tuning job",
        validation_dataset=validation_dataset,
        evaluation_config=evaluation_config,
    ),
)

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'

SDK Vertex AI para Python


import time

import vertexai
from vertexai.tuning import sft

# TODO(developer): Update and un-comment below line
# PROJECT_ID = "your-project-id"
vertexai.init(project=PROJECT_ID, location="us-central1")

sft_tuning_job = sft.train(
    source_model="gemini-2.0-flash-001",
    # 1.5 and 2.0 models use the same JSONL format
    train_dataset="gs://cloud-samples-data/ai-platform/generative_ai/gemini-1_5/text/sft_train_data.jsonl",
)

# Polling for job completion
while not sft_tuning_job.has_ended:
    time.sleep(60)
    sft_tuning_job.refresh()

print(sft_tuning_job.tuned_model_name)
print(sft_tuning_job.tuned_model_endpoint_name)
print(sft_tuning_job.experiment)
# Example response:
# projects/123456789012/locations/us-central1/models/1234567890@1
# projects/123456789012/locations/us-central1/endpoints/123456789012345
# <google.cloud.aiplatform.metadata.experiment_resources.Experiment object at 0x7b5b4ae07af0>

REST

Para criar uma tarefa de ajuste de modelos, envie um pedido POST através do método tuningJobs.create. Alguns dos parâmetros não são suportados por todos os modelos. Certifique-se de que inclui apenas os parâmetros aplicáveis para o modelo que está a ajustar.

(Opcional) (Pré-visualização) Inclua o evaluationConfig para executar automaticamente uma avaliação através do serviço de avaliação de IA gen após a conclusão da tarefa de otimização. Esta configuração de avaliação está disponível na região us-central1.

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • PROJECT_ID: o ID do seu projeto.
  • TUNING_JOB_REGION: a região onde a tarefa de otimização é executada. Esta é também a região predefinida para onde o modelo otimizado é carregado.
  • BASE_MODEL: Nome do modelo base a ajustar.
  • TRAINING_DATASET_URI: URI do Cloud Storage do seu conjunto de dados de preparação. O conjunto de dados tem de estar formatado como um ficheiro JSONL. Para ter os melhores resultados, forneça, pelo menos, 100 a 500 exemplos. Para mais informações, consulte o artigo Acerca dos conjuntos de dados de ajuste supervisionados .
  • VALIDATION_DATASET_URIOpcional: o URI do Cloud Storage do ficheiro do conjunto de dados de validação.
  • EPOCH_COUNTOpcional: o número de passes completos que o modelo faz em todo o conjunto de dados de preparação durante a preparação. Deixe-o não definido para usar o valor recomendado pré-preenchido.
  • ADAPTER_SIZEOpcional: o tamanho do adaptador a usar para a tarefa de otimização. O tamanho do adaptador influencia o número de parâmetros treináveis para a tarefa de ajuste. Um tamanho do adaptador maior implica que o modelo pode aprender tarefas mais complexas, mas requer um conjunto de dados de preparação maior e tempos de preparação mais longos.
  • LEARNING_RATE_MULTIPLIER: opcional: um multiplicador a aplicar à taxa de aprendizagem recomendada. Deixe-o não definido para usar o valor recomendado.
  • EXPORT_LAST_CHECKPOINT_ONLYOpcional: defina como true para usar apenas o ponto de verificação mais recente.
  • METRIC_SPECOpcional: uma ou mais especificações de métricas que está a usar para executar uma avaliação com o serviço de avaliação de IA gen. Pode usar as seguintes especificações de métricas: "pointwise_metric_spec", "pairwise_metric_spec", "exact_match_spec", "bleu_spec" e "rouge_spec".
  • METRIC_SPEC_FIELD_NAMEOpcional: os campos obrigatórios para a especificação da métrica escolhida. Por exemplo, "metric_prompt_template"
  • METRIC_SPEC_FIELD_NAME_CONTENTOpcional: o conteúdo do campo para a especificação da métrica escolhida. Por exemplo, pode usar o seguinte conteúdo do campo para uma avaliação ponto a ponto: "Evaluate the fluency of this sentence: {response}. Give score from 0 to 1. 0 - not fluent at all. 1 - very fluent."
  • CLOUD_STORAGE_BUCKETOpcional: o contentor do Cloud Storage para armazenar os resultados de uma execução de avaliação do serviço de avaliação de IA gen.
  • TUNED_MODEL_DISPLAYNAMEOpcional: um nome a apresentar para o modelo otimizado. Se não for definido, é gerado um nome aleatório.
  • KMS_KEY_NAMEOpcional: o identificador do recurso do Cloud KMS da chave de encriptação gerida 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 tem de estar na mesma região onde o recurso de computação é criado. Para mais informações, consulte o artigo Chaves de encriptação geridas pelo cliente (CMEK).
  • SERVICE_ACCOUNTOpcional: a conta de serviço na qual a carga de trabalho tuningJob é executada. Se não for especificado, é usado o agente do serviço de ajuste fino seguro da Vertex AI no projeto. Consulte o artigo Agente do serviço de otimização. Se planeia usar uma conta de serviço gerida pelo cliente, tem de conceder a função roles/aiplatform.tuningServiceAgent à conta de serviço. Conceda também a função Agente do serviço de ajuste roles/iam.serviceAccountTokenCreator à conta de serviço gerida 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 do pedido:

{
  "baseModel": "BASE_MODEL",
  "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 o seu pedido, escolha uma destas opções:

curl

Guarde o corpo do pedido num ficheiro com o nome request.json, e execute o seguinte comando:

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

Guarde o corpo do pedido num ficheiro com o nome request.json, e execute o seguinte comando:

$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

Deve receber uma resposta JSON semelhante à seguinte.

Comando curl de exemplo

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": "gemini-2.5-flash",
   "supervisedTuningSpec" : {
      "training_dataset_uri": "gs://cloud-samples-data/ai-platform/generative_ai/gemini/text/sft_train_data.jsonl",
      "validation_dataset_uri": "gs://cloud-samples-data/ai-platform/generative_ai/gemini/text/sft_validation_data.jsonl"
   },
   "tunedModelDisplayName": "tuned_gemini"
}'

Colab Enterprise

Pode criar uma tarefa de ajuste de modelos na Vertex AI através do painel lateral no Colab Enterprise. O painel lateral adiciona os fragmentos do código relevantes ao seu bloco de notas. Em seguida, modifica os fragmentos de código e executa-os para criar a tarefa de ajuste. Para saber mais sobre a utilização do painel lateral com as tarefas de ajuste do Vertex AI, consulte o artigo Interaja com o Vertex AI para ajustar um modelo.

  1. Na Google Cloud consola, aceda à página Os meus blocos de notas do Colab Enterprise.

    Aceda a Os meus notebooks

  2. No menu Região, selecione a região que contém o seu bloco de notas.

  3. Clique no bloco de notas que quer abrir. Se ainda não criou um bloco de notas, crie um bloco de notas.

  4. À direita do bloco de notas, no painel lateral, clique no botão  Ajuste.

    O painel lateral expande o separador Ajuste.

  5. Clique no botão Ajustar um modelo do Gemini.

    O Colab Enterprise adiciona células de código ao seu bloco de notas para ajustar um modelo Gemini.

  6. No bloco de notas, encontre a célula de código que armazena os valores dos parâmetros. Vai usar estes parâmetros para interagir com o Vertex AI.

  7. Atualize os valores dos seguintes parâmetros:

    • PROJECT_ID: o ID do projeto em que o seu bloco de notas se encontra.
    • REGION: a região em que o seu bloco de notas se encontra.
    • TUNED_MODEL_DISPLAY_NAME: o nome do seu modelo ajustado.
  8. Na célula de código seguinte, atualize os parâmetros de ajuste do modelo:

    • source_model: o modelo do Gemini que quer usar, por exemplo, gemini-2.0-flash-001.
    • train_dataset: o URL do seu conjunto de dados de preparação.
    • validation_dataset: o URL do conjunto de dados de validação.
    • Ajuste os restantes parâmetros conforme necessário.
  9. Execute as células de código que o painel lateral adicionou ao seu bloco de notas.

  10. Após a execução da última célula de código, clique no botão  Ver tarefa de ajuste apresentado.

  11. O painel lateral mostra informações sobre a tarefa de ajuste do modelo.

    • O separador Monitorizar mostra as métricas de otimização quando as métricas estiverem prontas.
    • O separador Conjunto de dados mostra um resumo e métricas sobre o seu conjunto de dados após o processamento do mesmo.
    • O separador Detalhes mostra informações sobre a tarefa de otimização, como o método de otimização e o modelo base (modelo de origem) que usou.
  12. Após a conclusão da tarefa de otimização, pode aceder diretamente do separador Detalhes da otimização a uma página onde pode testar o seu modelo. Clique em Testar.

    A Google Cloud consola abre a página do Vertex AI Chat de texto, onde pode testar o seu modelo.

Aperfeiçoamento de hiperparâmetros

Recomendamos que envie a primeira tarefa de otimização sem alterar os hiperparâmetros. O valor predefinido é o valor recomendado com base nos nossos resultados de testes de referência para gerar a melhor qualidade de saída do modelo.

  • Épocas: o número de passes completos que o modelo faz sobre o conjunto de dados de preparação completo durante a preparação. O Vertex AI ajusta automaticamente o valor predefinido ao tamanho do conjunto de dados de preparação. Este valor baseia-se nos resultados dos testes de referência para otimizar a qualidade do resultado do modelo.
  • Tamanho do adaptador: o tamanho do adaptador a usar para a tarefa de otimização. O tamanho do adaptador influencia o número de parâmetros treináveis para a tarefa de ajuste. Um tamanho do adaptador maior implica que o modelo pode aprender tarefas mais complexas, mas requer um conjunto de dados de preparação maior e tempos de preparação mais longos.
  • Multiplicador da taxa de aprendizagem: um multiplicador a aplicar à taxa de aprendizagem recomendada. Pode aumentar o valor para convergir mais rapidamente ou diminuir o valor para evitar o sobreajuste.

Para uma discussão sobre as práticas recomendadas para o ajuste fino supervisionado, consulte a publicação no blogue Ajuste fino supervisionado para o Gemini: um guia de práticas recomendadas.

Veja uma lista de tarefas de otimização

Pode ver uma lista de tarefas de otimização no seu projeto atual através da Google Cloud consola, do SDK Google Gen AI, do SDK Vertex AI para Python ou enviando um pedido GET através do método tuningJobs.

Consola

Para ver as tarefas de otimização na Google Cloud consola, aceda à página do Vertex AI Studio.

Aceda ao Vertex AI Studio

As suas tarefas de otimização do Gemini são apresentadas na tabela na secção Modelos otimizados do Gemini Pro.

SDK Google Gen AI

from google import genai
from google.genai.types import HttpOptions

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

responses = client.tunings.list()
for response in responses:
    print(response.name)
    # Example response:
    # projects/123456789012/locations/us-central1/tuningJobs/123456789012345

SDK Vertex AI para Python

import vertexai
from vertexai.tuning import sft

# TODO(developer): Update and un-comment below line
# PROJECT_ID = "your-project-id"
vertexai.init(project=PROJECT_ID, location="us-central1")

responses = sft.SupervisedTuningJob.list()

for response in responses:
    print(response)
# Example response:
# <vertexai.tuning._supervised_tuning.SupervisedTuningJob object at 0x7c85287b2680>
# resource name: projects/12345678/locations/us-central1/tuningJobs/123456789012345

REST

Para ver uma lista de tarefas de ajuste de modelos, envie um pedido GET através do método tuningJobs.list.

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • PROJECT_ID: .
  • TUNING_JOB_REGION: a região onde a tarefa de otimização é executada. Esta é também a região predefinida para onde o modelo otimizado é carregado.

Método HTTP e URL:

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

Para enviar o seu pedido, escolha uma destas opções:

curl

Execute o seguinte comando:

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs"

PowerShell

Execute o seguinte comando:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs" | Select-Object -Expand Content

Deve receber uma resposta JSON semelhante à seguinte.

Veja detalhes de uma tarefa de ajuste

Pode obter os detalhes de uma tarefa de otimização no seu projeto atual através da Google Cloud consola, do SDK Google Gen AI, do SDK Vertex AI para Python ou enviando um pedido GET através do método tuningJobs.

Consola

  1. Para ver detalhes de um modelo otimizado na Google Cloud consola, aceda à página do Vertex AI Studio.

    Aceda ao Vertex AI Studio

  2. Na tabela Modelos personalizados do Gemini Pro, encontre o seu modelo e clique em Detalhes.

    São apresentados os detalhes do seu modelo.

SDK Google Gen AI

from google import genai
from google.genai.types import HttpOptions

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

# Get the tuning job and the tuned model.
# Eg. tuning_job_name = "projects/123456789012/locations/us-central1/tuningJobs/123456789012345"
tuning_job = client.tunings.get(name=tuning_job_name)

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

SDK Vertex AI para Python

import vertexai
from vertexai.tuning import sft

# TODO(developer): Update and un-comment below lines
# PROJECT_ID = "your-project-id"
# LOCATION = "us-central1"
vertexai.init(project=PROJECT_ID, location=LOCATION)

tuning_job_id = "4982013113894174720"
response = sft.SupervisedTuningJob(
    f"projects/{PROJECT_ID}/locations/{LOCATION}/tuningJobs/{tuning_job_id}"
)

print(response)
# Example response:
# <vertexai.tuning._supervised_tuning.SupervisedTuningJob object at 0x7cc4bb20baf0>
# resource name: projects/1234567890/locations/us-central1/tuningJobs/4982013113894174720

REST

Para ver uma lista de tarefas de ajuste de modelos, envie um pedido GET através do método tuningJobs.get e especifique o TuningJob_ID.

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • PROJECT_ID: .
  • TUNING_JOB_REGION: a região onde a tarefa de otimização é executada. Esta é também a região predefinida para onde o modelo otimizado é carregado.
  • TUNING_JOB_ID: o ID da tarefa de otimização.

Método HTTP e URL:

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

Para enviar o seu pedido, escolha uma destas opções:

curl

Execute o seguinte comando:

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs/TUNING_JOB_ID"

PowerShell

Execute o seguinte comando:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs/TUNING_JOB_ID" | Select-Object -Expand Content

Deve receber uma resposta JSON semelhante à seguinte.

Cancele uma tarefa de otimização

Pode cancelar uma tarefa de otimização no seu projeto atual através da Google Cloud consola ou do SDK Vertex AI para Python, ou enviando um pedido POST através do método tuningJobs.

REST

Para ver uma lista de tarefas de ajuste de modelos, envie um pedido GET através do método tuningJobs.cancel e especifique o TuningJob_ID.

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • PROJECT_ID: .
  • TUNING_JOB_REGION: a região onde a tarefa de otimização é executada. Esta é também a região predefinida para onde o modelo otimizado é carregado.
  • TUNING_JOB_ID: o ID da tarefa de otimização.

Método HTTP e URL:

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

Para enviar o seu pedido, escolha uma destas opções:

curl

Execute o seguinte comando:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d "" \
"https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs/TUNING_JOB_ID:cancel"

PowerShell

Execute o seguinte comando:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-Uri "https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs/TUNING_JOB_ID:cancel" | Select-Object -Expand Content

Deve receber uma resposta JSON semelhante à seguinte.

SDK Vertex AI para Python

import vertexai
from vertexai.tuning import sft

# TODO(developer): Update and un-comment below lines
# PROJECT_ID = "your-project-id"
# LOCATION = "us-central1"
vertexai.init(project=PROJECT_ID, location=LOCATION)

tuning_job_id = "4982013113894174720"
job = sft.SupervisedTuningJob(
    f"projects/{PROJECT_ID}/locations/{LOCATION}/tuningJobs/{tuning_job_id}"
)
job.cancel()

Consola

  1. Para cancelar uma tarefa de otimização na Google Cloud consola, aceda à página do Vertex AI Studio.

    Aceda ao Vertex AI Studio

  2. Na tabela Modelos otimizados do Gemini Pro, clique em Gerir execução.

  3. Clique em Cancelar.

Avalie o modelo otimizado

Se não configurou o serviço de avaliação de IA gen para ser executado automaticamente após a tarefa de ajuste, pode interagir com o ponto final do modelo ajustado da mesma forma que o Gemini base usando o SDK do Vertex AI para Python ou o SDK de IA gen da Google, ou enviando um pedido POST usando o método generateContent.

Para modelos de raciocínio, recomendamos que desative o raciocínio ou defina o orçamento de raciocínio para o mínimo em tarefas ajustadas para um desempenho e uma rentabilidade ideais. Durante o ajuste fino supervisionado, o modelo aprende a imitar os dados reais no conjunto de dados de ajuste, omitindo o processo de raciocínio. Por conseguinte, o modelo otimizado consegue processar a tarefa sem pensar no orçamento de forma eficaz.

O exemplo seguinte envia um comando a um modelo com a pergunta "Porque é que o céu é azul?".

Consola

  1. Para ver detalhes de um modelo otimizado na Google Cloud consola, aceda à página do Vertex AI Studio.

    Aceda ao Vertex AI Studio

  2. Na tabela Modelos personalizados do Gemini Pro, selecione Testar.

    É aberta uma página onde pode criar uma conversa com o seu modelo personalizado.

SDK Google Gen AI

from google import genai
from google.genai.types import HttpOptions

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

# Get the tuning job and the tuned model.
# Eg. tuning_job_name = "projects/123456789012/locations/us-central1/tuningJobs/123456789012345"
tuning_job = client.tunings.get(name=tuning_job_name)

contents = "Why is the sky blue?"

# Predicts with the tuned endpoint.
response = client.models.generate_content(
    model=tuning_job.tuned_model.endpoint,
    contents=contents,
)
print(response.text)
# Example response:
# The sky is blue because ...

SDK Vertex AI para Python

from vertexai.generative_models import GenerativeModel

sft_tuning_job = sft.SupervisedTuningJob("projects/<PROJECT_ID>/locations/<TUNING_JOB_REGION>/tuningJobs/<TUNING_JOB_ID>")
tuned_model = GenerativeModel(sft_tuning_job.tuned_model_endpoint_name)
print(tuned_model.generate_content(content))

REST

Para testar um modelo otimizado com um comando, envie um pedido POST e especifique o TUNED_ENDPOINT_ID.

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • PROJECT_ID: .
  • TUNING_JOB_REGION: a região onde a tarefa de ajuste é executada. Esta é também a região predefinida para onde o modelo otimizado é carregado.
  • ENDPOINT_ID: o ID do ponto final do modelo otimizado da API GET.
  • TEMPERATURE: A temperatura é usada para a amostragem durante a geração de respostas, que ocorre quando topP e topK são aplicados. A temperatura controla o grau de aleatoriedade na seleção de tokens. As temperaturas mais baixas são adequadas para comandos que requerem uma resposta menos aberta ou criativa, enquanto as temperaturas mais altas podem gerar resultados mais diversos ou criativos. Uma temperatura de 0 significa que os tokens de probabilidade mais elevada são sempre selecionados. Neste caso, as respostas para um determinado comando são maioritariamente determinísticas, mas ainda é possível uma pequena variação.

    Se o modelo devolver uma resposta demasiado genérica, demasiado curta ou uma resposta alternativa, experimente aumentar a temperatura.

  • TOP_P: O Top-P altera a forma como o modelo seleciona tokens para a saída. Os tokens são selecionados do mais provável para o menos provável até que a soma das respetivas probabilidades seja igual ao valor de Top-P. Por exemplo, se os tokens A, B e C tiverem uma probabilidade de 0,3, 0,2 e 0,1 e o valor de top-P for 0.5, o modelo seleciona A ou B como o token seguinte através da temperatura e exclui C como um candidato.

    Especifique um valor inferior para respostas menos aleatórias e um valor superior para respostas mais aleatórias.

  • TOP_K: O Top-K altera a forma como o modelo seleciona tokens para a saída. Um top-K de 1 significa que o token selecionado seguinte é o mais provável entre todos os tokens no vocabulário do modelo (também denominado descodificação gananciosa), enquanto um top-K de 3 significa que o token seguinte é selecionado entre os três tokens mais prováveis através da temperatura.

    Para cada passo de seleção de tokens, são amostrados os K principais tokens com as probabilidades mais elevadas. Em seguida, os tokens são filtrados com base no top-P, sendo o token final selecionado através da amostragem de temperatura.

    Especifique um valor inferior para respostas menos aleatórias e um valor superior para respostas mais aleatórias.

  • MAX_OUTPUT_TOKENS: número máximo de tokens que podem ser gerados na resposta. Um token tem aproximadamente quatro carateres. 100 tokens correspondem a aproximadamente 60 a 80 palavras.

    Especifique um valor inferior para respostas mais curtas e um valor superior para respostas potencialmente mais longas.

Método HTTP e URL:

POST https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/endpoints/ENDPOINT_ID:generateContent

Corpo JSON do pedido:

{
    "contents": [
        {
            "role": "USER",
            "parts": {
                "text" : "Why is sky blue?"
            }
        }
    ],
    "generation_config": {
        "temperature":TEMPERATURE,
        "topP": TOP_P,
        "topK": TOP_K,
        "maxOutputTokens": MAX_OUTPUT_TOKENS
    }
}

Para enviar o seu pedido, escolha uma destas opções:

curl

Guarde o corpo do pedido num ficheiro com o nome request.json, e execute o seguinte comando:

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/endpoints/ENDPOINT_ID:generateContent"

PowerShell

Guarde o corpo do pedido num ficheiro com o nome request.json, e execute o seguinte comando:

$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/endpoints/ENDPOINT_ID:generateContent" | Select-Object -Expand Content

Deve receber uma resposta JSON semelhante à seguinte.

Elimine um modelo otimizado

Para eliminar um modelo otimizado:

REST

Chame o método models.delete.

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • PROJECT_ID: .
  • REGION: a região onde o modelo otimizado está localizado.
  • MODEL_ID: o modelo a eliminar.

Método HTTP e URL:

DELETE https://REGION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/models/MODEL_ID

Para enviar o seu pedido, escolha uma destas opções:

curl

Execute o seguinte comando:

curl -X DELETE \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://REGION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/models/MODEL_ID"

PowerShell

Execute o seguinte comando:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method DELETE `
-Headers $headers `
-Uri "https://REGION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/models/MODEL_ID" | Select-Object -Expand Content

Deve receber um código de estado de êxito (2xx) e uma resposta vazia.

SDK Vertex AI para Python

from google.cloud import aiplatform

aiplatform.init(project=PROJECT_ID, location=LOCATION)

# To find out which models are available in Model Registry
models = aiplatform.Model.list()

model = aiplatform.Model(MODEL_ID)
model.delete()

Métricas de aperfeiçoamento e validação

Pode configurar uma tarefa de ajuste de modelos para recolher e comunicar métricas de ajuste de modelos e avaliação de modelos, que podem ser visualizadas no Vertex AI Studio.

  1. Para ver detalhes de um modelo otimizado na Google Cloud consola, aceda à página do Vertex AI Studio.

    Aceda ao Vertex AI Studio

  2. Na tabela Ajustar e refinar, clique no nome do modelo ajustado para o qual quer ver as métricas.

    As métricas de otimização aparecem no separador Monitorizar.

Métricas de aperfeiçoamento de modelos

A tarefa de ajuste do modelo recolhe automaticamente as seguintes métricas de ajuste para Gemini 2.0 Flash:

  • /train_total_loss: perda para o conjunto de dados de ajuste num passo de preparação.
  • /train_fraction_of_correct_next_step_preds: a precisão do token num passo de preparação. Uma única previsão consiste numa sequência de tokens. Esta métrica mede a precisão dos tokens previstos quando comparados com a verdade fundamental no conjunto de dados de ajuste.
  • /train_num_predictions: número de tokens previstos num passo de preparação.

Métricas de validação do modelo

Pode configurar uma tarefa de ajuste do modelo para recolher as seguintes métricas de validação para Gemini 2.0 Flash:

  • /eval_total_loss: perda para o conjunto de dados de validação num passo de validação.
  • /eval_fraction_of_correct_next_step_preds: a precisão do token num passo de validação. Uma única previsão consiste numa sequência de tokens. Esta métrica mede a precisão dos tokens previstos quando comparados com a verdade fundamental no conjunto de dados de validação.
  • /eval_num_predictions: número de tokens previstos num passo de validação.

As visualizações das métricas estão disponíveis após o início da execução da tarefa de otimização. É atualizado em tempo real à medida que a otimização progride. Se não especificar um conjunto de dados de validação quando criar a tarefa de ajuste, apenas as visualizações das métricas de ajuste estão disponíveis.

O que se segue?