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 Preparare 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 Vertex AI della console Google Cloud , vai alla pagina Vertex AI Studio.

    Vai a Vertex AI Studio

  2. Fai clic su Crea modello ottimizzato.

  3. Seleziona Ottimizzazione delle preferenze.

  4. 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.
  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 ottimizzare il modello.
    3. (Facoltativo) Nel campo Beta, inserisci il valore beta desiderato. Beta è il coefficiente che controlla il grado di allineamento del modello ottimizzato con la baseline.
    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 per Carica file in Cloud Storage.
    2. Nel campo Seleziona file JSONL, fai clic su Sfoglia e seleziona il file del set di dati.
    3. 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.
    4. 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.
    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 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 indica 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 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 modello di base 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 che il modello esegue sull'intero set di dati di addestramento durante l'addestramento. Lascia il campo vuoto per utilizzare il valore consigliato precompilato.
  • BETA(Facoltativo) Il coefficiente che controlla il grado di allineamento del modello ottimizzato con la baseline.
  • ADAPTER_SIZE(Facoltativo) 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.
  • 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.
  • TUNED_MODEL_DISPLAYNAME(Facoltativo) Un nome visualizzato per il modello ottimizzato. Se non viene 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 Vertex AI Secure Fine-Tuning nel progetto. Consulta la sezione 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 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",
  "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"
}'

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. Vertex AI 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 la precisione con cui il modello ottimizzato si allinea alla baseline. Un valore beta più basso indica aggiornamenti più aggressivi verso le risposte preferite. L'intervallo consigliato è compreso tra 0,01 e 0,5 (estremi 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 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 oppure diminuirlo per evitare l'overfitting.

Visualizzare o annullare 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 sull'ottimizzazione supervisionata:

Metriche di ottimizzazione del modello

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

  • /preference_optimization_train_loss: Perdita di preferenze 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: la perdita di preferenze 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 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