Utilizzare i checkpoint nell'ottimizzazione del modello Gemini

Un checkpoint è uno snapshot dello stato di un modello in un punto specifico del processo di ottimizzazione. Puoi utilizzare i checkpoint intermedi nell'ottimizzazione dei modelli Gemini per:

  • Salvare lo stato di avanzamento dell'ottimizzazione.
  • Confrontare il rendimento dei checkpoint intermedi.
  • Selezionare il checkpoint con il rendimento migliore prima dell'overfitting come checkpoint predefinito.

Per i job di ottimizzazione con meno di 10 epoche, viene salvato un checkpoint circa dopo ogni epoca. Per i job di ottimizzazione con più di 10 epoche, vengono salvati circa 10 checkpoint con una 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 in 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:

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

Creare un job di ottimizzazione che esporti i checkpoint

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

Console

Per creare un job di ottimizzazione che esporti i checkpoint, vai alla pagina Vertex AI Studio e seleziona la scheda Ottimizzazione. Per ulteriori informazioni, consulta Ottimizzare un modello.

SDK Google Gen AI

(Anteprima) Puoi configurare il Gen AI evaluation service per eseguire le valutazioni automaticamente dopo ogni checkpoint. Questa configurazione di valutazione è disponibile nella regione us-central1.

Installa l'SDK Google Gen AI:

pip install --upgrade google-genai

Per saperne di più, consulta la documentazione di riferimento dell'SDK.

Imposta le variabili di ambiente per utilizzare l'SDK Gen AI con Vertex AI:

# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values
# with appropriate values for your project.
export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT
export GOOGLE_CLOUD_LOCATION=us-central1
export GOOGLE_GENAI_USE_VERTEXAI=True

Crea il job di ottimizzazione:

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",
        # 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'

Elencare i checkpoint per un job di ottimizzazione

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

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

Console

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

    Vai a Vertex AI Studio

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

    Vengono visualizzate 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, viene visualizzato un numero di passaggi e un numero di epoca.
    • Il numero di passaggi è il passaggio 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 Google Cloud console o utilizzare l' SDK Google Gen AI per ottenere i dettagli del modello, inclusi endpoint e checkpoint.

Il campo Endpoint del modello viene aggiornato nel seguente modo:

  • Viene aggiornato in base al checkpoint predefinito e rappresenta l'endpoint creato dal job di ottimizzazione per il checkpoint predefinito aggiornato durante l'ottimizzazione.
  • Se un modello non è presente o se il job di ottimizzazione non riesce a recuperare un modello, il valore Endpoint è vuoto.
  • Se il checkpoint predefinito non viene sottoposto a deployment (perché l'ottimizzazione è ancora in corso o perché il deployment non è riuscito), il valore 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 nella Google Cloud console.

    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 Esegui il deployment e testa 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 della versione del modello e l'ID del checkpoint. Il checkpoint predefinito è indicato dalla parola default accanto all'ID del 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 Ottimizzazione

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 Gen AI evaluation service per eseguire le valutazioni dopo ogni checkpoint, visualizza il bucket Cloud Storage configurato per i risultati della valutazione.

Testare i checkpoint

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

Console

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

    Vai a Vertex AI Studio

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

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

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

Selezionare 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 del 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 potrai utilizzare il nuovo endpoint per l'inferenza.

Console

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

    Vai a Vertex AI Studio

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

  3. Nella tabella dei checkpoint nel riquadro Monitora , fai clic su Azioni accanto al checkpoint desiderato 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