Ottimizza i modelli Gemini utilizzando il fine-tuning supervisionato

Questo documento descrive come ottimizzare un modello Gemini utilizzando l'ottimizzazione supervisionata.

Prima di iniziare

Prima di iniziare, devi preparare un set di dati di fine-tuning supervisionato. A seconda del caso d'uso, esistono requisiti diversi per la preparazione di un set di dati:

Modelli supportati

I seguenti modelli Gemini supportano l'ottimizzazione supervisionata:

Fai clic per espandere i modelli supportati

Crea un job di ottimizzazione

Puoi creare un job di fine-tuning supervisionato utilizzando la console Google Cloud , l'SDK Google Gen AI, l'SDK Agent Platform per Python, l'API REST o Colab Enterprise.

(Facoltativo) Includi evaluationConfig per eseguire automaticamente una valutazione utilizzando Gen AI evaluation service al termine del job di ottimizzazione. Questa configurazione di valutazione è disponibile nella regione us-central1.

Console

Per ottimizzare un modello di testo con il fine-tuning supervisionato utilizzando la consoleGoogle Cloud , segui questi passaggi:

  1. Nella sezione Gemini Enterprise Agent Platform della console Google Cloud , vai alla pagina Agent Platform Studio.

    Vai ad Agent Platform Studio

  2. Fai clic su Crea modello ottimizzato.
  3. Nella sezione Dettagli modello, configura quanto segue:
    1. Nel campo Nome modello ottimizzato, inserisci un nome per il nuovo modello ottimizzato, fino a 128 caratteri.
    2. Nel campo Modello di base, seleziona il foundation model da ottimizzare.
    3. Nel campo a discesa Regione, seleziona la regione in cui viene eseguito il job di ottimizzazione della pipeline e in cui è stato eseguito il deployment del modello ottimizzato.
  4. In Impostazione di ottimizzazione, configura quanto segue:
    1. Nel campo Numero di epoche, inserisci il numero di passaggi da eseguire per l'ottimizzazione del modello.
    2. Nel campo Dimensioni adattatore, inserisci le dimensioni dell'adattatore da utilizzare per l'ottimizzazione del modello.
    3. Nel campo Moltiplicatore del tasso di apprendimento, inserisci la dimensione del passaggio in ogni iterazione. Il valore predefinito è 1. .
  5. (Facoltativo) Per disattivare i checkpoint intermedi e utilizzare solo l'ultimo checkpoint, fai clic sul pulsante di attivazione/disattivazione Esporta solo l'ultimo checkpoint.
  6. Fai clic su Continua.

    Viene visualizzata la pagina Set di dati di ottimizzazione.

  7. Per caricare un file del set di dati, seleziona una delle seguenti opzioni:
    1. Se non hai ancora caricato un set di dati, seleziona il pulsante di opzione per Carica file in Cloud Storage.
      1. Nel campo Seleziona file JSONL, fai clic su Sfoglia e seleziona il file del set di dati.
      2. Nel campo Posizione del set di dati, fai clic su Sfoglia e seleziona il bucket Cloud Storage in cui vuoi archiviare il file del set di dati.
    2. Se il file del set di dati si trova già in un bucket Cloud Storage, seleziona il pulsante di opzione per File esistente su Cloud Storage.
      1. Nel campo Percorso file Cloud Storage, fai clic su Sfoglia e seleziona il bucket Cloud Storage in cui si trova il file del set di dati.
  8. (Facoltativo) Per ottenere metriche di convalida durante l'addestramento, fai clic sul pulsante di attivazione/disattivazione Abilita convalida del modello.
    1. Nel file Set di dati di convalida, inserisci il percorso Cloud Storage del set di dati di convalida.
  9. Fai clic su Avvia ottimizzazione.

    Il nuovo modello viene visualizzato nella sezione Modelli ottimizzati della pagina Ottimizza e distilla. Al termine dell'ottimizzazione del modello, lo Stato indica Riuscito.

SDK Gen AI

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 Gemini Enterprise Agent Platform:

# 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_ENTERPRISE=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",
        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 Agent Platform


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

Per creare un job di ottimizzazione del modello, invia una richiesta POST utilizzando il metodo tuningJobs.create. Alcuni parametri non sono supportati da tutti i modelli. Assicurati di includere solo i parametri applicabili per il modello che stai ottimizzando.

Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:

  • PROJECT_ID: il tuo ID progetto.
  • TUNING_JOB_REGION: la regione in cui viene eseguito il job di ottimizzazione. Questa è anche la regione predefinita in cui viene caricato il modello ottimizzato.
  • BASE_MODEL: Nome del foundation model da ottimizzare.
  • TRAINING_DATASET_URI: l'URI Cloud Storage del set di dati di addestramento. Il set di dati deve essere formattato come file JSONL. Per ottenere risultati ottimali, fornisci almeno 100-500 esempi. Per saperne di più, consulta Informazioni sui set di dati di ottimizzazione supervisionata .
  • VALIDATION_DATASET_URI(Facoltativo) L'URI Cloud Storage del file del set di dati di convalida.
  • EPOCH_COUNT(Facoltativo) Il numero di passaggi completi eseguiti dal modello sull'intero set di dati di addestramento durante l'addestramento. Lascia questo campo vuoto per utilizzare il valore consigliato precompilato.
  • ADAPTER_SIZE(Facoltativo) Dimensioni dell'adattatore da utilizzare per il job di ottimizzazione. Le dimensioni dell'adattatore influiscono sul numero di parametri addestrabili per il job di ottimizzazione. Un adattatore più grande implica che il modello può apprendere attività più complesse, ma richiede un set di dati di addestramento più grande e tempi di addestramento più lunghi.
  • LEARNING_RATE_MULTIPLIER: facoltativo: un moltiplicatore da applicare al tasso di apprendimento suggerito. Lascia il campo vuoto per utilizzare il valore consigliato.
  • EXPORT_LAST_CHECKPOINT_ONLY(Facoltativo) Imposta true per utilizzare solo l'ultimo checkpoint.
  • METRIC_SPEC(Facoltativo) Una o più specifiche delle metriche che utilizzi per eseguire una valutazione utilizzando il servizio di valutazione dell'AI generativa. Puoi utilizzare le seguenti specifiche delle metriche: "pointwise_metric_spec", "pairwise_metric_spec", "exact_match_spec", "bleu_spec" e "rouge_spec".
  • METRIC_SPEC_FIELD_NAME(Facoltativo) I campi obbligatori per la specifica della metrica scelta. Ad esempio, "metric_prompt_template"
  • METRIC_SPEC_FIELD_NAME_CONTENT(Facoltativo) Il campo contenuto per la specifica della metrica scelta. Ad esempio, puoi utilizzare il seguente contenuto del campo per una valutazione puntuale: "Evaluate the fluency of this sentence: {response}. Give score from 0 to 1. 0 - not fluent at all. 1 - very fluent."
  • CLOUD_STORAGE_BUCKET(Facoltativo) Il bucket Cloud Storage in cui archiviare i risultati di un'esecuzione della valutazione da parte di Gen AI evaluation service.
  • TUNED_MODEL_DISPLAYNAME(Facoltativo) Un nome visualizzato per il modello ottimizzato. Se non è impostato, viene generato un nome casuale.
  • KMS_KEY_NAME(Facoltativo) L'identificatore di risorsa Cloud KMS della chiave di crittografia gestita dal cliente utilizzata per proteggere una risorsa. La chiave ha il formato: projects/my-project/locations/my-region/keyRings/my-kr/cryptoKeys/my-key. La chiave deve trovarsi nella stessa regione in cui viene creata la risorsa di calcolo. Per saperne di più, consulta Chiavi di crittografia gestite dal cliente (CMEK).
  • SERVICE_ACCOUNT(Facoltativo) Il account di servizio con cui viene eseguito il carico di lavoro tuningJob. Se non specificato, viene utilizzato l'agente di servizio di ottimizzazione protetta di Agent Platform nel progetto. Consulta Agente del servizio di ottimizzazione. Se prevedi di utilizzare un service account gestito dal cliente, devi concedere il ruolo roles/aiplatform.tuningServiceAgent al account di servizio. Concedi anche il ruolo Agente di servizio di ottimizzazione roles/iam.serviceAccountTokenCreator al service account gestito dal cliente.

Metodo HTTP e URL:

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

Corpo JSON della richiesta:

{
  "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"
}

Per inviare la richiesta, scegli una di queste opzioni:

curl

Salva il corpo della richiesta in un file denominato request.json, quindi esegui il comando seguente:

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

Salva il corpo della richiesta in un file denominato request.json, quindi esegui il comando seguente:

$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

Dovresti ricevere una risposta JSON simile alla seguente.

Comando curl di esempio

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

Puoi creare un job di ottimizzazione del modello in Agent Platform utilizzando il riquadro laterale in Colab Enterprise. Il riquadro laterale aggiunge gli snippet di codice pertinenti al notebook. Poi modifichi gli snippet di codice ed eseguili per creare il job di ottimizzazione. Per scoprire di più sull'utilizzo del riquadro laterale con i job di ottimizzazione di Agent Platform, consulta Interagire con Agent Platform per ottimizzare un modello.

  1. Nella console Google Cloud , vai alla pagina I miei blocchi note di Colab Enterprise.

    Vai a I miei notebook

  2. Nel menu Regione, seleziona la regione che contiene il notebook.

  3. Fai clic sul notebook che vuoi aprire. Se non hai ancora creato un notebook, creane uno.

  4. A destra del notebook, nel riquadro laterale, fai clic sul pulsante  Ottimizzazione.

    Il riquadro laterale espande la scheda Ottimizzazione.

  5. Fai clic sul pulsante Ottimizza un modello Gemini.

    Colab Enterprise aggiunge celle di codice al notebook per ottimizzare un modello Gemini.

  6. Nel notebook, trova la cella di codice che memorizza i valori dei parametri. Utilizzerai questi parametri per interagire con Vertex AI.

  7. Aggiorna i valori dei seguenti parametri:

    • PROJECT_ID: l'ID del progetto in cui si trova il notebook.
    • REGION: la regione in cui si trova il notebook.
    • TUNED_MODEL_DISPLAY_NAME: il nome del modello ottimizzato.
  8. Nella cella di codice successiva, aggiorna i parametri di ottimizzazione del modello:

    • source_model: il modello Gemini che vuoi utilizzare, ad esempio gemini-2.0-flash-001.
    • train_dataset: l'URL del set di dati di addestramento.
    • validation_dataset: l'URL del set di dati di convalida.
    • Modifica i parametri rimanenti in base alle esigenze.
  9. Esegui le celle di codice che il riquadro laterale ha aggiunto al notebook.

  10. Dopo l'esecuzione dell'ultima cella di codice, fai clic sul pulsante  Visualizza job di ottimizzazione visualizzato.

  11. Il riquadro laterale mostra informazioni sul job di ottimizzazione del modello.

    • La scheda Monitora mostra le metriche di ottimizzazione quando sono pronte.
    • La scheda Set di dati mostra un riepilogo e le metriche relative al set di dati dopo l'elaborazione.
    • La scheda Dettagli mostra informazioni sul job di ottimizzazione, ad esempio il metodo di ottimizzazione e il modello di base (modello di origine) che hai utilizzato.
  12. Al termine del job di ottimizzazione, puoi passare direttamente dalla scheda Dettagli ottimizzazione a una pagina in cui puoi testare il modello. Fai clic su Test.

    La console Google Cloud si apre alla pagina Chat di testo di Vertex AI, dove puoi testare il modello.

Ottimizzazione degli iperparametri

Ti consigliamo di inviare il primo job di ottimizzazione senza modificare gli iperparametri. Il valore predefinito è il valore consigliato in base ai nostri risultati di benchmarking per ottenere la migliore qualità dell'output del modello.

  • Epoche: il numero di passaggi completi che il modello esegue sull'intero set di dati di addestramento durante l'addestramento. Gemini Enterprise Agent Platform regola automaticamente il valore predefinito in base alle dimensioni del set di dati di addestramento. Questo valore si basa sui risultati del benchmarking per ottimizzare la qualità dell'output del modello.
  • Dimensioni dell'adattatore: le dimensioni dell'adattatore da utilizzare per il job di ottimizzazione. Le dimensioni dell'adattatore influiscono sul numero di parametri addestrabili per il job di ottimizzazione. Un adattatore più grande implica che il modello può apprendere attività più complesse, ma richiede un set di dati di addestramento più grande e tempi di addestramento più lunghi.
  • Moltiplicatore del tasso di apprendimento: un moltiplicatore da applicare al tasso di apprendimento suggerito. Puoi aumentare il valore per una convergenza più rapida o diminuire il valore per evitare l'overfitting.

Per una discussione sulle best practice per il fine-tuning supervisionato, consulta il post del blog Supervised Fine Tuning for Gemini: A best practices guide.

Visualizzare un elenco di job di ottimizzazione

Puoi visualizzare un elenco dei job di ottimizzazione nel progetto corrente utilizzando la consoleGoogle Cloud , l'SDK Google Gen AI, l'SDK Agent Platform per Python o inviando una richiesta GET utilizzando il metodo tuningJobs.

Console

Per visualizzare i job di ottimizzazione nella console Google Cloud , vai alla pagina Agent Platform Studio.

Vai ad Agent Platform Studio

I tuoi job di ottimizzazione di Gemini sono elencati nella tabella della sezione Modelli ottimizzati.

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 Agent Platform 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

Per visualizzare un elenco dei job di ottimizzazione del modello, invia una richiesta GET utilizzando il metodo tuningJobs.list.

Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:

  • PROJECT_ID: .
  • TUNING_JOB_REGION: la regione in cui viene eseguito il job di ottimizzazione. Questa è anche la regione predefinita in cui viene caricato il modello ottimizzato.

Metodo HTTP e URL:

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

Per inviare la richiesta, scegli una di queste opzioni:

curl

Esegui questo 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

Esegui questo 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

Dovresti ricevere una risposta JSON simile alla seguente.

Ottieni i dettagli di un job di ottimizzazione

Puoi ottenere i dettagli di un job di ottimizzazione nel tuo progetto attuale utilizzando la consoleGoogle Cloud , l'SDK Google Gen AI, l'SDK Agent Platform per Python o inviando una richiesta GET utilizzando il metodo tuningJobs.

Console

  1. Per visualizzare i dettagli di un modello ottimizzato nella console Google Cloud , vai alla pagina Agent Platform Studio.

    Vai ad Agent Platform Studio

  2. Nella tabella Modelli ottimizzati, trova il tuo modello e fai clic su Dettagli.

    Vengono visualizzati i dettagli del modello.

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 Agent Platform 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

Per visualizzare un elenco di job di ottimizzazione del modello, invia una richiesta GET utilizzando il metodo tuningJobs.get e specifica TuningJob_ID.

Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:

  • PROJECT_ID: .
  • TUNING_JOB_REGION: la regione in cui viene eseguito il job di ottimizzazione. Questa è anche la regione predefinita in cui viene caricato il modello ottimizzato.
  • TUNING_JOB_ID: l'ID del job di ottimizzazione.

Metodo HTTP e URL:

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

Per inviare la richiesta, scegli una di queste opzioni:

curl

Esegui questo 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

Esegui questo 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

Dovresti ricevere una risposta JSON simile alla seguente.

Annullamento di un job di ottimizzazione

Puoi annullare un job di ottimizzazione nel tuo progetto attuale utilizzando la console Google Cloud o l'SDK Agent Platform per Python oppure inviando una richiesta POST utilizzando il metodo tuningJobs.

REST

Per visualizzare un elenco di job di ottimizzazione del modello, invia una richiesta GET utilizzando il metodo tuningJobs.cancel e specifica TuningJob_ID.

Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:

  • PROJECT_ID: .
  • TUNING_JOB_REGION: la regione in cui viene eseguito il job di ottimizzazione. Questa è anche la regione predefinita in cui viene caricato il modello ottimizzato.
  • TUNING_JOB_ID: l'ID del job di ottimizzazione.

Metodo HTTP e URL:

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

Per inviare la richiesta, scegli una di queste opzioni:

curl

Esegui questo 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

Esegui questo 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

Dovresti ricevere una risposta JSON simile alla seguente.

SDK Agent Platform 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()

Console

  1. Per annullare un job di ottimizzazione nella console Google Cloud , vai alla pagina Agent Platform Studio.

    Vai ad Agent Platform Studio

  2. Nella tabella Modelli ottimizzati, fai clic su Gestisci esecuzione.

  3. Fai clic su Annulla.

Valuta il modello ottimizzato

Se non hai configurato il servizio di valutazione dell'IA generativa per l'esecuzione automatica dopo il job di ottimizzazione, puoi interagire con l'endpoint del modello ottimizzato allo stesso modo di Gemini di base utilizzando l'SDK Agent Platform per Python o l'SDK Google Gen AI oppure inviando una richiesta POST utilizzando il metodo generateContent.

Per i modelli di ragionamento, consigliamo di disattivare il ragionamento o di impostare il budget di ragionamento sul valore minimo per le attività ottimizzate per prestazioni e costi ottimali. Durante il fine-tuning supervisionato, il modello impara a imitare il dato di fatto nel set di dati di ottimizzazione, omettendo il processo di ragionamento. Pertanto, il modello ottimizzato è in grado di gestire l'attività in modo efficace senza budget di ragionamento.

L'esempio seguente chiede al modello: "Perché il cielo è blu?".

Console

  1. Per visualizzare i dettagli di un modello ottimizzato nella console Google Cloud , vai alla pagina Agent Platform Studio.

    Vai ad Agent Platform Studio

  2. Nella tabella Modelli ottimizzati, seleziona Test.

    Viene visualizzata una pagina in cui puoi creare una conversazione con il modello ottimizzato.

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 Agent Platform Python

    from vertexai.preview.tuning import sft
    from vertexai.generative_models import GenerativeModel

    sft_tuning_job = sft.SupervisedTuningJob("projects//locations//tuningJobs/")
    tuned_model = GenerativeModel(sft_tuning_job.tuned_model_endpoint_name)
    content = "Why is sky blue?"
    print(tuned_model.generate_content(content))
    

REST

Per testare un modello ottimizzato con un prompt, invia una richiesta POST e specifica `MREP_LOCATION` e `ENDPOINT_ID`.

Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:

  • MREP_LOCATION: La posizione dell'endpoint multi-regione Google Cloud in cui viene eseguito il job di ottimizzazione. I seguenti sono valori accettati:
    • us
    • eu
  • PROJECT_ID: Il tuo [ID progetto](/resource-manager/docs/creating-managing-projects#identifiers).
  • ENDPOINT_ID: l'ID endpoint del modello ottimizzato dall'API GET.
  • TEMPERATURE: la temperatura viene utilizzata per il campionamento durante la generazione di risposte, che si verifica quando vengono applicati topP e topK. La temperatura controlla il grado di casualità nella selezione dei token. Le temperature basse sono ideali per prompt che richiedono risposte meno aperte o creative, mentre le temperature più alte possono portare a risultati più diversificati o creativi. Una temperatura pari a 0 indica che vengono sempre selezionati i token con la probabilità più alta. In questo caso, le risposte a un determinato prompt sono per lo più deterministiche, ma è comunque possibile una piccola variazione.

    Se il modello restituisce una risposta troppo generica, troppo breve o fornisce una risposta di riserva, prova ad aumentare la temperatura. Se il modello entra in una generazione infinita, aumentare la temperatura ad almeno 0.1 può portare a risultati migliori.

    1.0 è il valore iniziale consigliato per la temperatura.
  • TOP_P: Top-P cambia il modo in cui il modello seleziona i token per l'output. I token vengono selezionati dal più probabile al meno probabile finché la somma delle loro probabilità non corrisponde al valore di Top-P. Ad esempio, se i token A, B e C hanno una probabilità di 0,3, 0,2 e 0,1 e il valore di top-P è 0.5, il modello seleziona A o B come token successivo utilizzando la temperatura ed esclude C come candidato.

    Specifica un valore più basso per risposte meno casuali e un valore più alto per risposte più casuali.

  • TOP_K: Top-K cambia il modo in cui il modello seleziona i token per l'output. Un top-K pari a 1 indica che il token successivo selezionato è il più probabile tra tutti i token nel vocabolario del modello (chiamato anche decodifica greedy). Un top-K pari a 3 indica, invece, che il token successivo viene selezionato tra i tre token più probabili (utilizzando la temperatura).

    Per ogni fase di selezione dei token, vengono campionati i token Top-K con le probabilità più alte. Quindi i token vengono ulteriormente filtrati in base a top-P e il token finale viene selezionato utilizzando il campionamento con temperatura.

    Specifica un valore più basso per risposte meno casuali e un valore più alto per risposte più casuali.

  • MAX_OUTPUT_TOKENS: Numero massimo di token che possono essere generati nella risposta. Un token equivale a circa quattro caratteri. 100 token corrispondono a circa 60-80 parole.

    Specifica un valore più basso per risposte più brevi e un valore più alto per risposte potenzialmente più lunghe.

Metodo HTTP e URL:

POST https://aiplatform.MREP_LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/MREP_LOCATION/endpoints/ENDPOINT_ID:generateContent

Corpo JSON della richiesta:

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

Per inviare la richiesta, scegli una di queste opzioni:

curl

Salva il corpo della richiesta in un file denominato request.json, quindi esegui il comando seguente:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://aiplatform.MREP_LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/MREP_LOCATION/endpoints/ENDPOINT_ID:generateContent"

PowerShell

Salva il corpo della richiesta in un file denominato request.json, quindi esegui il comando seguente:

$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://aiplatform.MREP_LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/MREP_LOCATION/endpoints/ENDPOINT_ID:generateContent" | Select-Object -Expand Content

Dovresti ricevere una risposta JSON simile alla seguente.

REST

Per testare un modello ottimizzato con un prompt, invia una richiesta POST e specifica `TUNED_ENDPOINT_ID`.

Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:

  • PROJECT_ID: Il tuo [ID progetto](/resource-manager/docs/creating-managing-projects#identifiers).
  • TUNING_JOB_REGION: la regione in cui viene eseguito il job di ottimizzazione. Questa è anche la regione predefinita in cui viene caricato il modello ottimizzato.
  • ENDPOINT_ID: l'ID endpoint del modello ottimizzato dall'API GET.
  • TEMPERATURE: la temperatura viene utilizzata per il campionamento durante la generazione di risposte, che si verifica quando vengono applicati topP e topK. La temperatura controlla il grado di casualità nella selezione dei token. Le temperature basse sono ideali per prompt che richiedono risposte meno aperte o creative, mentre le temperature più alte possono portare a risultati più diversificati o creativi. Una temperatura pari a 0 indica che vengono sempre selezionati i token con la probabilità più alta. In questo caso, le risposte a un determinato prompt sono per lo più deterministiche, ma è comunque possibile una piccola variazione.

    Se il modello restituisce una risposta troppo generica, troppo breve o fornisce una risposta di riserva, prova ad aumentare la temperatura. Se il modello entra in una generazione infinita, aumentare la temperatura ad almeno 0.1 può portare a risultati migliori.

    1.0 è il valore iniziale consigliato per la temperatura.
  • TOP_P: Top-P cambia il modo in cui il modello seleziona i token per l'output. I token vengono selezionati dal più probabile al meno probabile finché la somma delle loro probabilità non corrisponde al valore di Top-P. Ad esempio, se i token A, B e C hanno una probabilità di 0,3, 0,2 e 0,1 e il valore di top-P è 0.5, il modello seleziona A o B come token successivo utilizzando la temperatura ed esclude C come candidato.

    Specifica un valore più basso per risposte meno casuali e un valore più alto per risposte più casuali.

  • TOP_K: Top-K cambia il modo in cui il modello seleziona i token per l'output. Un top-K pari a 1 indica che il token successivo selezionato è il più probabile tra tutti i token nel vocabolario del modello (chiamato anche decodifica greedy). Un top-K pari a 3 indica, invece, che il token successivo viene selezionato tra i tre token più probabili (utilizzando la temperatura).

    Per ogni fase di selezione dei token, vengono campionati i token Top-K con le probabilità più alte. Quindi i token vengono ulteriormente filtrati in base a top-P e il token finale viene selezionato utilizzando il campionamento con temperatura.

    Specifica un valore più basso per risposte meno casuali e un valore più alto per risposte più casuali.

  • MAX_OUTPUT_TOKENS: Numero massimo di token che possono essere generati nella risposta. Un token equivale a circa quattro caratteri. 100 token corrispondono a circa 60-80 parole.

    Specifica un valore più basso per risposte più brevi e un valore più alto per risposte potenzialmente più lunghe.

Metodo 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 della richiesta:

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

Per inviare la richiesta, scegli una di queste opzioni:

curl

Salva il corpo della richiesta in un file denominato request.json, quindi esegui il comando seguente:

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

Salva il corpo della richiesta in un file denominato request.json, quindi esegui il comando seguente:

$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

Dovresti ricevere una risposta JSON simile alla seguente.

Eliminare un modello ottimizzato

Per eliminare un modello ottimizzato:

REST

Chiama il metodo models.delete.

Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:

  • PROJECT_ID: .
  • REGION: la regione in cui si trova il modello ottimizzato.
  • MODEL_ID: il modello da eliminare.

Metodo HTTP e URL:

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

Per inviare la richiesta, scegli una di queste opzioni:

curl

Esegui questo 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

Esegui questo 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

Dovresti ricevere un codice di stato riuscito (2xx) e una risposta vuota.

SDK Agent Platform 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()

Metriche di ottimizzazione e convalida

Puoi configurare un job di ottimizzazione del modello per raccogliere e generare report sull'ottimizzazione del modello e sulle metriche di valutazione del modello, che possono poi essere visualizzate in Agent Platform Studio.

  1. Per visualizzare i dettagli di un modello ottimizzato nella console Google Cloud , vai alla pagina Agent Platform Studio.

    Vai ad Agent Platform Studio

  2. Nella tabella Ottimizza e distilla, fai clic sul nome del modello ottimizzato per cui vuoi visualizzare le metriche.

    Le metriche di ottimizzazione vengono visualizzate nella scheda Monitora.

Metriche di ottimizzazione del modello

Il job di ottimizzazione del modello raccoglie automaticamente le seguenti metriche di ottimizzazione per Gemini 2.0 Flash:

  • /train_total_loss: perdita per il set di dati di ottimizzazione in un passaggio di addestramento.
  • /train_fraction_of_correct_next_step_preds: l'accuratezza dei token in un passaggio di addestramento. Una singola inferenza è costituita da una sequenza di token previsti. Questa metrica misura l'accuratezza dei token previsti rispetto alla verità di base nel set di dati di ottimizzazione.
  • /train_num_predictions: numero di token previsti in un passaggio di addestramento.

Metriche di convalida del modello

Puoi configurare un job di ottimizzazione del modello per raccogliere le seguenti metriche di convalida per Gemini 2.0 Flash:

  • /eval_total_loss: perdita per il set di dati di convalida in un passaggio di convalida.
  • /eval_fraction_of_correct_next_step_preds: l'accuratezza dei token in un passaggio di convalida. Una singola inferenza è costituita da una sequenza di token previsti. Questa metrica misura l'accuratezza dei token previsti rispetto ai dati di riferimento nel set di dati di convalida.
  • /eval_num_predictions: numero di token previsti in un passaggio di convalida.

Le visualizzazioni delle metriche sono disponibili dopo l'avvio del job di ottimizzazione. Verrà aggiornato in tempo reale man mano che la messa a punto procede. Se non specifichi un set di dati di convalida quando crei il job di ottimizzazione, sono disponibili solo le visualizzazioni per le metriche di ottimizzazione.

Passaggi successivi