Ottimizza i modelli di testo PaLM utilizzando l'ottimizzazione RLHF

L'apprendimento per rinforzo con feedback umano (RLHF) utilizza il feedback raccolto dagli esseri umani per ottimizzare un modello. RLHF è consigliato quando l'output del modello è complesso e difficile da descrivere. Il feedback umano è la scelta tra le diverse opzioni di output. Queste scelte forniscono dati migliori rispetto ai prompt etichettati, utilizzati dall'ottimizzazione supervisionata, per ottimizzare un modello che produce un output difficile da descrivere. Se non è difficile definire l'output del modello, valuta la possibilità di ottimizzare il modello di testo utilizzando l'ottimizzazione supervisionata.

Questa pagina fornisce informazioni dettagliate sull'ottimizzazione di un modello di testo mediante l'ottimizzazione RLHF. Scoprirai 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. Imparerai inoltre a visualizzare e caricare i modelli ottimizzati ottimizzati mediante l'ottimizzazione RLHF.

Per maggiori dettagli sull'ottimizzazione RLHF in Vertex AI, consulta il seguente blog post, 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 tuo 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, viene eseguito il deployment del modello ottimizzato in un endpoint Vertex AI. Il nome dell'endpoint corrisponde a quello 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 utilizzando l'apprendimento per rinforzo con feedback umano su Vertex AI:

  • Il modello di base per la generazione del testo text-bison@002. Per scoprire di più, consulta la sezione Modello di generazione del testo.
  • Modello di base per la generazione di chat, chat-bison@001. Per ulteriori informazioni, vedi Modello di generazione di chat.
  • Modelli di trasformazione del trasferimento da testo a testo t5-small, t5-large, t5-xl e t5-xxl Flan (Flan-T5). I modelli Flan-T5 possono essere ottimizzati per eseguire attività come classificazione del testo, traduzione linguistica e risposta alle domande. Per maggiori informazioni, vedi Checkpoint Flan-T5.

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

I modelli di codice non supportano l'ottimizzazione RLHF.

Preparare i set di dati di ottimizzazione RLHF

L'ottimizzazione RLHF richiede la preparazione di due set di dati e 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 utilizzato per l'ottimizzazione di un modello di chat di testo.

Set di dati con prompt

Un set di dati che contiene prompt senza etichetta. I prompt possono essere gli stessi del set di dati di preferenze o essere diversi. Ogni riga nel 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 che contiene il prompt.

Esempio

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

set di dati chat-bison

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

  • messages: un array di coppie autore-contenuti. Il campo author fa riferimento all'autore del messaggio e alterna tra user e assistant. Il campo content rappresenta il contenuto del messaggio. Il campo content non può essere vuoto e il primo e l'ultimo author devono essere impostati su user.

  • context: (facoltativo) contesto aggiuntivo che il modello può utilizzare 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 saperne di più, puoi scaricare e visualizzare questo set di dati dei prompt di esempio.

Set di dati con preferenze umane

Il set di dati con preferenze umane contiene le preferenze degli utenti. Ogni riga nel set di dati con preferenze umane registra la preferenza tra due opzioni presentate a un utente. Consigliamo che il set di dati con preferenze umane includa da 5000 a 10.000 esempi. Ogni riga nel set di dati con preferenze umane contiene una preferenza di esempio che include i campi del set di dati dei prompt per il modello ottimizzato, più i seguenti campi:

  • candidate_0 e candidate_1: ognuno di questi campi contiene due risposte. L'utente aiuta a ottimizzare il modello scegliendo quale delle due risposte preferisce.
  • choice: contiene un numero intero, 0 o 1, che indica il candidato preferito dall'utente. 0 indica che l'utente ha scelto candidate_0, mentre 1 indica che l'utente ha scelto candidate_1.

Un esempio di riga nel set di dati con preferenze umane è il seguente:

{"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 saperne 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 senza etichetta per la previsione dopo l'ottimizzazione del modello. Se viene fornito il set di dati di valutazione, l'inferenza viene eseguita al termine del job di ottimizzazione. Il formato del set di dati di valutazione è uguale a quello del set di dati del prompt. Tuttavia, le richieste in un set di dati di valutazione devono essere diverse da quelle nel set di dati dei prompt.

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

Modello di ricompensa

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

Mantieni la coerenza con i dati di produzione

Gli esempi nei tuoi 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 un "question:" e un "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 era presente in un esempio nel set di dati.

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

Quando il bucket è pronto, 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 tuoi modelli con RLHF, apri ed esegui il seguente blocco note 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 del 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 il percorso di Cloud Storage in cui sono archiviati gli artefatti quando il modello viene ottimizzato.
  6. Espandi Opzioni avanzate per configurare le impostazioni avanzate.
    • Passaggi di addestramento per la ricompensa: inserisci il numero di passaggi da utilizzare durante l'addestramento del modello a premi. 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 in virgola mobile che influisce sul tasso di apprendimento durante l'addestramento del modello a premi. Per aumentare il tasso di apprendimento predefinito, inserisci un valore più alto. Per ridurre il tasso di apprendimento predefinito, inserisci un valore più basso. Il valore predefinito è 1,0.
    • Passaggi di addestramento dell'apprendimento per 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 in virgola mobile 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 più basso. 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 con premio. Se vuoi caricare il file del tuo 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 tuo set di dati.
    • In Posizione del set di dati, fai clic su Sfoglia e seleziona il bucket Cloud Storage in cui archiviare il file del set di dati.

    Usa un file JSONL esistente

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

  9. In Prompt set di dati, 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 tuo set di dati.
    • In Posizione del set di dati, fai clic su Sfoglia e seleziona il bucket Cloud Storage in cui archiviare il file del set di dati.

    Usa un file JSONL esistente

    In Percorso file di 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:
    1. Fai clic su Abilita valutazione del modello.
    2. In Set di dati di valutazione, fai clic su Sfoglia.
    3. Accedi al bucket Cloud Storage che contiene il tuo set di dati di valutazione e selezionalo.
    Per saperne di più, consulta Set di dati di valutazione.
  11. Fai clic su Avvia ottimizzazione.

Controlla lo stato dell'operazione di ottimizzazione

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

Vai a Pipeline

In alternativa, puoi configurare notifiche via email per Vertex AI Pipelines, in modo da ricevere una notifica via email quando il job di ottimizzazione del modello termina o non riesce.

Passaggi successivi