Utilizzare i checkpoint nell'ottimizzazione fine supervisionata per i modelli Gemini

Un checkpoint è uno snapshot dello stato di un modello in un punto specifico del processo di perfezionamento. Puoi utilizzare i checkpoint intermedi nella messa a punto del modello Gemini per:

  • Salva l'avanzamento dell'ottimizzazione.
  • Confronta il rendimento dei checkpoint intermedi.
  • Seleziona il checkpoint con il rendimento migliore prima dell'overfitting per impostarlo come checkpoint predefinito.

Per i job di ottimizzazione con meno di 10 epoche, viene salvato un checkpoint approssimativamente dopo ogni epoca. Per i job di ottimizzazione con più di 10 epoche, vengono salvati circa 10 checkpoint con distribuzione uniforme, ad eccezione del checkpoint finale, che viene salvato immediatamente dopo l'addestramento di tutte le epoche.

I checkpoint intermedi vengono sottoposti a deployment nei nuovi endpoint in sequenza man mano che l'ottimizzazione procede. L'endpoint del modello ottimizzato rappresenta l'endpoint del checkpoint predefinito, mentre i checkpoint del modello ottimizzato includono tutti i checkpoint e i relativi endpoint.

Modelli supportati

I seguenti modelli Gemini supportano i checkpoint:

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

Per informazioni dettagliate sulle versioni del modello Gemini, consulta Modelli Google e Versioni e ciclo di vita dei modelli.

Crea un job di ottimizzazione che esporta i checkpoint

Puoi creare un job di perfezionamento supervisionato che esporta i checkpoint utilizzando l'SDK Google Gen AI o la console Google Cloud .

Console

Per creare un job di ottimizzazione che esporti i checkpoint, vai alla pagina Vertex AI Studio e seleziona la scheda Ottimizzazione. Per saperne di più, vedi Ottimizzare un modello.

SDK Google Gen AI

(Anteprima) Puoi configurare il servizio di valutazione dell'IA generativa per eseguire le valutazioni automaticamente dopo ogni checkpoint. Questa configurazione di valutazione è disponibile nella regione 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'

Elenca i checkpoint per un job di ottimizzazione

Puoi visualizzare i checkpoint del job di ottimizzazione completato nella consoleGoogle Cloud o elencarli utilizzando l'SDK Google Gen AI.

Se i checkpoint intermedi sono disabilitati, viene visualizzato o restituito solo il checkpoint finale.

Console

  1. Per individuare il modello ottimizzato nella console Google Cloud , vai alla pagina Vertex AI Studio.

    Vai a Vertex AI Studio

  2. Nella scheda Ottimizzazione, trova il tuo modello e fai clic su Monitora.

    Vengono mostrate le metriche di ottimizzazione e i checkpoint del modello. In ogni grafico delle metriche, i numeri dei checkpoint vengono visualizzati come annotazioni nel seguente modo:

    • Per ogni epoca, vengono visualizzati un numero di passaggio e un numero di epoca.
    • Il numero di passi è il passo esatto in cui viene salvato un checkpoint.
    • Il numero di epoca è un numero di epoca stimato a cui appartiene il checkpoint, ad eccezione del checkpoint finale per un job di ottimizzazione completato, che ha il numero di epoca esatto.

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)

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'

Visualizzare i dettagli e i checkpoint del modello

Puoi visualizzare il modello ottimizzato nella console Google Cloud o utilizzare Google Gen AI SDK per ottenere i dettagli del modello, inclusi endpoint e checkpoint.

Il campo Endpoint del modello viene aggiornato come segue:

  • Viene aggiornato in base al checkpoint predefinito e rappresenta l'endpoint che il job di ottimizzazione ha creato per il checkpoint predefinito aggiornato durante l'ottimizzazione.
  • Se un modello non è presente o se il job di ottimizzazione non riesce a recuperarne uno, il valore di Endpoint è vuoto.
  • Se il checkpoint predefinito non viene eseguito il deployment (perché l'ottimizzazione è ancora in corso o perché il deployment non è riuscito), il valore di Endpoint è vuoto.

Console

Puoi visualizzare il modello ottimizzato in Vertex AI Model Registry nella pagina Endpoint di previsione online.

  1. Vai alla pagina Model Registry dalla sezione Vertex AI della console Google Cloud .

    Vai alla pagina Model Registry

  2. Fai clic sul nome del modello.

    Viene visualizzata la versione predefinita del modello.

  3. Fai clic sulla scheda Dettagli versione per visualizzare le informazioni sulla versione del modello.

    Tieni presente che l'obiettivo è Large model, il tipo di modello è Foundation e l'origine è Vertex AI Studio tuning.

  4. Fai clic sulla scheda Deployment e test per visualizzare l'endpoint in cui è stato eseguito il deployment del modello.

  5. Fai clic sul nome dell'endpoint per andare alla pagina Endpoint e visualizzare l'elenco dei checkpoint di cui è stato eseguito il deployment nell'endpoint. Per ogni checkpoint vengono visualizzati l'ID versione del modello e l'ID checkpoint.

In alternativa, i checkpoint possono essere visualizzati anche nella pagina Dettagli job di ottimizzazione. Per visualizzare questa pagina, vai alla pagina Ottimizzazione e fai clic su uno dei job di ottimizzazione.

Vai alla pagina Tuning

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)
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 hai configurato il servizio di valutazione dell'AI generativa per eseguire le valutazioni dopo ogni checkpoint, visualizza il bucket Cloud Storage che hai configurato per i risultati della valutazione.

Testare i checkpoint

Puoi visualizzare un elenco di checkpoint in Vertex AI Model Registry e testare ciascuno. In alternativa, puoi utilizzare Google Gen AI SDK per elencare e testare i tuoi checkpoint.

Console

  1. Per individuare il modello ottimizzato nella console Google Cloud , vai alla pagina Vertex AI Studio.

    Vai a Vertex AI Studio

  2. Nella scheda Ottimizzazione, trova il tuo modello e fai clic su Monitora.

  3. Nella tabella dei checkpoint nel riquadro Monitora, fai clic sul link Testa accanto al checkpoint che ti interessa.

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 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 ...

Seleziona un nuovo checkpoint predefinito

Puoi utilizzare il checkpoint predefinito per rappresentare il checkpoint con il rendimento migliore. Per impostazione predefinita, il checkpoint predefinito è il checkpoint finale di un job di ottimizzazione.

Quando esegui il deployment di un modello con checkpoint, viene eseguito il deployment del checkpoint predefinito.

Quando copi un modello con checkpoint, il modello di destinazione avrà lo stesso ID checkpoint predefinito del modello di origine. Vengono copiati tutti i checkpoint, quindi puoi selezionare un nuovo checkpoint predefinito per il modello di destinazione.

L'endpoint del job di ottimizzazione verrà aggiornato se aggiorni un checkpoint predefinito e puoi utilizzare il nuovo endpoint per la previsione.

Console

  1. Per individuare il modello ottimizzato nella console Google Cloud , vai alla pagina Vertex AI Studio.

    Vai a Vertex AI Studio

  2. Nella scheda Ottimizzazione, trova il tuo modello e fai clic su Monitora.

  3. Nella tabella dei checkpoint nel riquadro Monitora, fai clic su Azioni accanto al checkpoint che preferisci e seleziona Imposta come predefinito.

  4. Fai clic su Conferma.

    I grafici delle metriche e la tabella dei checkpoint vengono aggiornati per mostrare il nuovo checkpoint predefinito. L'endpoint nella pagina dei dettagli di TuningJob viene aggiornato per mostrare l'endpoint del nuovo checkpoint predefinito.

SDK 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

Passaggi successivi