Ottimizza i modelli di testo PaLM utilizzando l'ottimizzazione RLHF

L'apprendimento per rinforzo con feedback umano (RLHF) utilizza il feedback raccolto da persone per ottimizzare un modello. RLHF è consigliato quando l'output del modello è complesso e difficile da descrivere. Il feedback umano si presenta sotto forma di scelte tra diverse opzioni di output. Queste scelte forniscono dati migliori rispetto ai prompt etichettati, utilizzati dalla messa a punto supervisionata, per ottimizzare un modello che produce output difficile da descrivere. Se l'output del tuo modello non è difficile da definire, prendi in considerazione la possibilità di ottimizzare il tuo modello di testo utilizzando la ottimizzazione fine supervisionata.

Questa pagina fornisce informazioni dettagliate sull'ottimizzazione di un modello di testo mediante l'ottimizzazione RLHF. Scopri quali modelli di testo supportano l'ottimizzazione RLHF, come creare un set di dati e come ottimizzare un modello di testo utilizzando l'ottimizzazione RLHF. Scoprirai anche come visualizzare e caricare i modelli ottimizzati utilizzando l'ottimizzazione RLHF.

Per ulteriori dettagli sull'ottimizzazione RLHF in Vertex AI, consulta il seguente post del blog, Ottimizzazione RLHF con Vertex AI.

Flusso di lavoro per l'ottimizzazione del modello RLHF

Il flusso di lavoro di ottimizzazione del modello RLHF su Vertex AI include i seguenti passaggi:

  1. Prepara il set di dati con preferenze umane.
  2. Prepara il set di dati dei prompt.
  3. Carica i set di dati nel bucket Cloud Storage. Non è necessario che si trovino nello stesso bucket Cloud Storage.
  4. Crea un job di ottimizzazione del modello RLHF.

Al termine dell'ottimizzazione, il modello viene implementato in un endpoint Vertex AI. Il nome dell'endpoint è uguale al nome del modello ottimizzato. I modelli ottimizzati sono disponibili per la selezione in Vertex AI Studio quando vuoi creare un nuovo prompt.

Modelli supportati

I seguenti modelli di testo supportano l'ottimizzazione tramite l'apprendimento per rinforzo con feedback umano su Vertex AI:

  • Il modello di base per la generazione di testo, text-bison@002. Per ulteriori informazioni, consulta Modello di generazione di testo.
  • I modelli di trasferimento text-to-text Flan (Flan-T5) t5-small, t5-large, t5-xl e t5-xxl. I modelli Flan-T5 possono essere ottimizzati per eseguire attività come la classificazione del testo, la traduzione linguistica e la risposta alle domande. Per ulteriori informazioni, consulta Controlli di sicurezza Flan-T5.

I seguenti modelli di testo supportano l'ottimizzazione RLHF come job autogestito di Vertex AI Pipelines.

I modelli di codice non supportano l'ottimizzazione RLHF.

Prepara i set di dati per l'ottimizzazione RLHF

L'ottimizzazione RLHF richiede la preparazione di due set di dati e di un set di dati facoltativo. Tutti i set di dati sono in formato JSON Lines (JSONL) e devono essere caricati in un bucket Cloud Storage. Il formato del set di dati utilizzato per ottimizzare un modello di generazione di testo è diverso da quello del set di dati per l'ottimizzazione di un modello di chat di testo.

Set di dati con prompt

Un set di dati contenente prompt non etichettati. I prompt possono essere gli stessi del set di dati delle preferenze o essere diversi. Ogni riga del set di dati del prompt contiene i seguenti campi:

Set di dati text-bison

Il set di dati per la generazione di testo include un campo:

  • input_text: un campo obbligatorio contenente il prompt.

Esempio

{
  "input_text": "Create a description for Plantation Palms."
}

Set di dati chat-bison

Il set di dati per la generazione di chat include due campi:

  • messages: un array di coppie autore-contenuto. Il campo author si riferisce all'autore del messaggio e alterna user e assistant. Il campo content è il contenuto del messaggio. Il valore content non può essere vuoto e il primo e l'ultimo author devono essere impostati su user.

  • context - (facoltativo) contesto aggiuntivo da utilizzare dal modello quando risponde a un prompt.

Esempio

{
  "context": "You are a pirate dog named Captain Barktholomew.",
  "messages": [
    {
      "author": "user",
      "content": "Hi"
    },
    {
      "author": "assistant",
      "content": "Argh! What brings ye to my ship?"
    },
    {
      "author": "user",
      "content": "What's your name?"
    },
  ]
}

Per scoprire di più, puoi scaricare e visualizzare questo set di dati di prompt di esempio.

Set di dati con preferenze umane

Il set di dati con preferenze umane contiene le preferenze degli utenti. Ogni riga del set di dati con preferenze umane registra la preferenza tra due opzioni presentate a un utente. Ti consigliamo di includere nel set di dati con preferenze umane da 5000 a 10.000 esempi. Ogni riga del set di dati con preferenze umane contiene una preferenza di esempio che include i campi del set di dati del prompt per il modello in fase di ottimizzazione, oltre ai seguenti campi:

  • candidate_0 e candidate_1: ciascuno di questi campi contiene due risposte. L'utente contribuisce a ottimizzare il modello scegliendo la risposta che preferisce tra le due.
  • choice: contiene un numero intero, 0 o 1, che indica il candidato preferito dall'utente. Un 0 indica che l'utente ha scelto candidate_0 e un 1 indica che l'utente ha scelto candidate_1.

Di seguito è riportato un esempio di riga nel set di dati con preferenze umane:

{"input_text": "Create a description for Plantation Palms.", "candidate_0": "Enjoy some fun in the sun at Gulf Shores.", "candidate_1": "A Tranquil Oasis of Natural Beauty.", "choice": 0}

Per scoprire di più, puoi scaricare e visualizzare questo set di dati con preferenze umane di esempio.

Set di dati di valutazione (facoltativo)

Un set di dati che include prompt non etichettati per la previsione dopo l'ottimizzazione del modello. Se viene fornito il set di dati di valutazione, su di esso viene eseguita l'inferenza al termine del job di ottimizzazione. Il formato del set di dati di valutazione è lo stesso del formato del set di dati del prompt. Tuttavia, i prompt in un set di dati di valutazione devono essere diversi da quelli nel set di dati di prompt.

Per scoprire di più, puoi scaricare e visualizzare questo set di dati di valutazione di esempio.

Modello di ricompensa

Il set di dati delle preferenze umane viene utilizzato per addestrare un modello di ricompensa. Vertex AI crea e utilizza il modello di ricompensa durante l'ottimizzazione RLHF. I modelli di premio vengono creati in un bucket Cloud Storage privato in un progetto tenant del cliente. Un progetto tenant del cliente è un progetto interno unico per un cliente. Non puoi accedere a un modello di premio, che viene eliminato al termine del job di ottimizzazione. Per ulteriori informazioni, consulta la pagina Progetto tenant.

Mantieni la coerenza con i dati di produzione

Gli esempi nei set di dati devono corrispondere al traffico di produzione previsto. Se il set di dati contiene formattazioni, parole chiave, istruzioni o informazioni specifiche, i dati di produzione devono essere formattati allo stesso modo e contenere le stesse istruzioni.

Ad esempio, se gli esempi nel tuo set di dati includono "question:" e "context:", anche il traffico di produzione deve essere formattato in modo da includere "question:" e "context:" nello stesso ordine in cui appare negli esempi di set di dati. Se escludi il contesto, il modello non riconoscerà il pattern, anche se la domanda esatta fosse presente in un esempio del set di dati.

Carica i set di dati di ottimizzazione in Cloud Storage

Per eseguire un job di ottimizzazione, devi caricare uno o più set di dati in un bucket Cloud Storage. Puoi creare un nuovo bucket Cloud Storage o utilizzarne uno esistente per archiviare i file del set di dati. La regione del bucket non è importante, ma ti consigliamo di utilizzare un bucket nello stesso progetto Google Cloud in cui prevedi di ottimizzare il modello.

Una volta creato il bucket, carica il file del set di dati nel bucket.

Crea un job di ottimizzazione RLHF

Puoi eseguire l'ottimizzazione RLHF utilizzando la console Google Cloud o l'SDK Vertex AI per Python.

SDK Vertex AI per Python

Per scoprire come utilizzare l'SDK Vertex AI per Python per ottimizzare i modelli con RLHF, apri ed esegui il seguente notebook con Colab, GitHub o Vertex AI Workbench:

Console Google Cloud

Per ottimizzare un modello di testo nella console Google Cloud utilizzando l'ottimizzazione RLHF, 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 sulla scheda Ottimizzazione e distillazione.
  3. Fai clic su Crea modello ottimizzato.
  4. Seleziona Apprendimento per rinforzo con feedback umano (RLHF).
  5. Configura i dettagli del modello:
    • Nome modello ottimizzato: inserisci un nome per il modello ottimizzato.
    • Modello di base: seleziona il modello di base che vuoi ottimizzare.
    • Regione: inserisci la regione in cui viene eseguita l'ottimizzazione del modello. Le regioni supportate sono:
      • us-central1: utilizza 8 GPU Nvidia A100 da 80 GB.
      • europe-west4: utilizza 64 core del pod TPU v3.
    • Directory di output: inserisci la posizione di Cloud Storage in cui vengono archiviati gli artefatti quando il modello viene ottimizzato.
  6. Espandi Opzioni avanzate per configurare le impostazioni avanzate.
    • Passaggi di addestramento del premio: inserisci il numero di passaggi da utilizzare durante l'addestramento del modello di ricompensa. Il modello di ricompensa viene utilizzato per ottimizzare il modello. Il valore predefinito è 1000.
    • Moltiplicatore del tasso di apprendimento per il modello di ricompensa: inserisci un valore float che influisce sul tasso di apprendimento durante l'addestramento del modello di ricompensa. Per aumentare il valore predefinito della frequenza di apprendimento, inserisci un valore più alto. Per diminuire il tasso di apprendimento predefinito, inserisci un valore più basso. Il valore predefinito è 1,0.
    • Passaggi di addestramento con rinforzo: inserisci il numero di passaggi da eseguire durante l'ottimizzazione del modello di base utilizzando l'apprendimento per rinforzo. Il valore predefinito è 1000.
    • Moltiplicatore del tasso di apprendimento per rinforzo: inserisci un valore float che influisce sul tasso di apprendimento durante l'addestramento di un modello di rinforzo. Per aumentare il tasso di apprendimento predefinito, inserisci un valore più alto. Per diminuire il tasso di apprendimento predefinito, inserisci un valore inferiore. Il valore predefinito è 1,0.
  7. Fai clic su Continua.
  8. In Set di dati con preferenze umane, carica o scegli un set di dati con preferenze umane utilizzato per creare un modello di ricompensa. Se vuoi caricare il file del set di dati, seleziona  Carica il file JSONL in Cloud Storage. Se il file del set di dati si trova già in un bucket Cloud Storage, seleziona  File JSONL esistente su Cloud Storage.

    Carica un file JSONL

    • In Seleziona file JSONL, fai clic su Sfoglia e seleziona il file del set di dati.
    • In 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.

    Utilizzare un file JSONL esistente

    In 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. In Set di dati del prompt, se vuoi caricare il file del set di dati, seleziona  Carica il file JSONL in Cloud Storage. In caso contrario, se il file del set di dati del prompt si trova già in un bucket Cloud Storage, seleziona  File JSONL esistente su Cloud Storage.

    Carica un file JSONL

    • In Seleziona file JSONL, fai clic su Sfoglia e seleziona il file del set di dati.
    • In 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.

    Utilizzare un file JSONL esistente

    In Percorso file Cloud Storage, fai clic su Sfoglia e seleziona il bucket Cloud Storage in cui si trova il file del set di dati.

  10. (Facoltativo) Per valutare il modello ottimizzato, procedi nel seguente modo:
    1. Fai clic su Abilita la valutazione del modello.
    2. In Set di dati di valutazione, fai clic su Sfoglia.
    3. Vai al bucket Cloud Storage contenente il set di dati di valutazione e selezionalo.
    Per ulteriori informazioni, consulta Set di dati di valutazione.
  11. Fai clic su Avvia ottimizzazione.

Controllare lo stato dell'operazione di sintonizzazione

Per controllare lo stato del job di ottimizzazione del modello, vai alla pagina Pipeline di Vertex AI nella console Google Cloud. Questa pagina mostra lo stato dei job di ottimizzazione dei modelli di testo e codice.

Vai a Pipeline

In alternativa, puoi configurare le notifiche via email per Vertex AI Pipelines in modo da ricevere una notifica via email al termine o al fallimento del job di ottimizzazione del modello.

Passaggi successivi