L'apprendimento per rinforzo con feedback umano (RLHF) utilizza il feedback raccolto umani per ottimizzare un modello. RLHF è consigliato se l'output del modello complessi e difficili da descrivere. Il feedback umano si presenta sotto forma di scelte tra 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 mediante l'ottimizzazione RLHF. Scoprirai quali modelli di testo supportano l'ottimizzazione RLHF, come creare 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 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:
- Prepara il set di dati con preferenze umane.
- Prepara il set di dati dei prompt.
- Carica i set di dati nel bucket Cloud Storage. Non è necessario che si trovino nello stesso bucket Cloud Storage.
- 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 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 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. - I modelli di trasferimento text-to-text Flan (Flan-T5)
t5-small
,t5-large
,t5-xl
et5-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, vedi Checkpoint Flan-T5.
I seguenti modelli di testo supportano l'ottimizzazione RLHF in modo autonomo Job Vertex AI Pipelines.
- Llama 2, disponibile tramite Vertex AI Model Garden. Per ulteriori informazioni, consulta il notebook 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 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 che contiene prompt senza etichetta. I prompt possono essere gli stessi al set di dati delle preferenze, oppure possono 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 campoauthor
si riferisce all'autore del messaggio e alternauser
eassistant
. Il campocontent
è il contenuto del messaggio. Lacontent
non può essere vuoto e il primo e l'ultimoauthor
devono essere impostati suuser
.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 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 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 una preferenza di esempio che include i campi del set di dati del prompt per il modello sottoposto a ottimizzazione, oltre ai seguenti campi:
candidate_0
ecandidate_1
: ciascuno 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
o1
, che indica il candidato preferito dall'utente.0
indica che l'utente ha sceltocandidate_0
e1
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 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 non etichettati per la previsione dopo l'ottimizzazione del modello. 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 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 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 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 unici 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
si trovava in un esempio nel 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 nel 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 tuo set di dati al 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
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:
- Nella sezione Vertex AI della console Google Cloud, vai a la pagina Vertex AI Studio.
- Fai clic sulla scheda Ottimizzazione e distillazione.
- Fai clic su Crea modello ottimizzato.
- Seleziona Apprendimento per rinforzo con feedback umano (RLHF).
- 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.
- 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 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 ridurre il tasso di apprendimento predefinito, inserisci un valore valore. 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 di ricompensa.
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 vuoi archiviare il file del set di dati.
Usa 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.
- In Prompt set di dati, 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 individuarlo.
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.
- (Facoltativo) Per valutare il modello ottimizzato, procedi nel seguente modo:
- Fai clic su Abilita valutazione del modello.
- In Set di dati di valutazione, fai clic su Sfoglia.
- Accedi al bucket Cloud Storage che contiene il tuo 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 Pipeline di Vertex AI nella console Google Cloud. Questa pagina mostra lo stato dei job di ottimizzazione dei modelli di testo e codice.
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
- Scopri come eseguire un job di ottimizzazione RLHF autogestito per Llama 2 utilizzando Vertex AI Pipelines.
- Scopri le best practice per l'AI 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.
- Per maggiori dettagli sull'ottimizzazione RLHF in Vertex AI, consulta il seguente blog post, Ottimizzazione RLHF con Vertex AI.