Ottimizza i modelli di testo utilizzando l'ottimizzazione RLHF

L'apprendimento per rinforzo con feedback umano (RLHF) utilizza il feedback raccolto da esseri umani per ottimizzare un modello. Il valore RLHF è consigliato quando l'output del modello è complesso e difficile da descrivere. Il feedback umano è sotto forma di scelte 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 l'output del modello non è difficile da definire, 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 utilizzando 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. Scoprirai anche come visualizzare e caricare i modelli ottimizzati utilizzando l'ottimizzazione RLHF. Per ulteriori dettagli sull'ottimizzazione RLHF in Vertex AI, consulta Ottimizzazione del modello RLHF.

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 prompt.
  3. Carica i set di dati nel bucket Cloud Storage. Non è necessario che si trovi nello stesso bucket Cloud Storage.
  4. Crea un job di ottimizzazione del modello RLHF.

Una volta completata l'ottimizzazione, viene eseguito il deployment del modello ottimizzato in un endpoint Vertex AI. Il nome dell'endpoint corrisponde 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 utilizzando l'apprendimento per rinforzo con feedback umano su Vertex AI:

  • Il modello di base per la generazione del testo, text-bison@002. Per ulteriori informazioni, consulta Modello di generazione del testo.
  • Il modello di base per la generazione di chat, chat-bison@001. Per ulteriori informazioni, consulta Modello di generazione di Chat.
  • I modelli di trasformatore di trasferimento da testo a testo Flan t5-small, t5-large, t5-xl e t5-xxl (Flan-T5). I modelli di Flan-T5 possono essere perfezionati per eseguire attività come classificazione del testo, traduzione linguistica e risposta alle domande. Per maggiori informazioni, consulta i 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.

Prepara 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 del set di dati per l'ottimizzazione di un modello di chat di testo.

Set di dati con prompt

Un set di dati che contiene prompt senza etichetta. Possono essere gli stessi prompt 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 di generazione del 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 di generazione della chat include due campi:

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

  • context: (facoltativo) contesto aggiuntivo che il modello utilizza 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 prompt di esempio.

Set di dati con preferenze umane

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

  • candidate_0 e candidate_1: ognuno di questi campi contiene due risposte. L'utente aiuta a perfezionare il modello scegliendo quali delle due risposte preferire.
  • 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 non etichettati 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 è lo stesso 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 del prompt.

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

Modello di premio

Il set di dati con preferenze umane viene utilizzato per addestrare un modello con premio. 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 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:", il traffico di produzione deve essere formattato in modo da includere un "question:" e un "context:" nello stesso ordine in cui appare negli esempi del set di dati. Se escludi il contesto, il modello non riconoscerà il pattern, anche se la domanda esatta era in un esempio nel set di dati.

Carica i set di dati dell'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 di 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 al fine di 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 Tune e distilla.
  3. Fai clic su Crea modello ottimizzato.
  4. Seleziona Apprendimento per rinforzo con feedback umano (RLHF).
  5. Configura i dettagli del modello:
    • Ottimizza il nome del modello: 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 località 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 il modello di ricompensa: inserisci il numero di passaggi da utilizzare durante l'addestramento del modello con premio. 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 influisca sul tasso di apprendimento durante l'addestramento del modello con premio. 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.
    • Passaggi di addestramento 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 influisca 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 a premi. Se vuoi caricare il file del set di dati, seleziona  Carica il file JSONL in Cloud Storage. Se il file del tuo 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.

    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 Set di dati dei prompt, se vuoi caricare il file del set di dati, seleziona  Carica il file JSONL in Cloud Storage. Altrimenti, 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.

    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 la valutazione del modello.
    2. In Set di dati di valutazione, fai clic su Sfoglia.
    3. Vai al bucket Cloud Storage che contiene il 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, vai alla pagina Vertex AI Pipelines nella console Google Cloud. Questa pagina mostra lo stato dei job di ottimizzazione di testo e modello di codice.

Vai a Pipeline

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

Passaggi successivi