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:
- Prepara il set di dati con preferenze umane.
- Prepara il set di dati prompt.
- Carica i set di dati nel bucket Cloud Storage. Non è necessario che si trovi nello stesso bucket Cloud Storage.
- 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
et5-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.
- Lama 2, disponibile tramite Vertex AI Model Garden. Per ulteriori informazioni, consulta il blocco note di esempio. Poiché questo metodo è più complesso, ti consigliamo di provare prima RLHF su Vertex AI.
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 campoauthor
fa riferimento all'autore del messaggio e le alternative trauser
eassistant
. Il campocontent
è il contenuto del messaggio. Il campocontent
non può essere vuoto e il primo e l'ultimo valoreauthor
devono essere impostati suuser
.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
ecandidate_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
o1
, che indica il candidato preferito dall'utente.0
indica che l'utente ha sceltocandidate_0
, mentre1
indica che l'utente ha sceltocandidate_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:
- Nella sezione Vertex AI della console Google Cloud, vai alla pagina Vertex AI Studio.
- Fai clic sulla scheda Tune e distilla.
- Fai clic su Crea modello ottimizzato.
- Seleziona Apprendimento per rinforzo con feedback umano (RLHF).
- 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.
- 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.
- Fai clic su Continua.
- 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.
- In Set di dati dei prompt, se vuoi caricare il file del set di dati, seleziona
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.
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.
- (Facoltativo) Per valutare il modello ottimizzato:
- Fai clic su Abilita la valutazione del modello.
- In Set di dati di valutazione, fai clic su Sfoglia.
- Vai al bucket Cloud Storage che contiene il set di dati di valutazione e selezionalo.
- 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.
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
- Scopri come eseguire un job di ottimizzazione RLHF autogestito per Llama 2 utilizzando Vertex AI Pipelines.
- Scopri le best practice per l'IA responsabile e i filtri di sicurezza di Vertex AI.
- Scopri come abilitare gli audit log di accesso ai dati per i tuoi endpoint.
- Scopri come valutare il modello ottimizzato.