Usar pontos de verificação no ajuste fino supervisionado para modelos Gemini

Um checkpoint é um snapshot do estado de um modelo em um ponto específico do processo de ajuste refinado. É possível usar checkpoints intermediários no ajuste fino do modelo do Gemini para fazer o seguinte:

  • Salvar o progresso do ajuste.
  • Compare a performance dos pontos de verificação intermediários.
  • Selecione o checkpoint de melhor performance antes do overfitting para ser o padrão.

Para jobs de ajuste com menos de 10 épocas, um checkpoint é salvo aproximadamente após cada época. Para jobs de ajuste com mais de 10 épocas, cerca de 10 checkpoints são salvos com distribuição uniforme, exceto o checkpoint final, que é salvo imediatamente após o treinamento de todas as épocas.

Os checkpoints intermediários são implantados em novos endpoints de forma sequencial à medida que o ajuste avança. O endpoint do modelo ajustado representa o endpoint do checkpoint padrão, e os checkpoints do modelo ajustado incluem todos os checkpoints e os endpoints correspondentes.

Modelos compatíveis

Os seguintes modelos do Gemini são compatíveis com pontos de verificação:

  • gemini-2.0-flash-001
  • gemini-2.0-flash-lite-001
  • gemini-2.5-flash
  • gemini-2.5-flash-lite
  • gemini-2.5-pro

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

Criar um job de ajuste que exporta pontos de verificação

É possível criar um job de ajuste supervisionado que exporta pontos de verificação usando o SDK do Google Gen AI ou o console Google Cloud .

Console

Para criar um job de ajuste que exporte checkpoints, acesse a página do Vertex AI Studio e selecione a guia Ajuste. Para mais informações, consulte Ajustar um modelo.

SDK do Google Gen AI

(Prévia) É possível configurar o serviço de avaliação de IA generativa para executar avaliações automaticamente após cada checkpoint. Essa configuração de avaliação está disponível na região us-central1.

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 {response}"""
        )
    ],
    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",
        # Set to True to disable tuning intermediate checkpoints. Default is False.
        export_last_checkpoint_only=False,
        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'

Listar os checkpoints de um job de ajuste

É possível conferir os pontos de verificação do job de ajuste concluído no consoleGoogle Cloud ou listá-los usando o SDK do Google Gen AI.

Se os checkpoints intermediários estiverem desativados, apenas o checkpoint final será mostrado ou retornado.

Console

  1. Para localizar seu modelo ajustado no console Google Cloud , acesse a página Vertex AI Studio.

    Acessar o Vertex AI Studio

  2. Na guia Ajuste, encontre seu modelo e clique em Monitorar.

    As métricas de ajuste e os pontos de verificação do modelo são mostrados. Em cada gráfico de métricas, os números de pontos de verificação são mostrados como anotações da seguinte maneira:

    • Para cada época, você vê um número de etapa e um número de época.
    • O número da etapa é o momento exato em que um ponto de verificação é salvo.
    • O número da época é uma estimativa a que o checkpoint pertence, exceto o checkpoint final de um job de ajuste concluído, que tem o número exato da época.

SDK do 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)

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'

Ver detalhes e checkpoints do modelo

É possível conferir o modelo ajustado no console Google Cloud ou usar o SDK da IA generativa do Google para receber detalhes do modelo, incluindo endpoints e pontos de verificação.

O campo Endpoint do modelo é atualizado da seguinte forma:

  • Ele é atualizado com base no checkpoint padrão e representa o endpoint que o job de ajuste criou para o checkpoint padrão atualizado durante o ajuste.
  • Se um modelo não estiver presente ou se o job de ajuste não conseguir um modelo, o valor de Endpoint vai ficar vazio.
  • Se o ponto de verificação padrão não for implantado (porque o ajuste ainda está em andamento ou porque a implantação falhou), o valor Endpoint vai estar vazio.

Console

Você pode conferir o modelo ajustado no Vertex AI Model Registry na página Endpoints de previsão on-line Endpoints.

  1. Acesse a página Registro de modelo na seção "Vertex AI" do console Google Cloud .

    Acessar a página "Modelo de registro"

  2. Clique no nome do modelo.

    A versão padrão do modelo vai aparecer.

  3. Clique na guia Detalhes da versão para conferir informações sobre a versão do modelo.

    O Objetivo é Large model, o Tipo de modelo é Foundation e a Origem é Vertex AI Studio tuning.

  4. Clique na guia Implantar e testar para conferir o endpoint em que o modelo está implantado.

  5. Clique no nome do endpoint para acessar a página Endpoint e conferir a lista de checkpoints implantados no endpoint. Para cada checkpoint, o ID da versão do modelo e o ID do checkpoint são mostrados.

Como alternativa, os pontos de verificação também podem ser visualizados na página Detalhes do job de ajuste. Para acessar essa página, vá até Ajuste e clique em um dos jobs de ajuste.

Acessar a página "Ajuste"

SDK do 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)
tuned_model = client.models.get(model=tuning_job.tuned_model.model)
print(tuned_model)
# Example response:
# Model(name='projects/123456789012/locations/us-central1/models/1234567890@1', ...)

print(f"Default checkpoint: {tuned_model.default_checkpoint_id}")
# Example response:
# Default checkpoint: 2

if tuned_model.checkpoints:
    for _, checkpoint in enumerate(tuned_model.checkpoints):
        print(f"Checkpoint {checkpoint.checkpoint_id}: ", checkpoint)
# Example response:
# Checkpoint 1:  checkpoint_id='1' epoch=1 step=10
# Checkpoint 2:  checkpoint_id='2' epoch=2 step=20

Se você tiver configurado o serviço de avaliação de IA generativa para executar avaliações após cada ponto de verificação, confira o bucket do Cloud Storage configurado para os resultados da avaliação.

Testar os checkpoints

É possível conferir uma lista de pontos de verificação no Vertex AI Model Registry e testar cada um deles. Ou use o SDK da IA generativa do Google para listar e testar seus pontos de verificação.

Console

  1. Para localizar seu modelo ajustado no console Google Cloud , acesse a página Vertex AI Studio.

    Acessar o Vertex AI Studio

  2. Na guia Ajuste, encontre seu modelo e clique em Monitorar.

  3. Na tabela de pontos de verificação no painel Monitorar, ao lado do ponto de verificação desejado, clique no link Testar.

SDK do 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 default checkpoint.
response = client.models.generate_content(
    model=tuning_job.tuned_model.endpoint,
    contents=contents,
)
print(response.text)
# Example response:
# The sky is blue because ...

# Predicts with Checkpoint 1.
checkpoint1_response = client.models.generate_content(
    model=tuning_job.tuned_model.checkpoints[0].endpoint,
    contents=contents,
)
print(checkpoint1_response.text)
# Example response:
# The sky is blue because ...

# Predicts with Checkpoint 2.
checkpoint2_response = client.models.generate_content(
    model=tuning_job.tuned_model.checkpoints[1].endpoint,
    contents=contents,
)
print(checkpoint2_response.text)
# Example response:
# The sky is blue because ...

Selecione um novo checkpoint padrão

Você pode usar o checkpoint padrão para representar o checkpoint com melhor desempenho. Por padrão, o checkpoint padrão é o checkpoint final de um job de ajuste.

Ao implantar um modelo com checkpoints, o checkpoint padrão é implantado.

Ao copiar um modelo com checkpoints, o modelo de destino teria o mesmo ID de checkpoint padrão do modelo de origem. Todos os checkpoints são copiados, então você pode selecionar um novo checkpoint padrão para o modelo de destino.

O endpoint do job de ajuste será atualizado se você atualizar um checkpoint padrão, e será possível usar o novo endpoint para previsão.

Console

  1. Para localizar seu modelo ajustado no console Google Cloud , acesse a página Vertex AI Studio.

    Acessar o Vertex AI Studio

  2. Na guia Ajuste, encontre seu modelo e clique em Monitorar.

  3. Na tabela de pontos de verificação no painel Monitorar, ao lado do ponto de verificação desejado, clique em Ações e selecione Definir como padrão.

  4. Clique em Confirmar.

    Os gráficos de métricas e a tabela de checkpoints são atualizados para mostrar o novo checkpoint padrão. O endpoint na página de detalhes do TuningJob é atualizado para mostrar o endpoint do novo checkpoint padrão.

SDK do Google Gen AI

from google import genai
from google.genai.types import HttpOptions, UpdateModelConfig

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)
tuned_model = client.models.get(model=tuning_job.tuned_model.model)

print(f"Default checkpoint: {tuned_model.default_checkpoint_id}")
print(f"Tuned model endpoint: {tuning_job.tuned_model.endpoint}")
# Example response:
# Default checkpoint: 2
# projects/123456789012/locations/us-central1/endpoints/123456789012345

# Set a new default checkpoint.
# Eg. checkpoint_id = "1"
tuned_model = client.models.update(
    model=tuned_model.name,
    config=UpdateModelConfig(default_checkpoint_id=checkpoint_id),
)

print(f"Default checkpoint: {tuned_model.default_checkpoint_id}")
print(f"Tuned model endpoint: {tuning_job.tuned_model.endpoint}")
# Example response:
# Default checkpoint: 1
# projects/123456789012/locations/us-central1/endpoints/123456789000000

A seguir