Ottimizza i modelli di testo PaLM utilizzando l'ottimizzazione RLHF

L'apprendimento per rinforzo con feedback umano (RLHF) utilizza il feedback raccolto umani per ottimizzare un modello. RLHF è consigliato se 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 a quelli etichettati usati mediante un'ottimizzazione supervisionata, per ottimizzare un modello che produce un output difficili da descrivere. Se l'output dal modello non è difficile da definire, valuta la possibilità di ottimizzare il tuo modello di testo perfezionamento supervisionato.

Questa pagina fornisce informazioni dettagliate sull'ottimizzazione di un modello di testo utilizzando RLHF dell'ottimizzazione. Scoprirai quali modelli di testo supportano l'ottimizzazione RLHF, come creare e su come ottimizzare un modello di testo utilizzando l'ottimizzazione RLHF. Imparerai inoltre Visualizzare e caricare 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 quanto segue 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 lo 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 Vertex AI endpoint. Il nome dell'endpoint corrisponde a quello del modello ottimizzato. I modelli ottimizzati sono disponibili per essere selezionati in Vertex AI Studio quando vuoi per creare un nuovo prompt.

Modelli supportati

I seguenti modelli di testo supportano l'ottimizzazione tramite il reinforcement learning da feedback umano su Vertex AI:

  • Il modello di base per la generazione del testo text-bison@002. Per maggiori informazioni le informazioni, vedi Modello di generazione del testo.
  • Trasferimento da testo a testo del flan t5-small, t5-large, t5-xl e t5-xxl modelli Transformer (Flan-T5). I modelli Flan-T5 possono essere ottimizzati per offrire come classificazione del testo, traduzione linguistica e risposta. Per ulteriori informazioni, vedi Checkpoint Flan-T5.

I seguenti modelli di testo supportano l'ottimizzazione RLHF in modo autonomo Job Vertex AI Pipelines.

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. La il formato del set di dati utilizzato per ottimizzare un modello di generazione di testo è diverso formato del set di dati per ottimizzare 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 al set di dati delle preferenze, oppure possono essere diversi. Ogni riga del prompt Il set di dati 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 si riferisce all'autore del messaggio e si alterna tra user e assistant. Il campo content rappresenta il contenuto del messaggio. La content non può essere vuoto e il primo e l'ultimo author devono essere impostati su user.

  • context - (Facoltativo) aggiuntivo contesto per il modello da 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 scoprire di più, puoi scaricare e visualizzare questo esempio set di dati prompt.

Set di dati con preferenze umane

Il set di dati con preferenze umane contiene le preferenze degli utenti. Ogni riga nel Il set di dati con preferenze umane registra la preferenza tra due opzioni che sono state presentati a un essere umano. Consigliamo che il set di dati con preferenze umane includa Da 5000 a 10.000 esempi. Ogni riga del set di dati con preferenze umane contiene preferenza di esempio che include i campi del set di dati dei prompt per il modello da ottimizzare 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 che preferisci.
  • choice: contiene un numero intero, 0 o 1, che indica il candidato con il metodo preferito dall'utente. 0 indica che l'utente ha scelto candidate_0 e 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 scoprire di più, puoi scaricare e visualizzare questo esempio set di dati con preferenze umane.

Set di dati di valutazione (facoltativo)

Un set di dati che include prompt senza etichetta per la previsione dopo che il modello è ottimizzato. Se viene fornito il set di dati di valutazione, viene eseguita l'inferenza al termine del job di ottimizzazione. Il formato del set di dati di valutazione è lo stesso come formato del set di dati del prompt. Tuttavia, i prompt in una valutazione del set di dati deve essere diverso dai prompt nel set di dati del prompt.

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

Modello di ricompensa

Il set di dati con preferenze umane viene utilizzato per addestrare un modello di ricompensa. Vertex AI crea e poi lo utilizza durante 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 unici per un cliente. Non puoi accedere a un modello di premio, che verrà eliminato dopo il il job di ottimizzazione è stato completato. Per ulteriori informazioni, vedi 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 una proprietà "context:", anche il traffico di produzione deve essere formattato per includere un "question:" e "context:" nello stesso ordine in cui vengono visualizzati nel set di dati esempi. Se escludi il contesto, il modello non riconoscerà il pattern, anche se la domanda esatta si trovava 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 nel bucket Cloud Storage. Puoi crea un nuovo bucket Cloud Storage o utilizzarne uno esistente per archiviare i file dei set di dati. La regione del bucket non corrisponde importante, ma consigliamo di utilizzare un bucket che si trova nella stessa posizione progetto Google Cloud in cui prevedi di ottimizzare il modello.

Quando il bucket è pronto, carica il file del tuo set di dati al bucket.

Crea un job di ottimizzazione RLHF

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

SDK Vertex AI per Python

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 RLHF dell'ottimizzazione, segui questi passaggi:

  1. Nella sezione Vertex AI della console Google Cloud, vai a la 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 il regione in cui avviene 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 il modello di ricompensa: Inserisci il di passaggi da usare durante l'addestramento modello a premi. Il modello di ricompensa viene utilizzato per ottimizzare il modello. Il valore predefinito è 1000.
    • Moltiplicatore del tasso di apprendimento per il premio: Inserisci un valore per un valore in virgola mobile che influisce sul tasso di apprendimento durante l'addestramento modello a premi. Per aumentare il valore predefinito tasso di apprendimento, inserisci un valore più alto. Per ridurre il tasso di apprendimento predefinito, inserisci un valore più basso. La 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 usando l'apprendimento per rinforzo. Il valore predefinito è 1000.
    • Moltiplicatore del tasso di apprendimento per rinforzo: Inserisci un valore per 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 ridurre il tasso di apprendimento predefinito, inserisci un valore valore. 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 modello a premi. Se vuoi caricare il file del tuo set di dati, seleziona  Carica il file JSONL su in Cloud Storage. Se il file del set di dati si trova già in Bucket Cloud Storage, seleziona  Esistente file JSONL 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 archiviare i tuoi 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 individuarlo.

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

  10. (Facoltativo) Per valutare il tuo modello ottimizzato, segui questi passaggi:
    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 maggiori informazioni, 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 del testo e del codice durante i job di ottimizzazione dei modelli.

Vai a Pipeline

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

Passaggi successivi