Ottimizza i modelli Gemini utilizzando l'ottimizzazione delle preferenze

Questo documento descrive come eseguire l'ottimizzazione delle preferenze su un modello Gemini.

Prima di iniziare

Prima di iniziare, devi preparare un set di dati seguendo le istruzioni riportate in Prepara i dati di ottimizzazione delle preferenze per i modelli Gemini.

Crea un job di ottimizzazione

Console

Per configurare l'ottimizzazione delle preferenze utilizzando la console Google Cloud , segui questi passaggi:

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

    Vai ad Ottimizzazione

  2. Fai clic su Crea modello ottimizzato.

  3. Seleziona Ottimizzazione delle preferenze.

  4. In 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.
  5. 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 Dimensione adattatore, inserisci la dimensione dell'adattatore da utilizzare per l'ottimizzazione del modello.
    3. (Facoltativo) Nel campo Beta, inserisci il valore beta che preferisci. Beta è il coefficiente che controlla il livello di allineamento del modello ottimizzato con la sua base di riferimento.
    4. Nel campo Moltiplicatore del tasso di apprendimento, inserisci la dimensione del passaggio in ogni iterazione. Il valore predefinito è 1. .
  6. (Facoltativo) Per disattivare i checkpoint intermedi e utilizzare solo l'ultimo checkpoint, fai clic sul pulsante di attivazione/disattivazione Esporta solo l'ultimo checkpoint.

  7. Fai clic su Continua.

    Viene visualizzata la pagina Set di dati di ottimizzazione.

  8. 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 Carica file su Cloud Storage.
    2. Nel campo Seleziona file JSONL, fai clic su Sfoglia e seleziona il file del set di dati.
    3. Nel campo Località del set di dati, fai clic su Sfoglia e seleziona il bucket Cloud Storage in cui vuoi archiviare il file del set di dati.
    4. Se il file del set di dati si trova già in un bucket Cloud Storage, seleziona il pulsante di opzione File esistente su Cloud Storage.
    5. 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.
  9. (Facoltativo) Per ottenere le 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.
  10. Fai clic su Avvia ottimizzazione.

    Il nuovo modello viene visualizzato nella sezione Ottimizzazione gestita della pagina Ottimizza e distilla. Al termine dell'ottimizzazione del modello, lo Stato è Riuscito.

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 al 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: il 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_URIFacoltativo: l'URI Cloud Storage del file del set di dati di convalida.
  • EPOCH_COUNT(Facoltativo) Il numero di passaggi completi che il modello esegue sull'intero set di dati di addestramento durante l'addestramento. Lascia il campo vuoto per utilizzare il valore consigliato precompilato.
  • BETAFacoltativo: il coefficiente che controlla il livello di allineamento del modello ottimizzato con la sua base di riferimento.
  • ADAPTER_SIZE(Facoltativo) Dimensione dell'adattatore da utilizzare per il job di ottimizzazione. La dimensione dell'adattatore influisce sul numero di parametri addestrabili per il job di ottimizzazione. Un adattatore di dimensioni maggiori 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 su true per utilizzare solo l'ultimo checkpoint.
  • TUNED_MODEL_DISPLAYNAME(Facoltativo) Un nome visualizzato per il modello ottimizzato. Se non viene impostato, viene generato un nome casuale.
  • KMS_KEY_NAMEFacoltativo: l'identificatore della 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 computing. Per saperne di più, consulta Chiavi di crittografia gestite dal cliente (CMEK).
  • SERVICE_ACCOUNT(Facoltativo) Il account di servizio con cui viene eseguito il workload tuningJob. Se non viene specificato, viene utilizzato l'agente di servizio di ottimizzazione sicura della piattaforma degli agenti nel progetto. Consulta Agente di 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 Tuning Service Agent 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",
  "preferenceOptimizationSpec" : {
      "trainingDatasetUri": "TRAINING_DATASET_URI",
      "validationDatasetUri": "VALIDATION_DATASET_URI",
      "hyperParameters": {
          "epochCount": "EPOCH_COUNT",
          "beta": "BETA",
          "adapterSize": "ADAPTER_SIZE",
          "learningRateMultiplier": "LEARNING_RATE_MULTIPLIER"
      },
      "exportLastCheckpointOnly": EXPORT_LAST_CHECKPOINT_ONLY,
  },
  "tunedModelDisplayName": "TUNED_MODEL_DISPLAYNAME",
  "encryptionSpec": {
    "kmsKeyName": "KMS_KEY_NAME"
  },
  "serviceAccount": "SERVICE_ACCOUNT"
}

Per inviare la richiesta, espandi una di queste opzioni:

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": "${BASE_MODEL}",
   "preferenceOptimizationSpec" : {
      "trainingDatasetUri": "gs://mybucket/preference_tuning/data/train_data.jsonl",
      "validationDatasetUri": "gs://mybucket/preference_tuning/data/validation_data.jsonl"
   },
   "tunedModelDisplayName": "tuned_gemini"
}'

SDK Google Gen AI

import time

from google import genai
from google.genai.types import CreateTuningJobConfig, HttpOptions, TuningDataset

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

training_dataset = TuningDataset(
    gcs_uri="gs://mybucket/preference_tuning/data/train_data.jsonl",
)
validation_dataset = TuningDataset(
    gcs_uri="gs://mybucket/preference_tuning/data/validation_data.jsonl",
)

# Refer to https://docs.cloud.google.com/vertex-ai/generative-ai/docs/models/gemini-use-continuous-tuning#google-gen-ai-sdk
# for example to continuous tune from SFT tuned model.
tuning_job = client.tunings.tune(
    base_model="gemini-3.5-flash",
    training_dataset=training_dataset,
    config=CreateTuningJobConfig(
        tuned_model_display_name="Example tuning job",
        method="PREFERENCE_TUNING",
        validation_dataset=validation_dataset,
    ),
)

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'

Ottimizzazione degli iperparametri

Ti consigliamo di inviare il primo job di ottimizzazione senza modificare gli iperparametri. Il valore predefinito è quello 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.
  • Beta: il coefficiente che controlla quanto il modello ottimizzato si allinea alla sua base di riferimento. Un valore beta più basso indica aggiornamenti più aggressivi verso le risposte preferite. L'intervallo consigliato è compreso tra 0,01 e 0,5 inclusi. Un valore beta pari a 0 impedisce al modello di apprendere.
  • Dimensioni 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 di dimensioni maggiori 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 convergere più velocemente o diminuirlo per evitare l'overfitting.

Visualizza o annulla un job di ottimizzazione

Per elencare i job di ottimizzazione, visualizzare i dettagli di un job di ottimizzazione, annullare un job di ottimizzazione o eliminare un modello ottimizzato, consulta le seguenti sezioni della documentazione sul fine-tuning supervisionato:

Metriche di ottimizzazione del modello

Il job di ottimizzazione del modello raccoglie automaticamente le seguenti metriche di ottimizzazione:

  • /preference_optimization_train_loss: perdita di preferenza per il set di dati di ottimizzazione in un passaggio di addestramento.

Metriche di convalida del modello

Quando vengono forniti i dati di convalida, il job di ottimizzazione del modello raccoglie automaticamente le seguenti metriche di convalida:

  • /eval_total_loss: perdita di preferenza per il set di dati di convalida in un passaggio di convalida.

Le visualizzazioni delle metriche sono disponibili dopo l'avvio del job di ottimizzazione. Vengono aggiornati in tempo reale man mano che l'ottimizzazione 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