L'ottimizzazione supervisionata utilizza esempi etichettati per ottimizzare un modello. Ogni esempio mostra l'output desiderato dal modello di testo durante l'inferenza. L'ottimizzazione supervisionata è una buona opzione quando l'output del modello non è molto complesso ed è facile da definire.
- Se l'output del modello è difficile da definire, valuta la possibilità di ottimizzare il modello di testo utilizzando l'ottimizzazione del feedback per rinforzo con feedback umano (RLHF).
- Per scoprire di più sull'ottimizzazione di un modello di codice con l'ottimizzazione supervisionata, consulta Ottimizzazione dei modelli di codice.
Linee guida passo passo per l'ottimizzazione supervisionata del modello di testo
Il seguente tutorial guidato ti aiuta a imparare a utilizzare l'ottimizzazione supervisionata per ottimizzare un modello di base di testo nella console Google Cloud.
Per seguire le indicazioni dettagliate per questa attività direttamente nella console Google Cloud, fai clic su Procedura guidata:
Flusso di lavoro per l'ottimizzazione del modello supervisionato
Il flusso di lavoro di ottimizzazione dei modelli supervisionati su Vertex AI include i seguenti passaggi:
- Prepara il set di dati di ottimizzazione del modello.
- Caricare il set di dati di ottimizzazione del modello in un bucket Cloud Storage.
- Crea un job di ottimizzazione del modello supervisionato.
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 base di testo supportano l'ottimizzazione supervisionata:
- Generazione di testo -
text-bison@002
etext-bison-32k
- Chat di testo -
chat-bison@002
echat-bison-32k
- Generazione del codice -
code-bison@002
ecode-bison-32k
- Chat di codice -
codechat-bison@002
ecodechat-bison-32k
- Incorporamenti di testo -
textembedding-gecko@001
(anteprima)
Casi d'uso per l'utilizzo dell'ottimizzazione supervisionata su modelli di testo
I modelli di testo di base funzionano bene quando l'output o l'attività previsti possono essere definiti in modo chiaro e conciso in un prompt e il prompt produce in modo coerente l'output previsto. Se vuoi che un modello impari qualcosa di nicchia o specifico che si discosta dai pattern linguistici generali, dovresti prendere in considerazione l'idea di ottimizzare il modello. Ad esempio, puoi utilizzare l'ottimizzazione per insegnare al modello quanto segue:
- Strutture o formati specifici per la generazione di output.
- Comportamenti specifici, ad esempio quando fornire un output consecutivo o dettagliato.
- Output personalizzati specifici per tipi di input specifici.
Di seguito sono riportati alcuni casi d'uso che sono difficili da acquisire con solo le istruzioni dei prompt:
Classificazione: la risposta prevista è una parola o una frase specifica.
L'ottimizzazione del modello può aiutare a impedire che il modello generi risposte dettagliate.
Riassunto: il riassunto segue un formato specifico. Ad esempio, potresti dover rimuovere le informazioni che consentono l'identificazione personale (PII) in un riepilogo della chat.
La formattazione della sostituzione dei nomi degli altoparlanti con
#Person1
e#Person2
è difficile da descrivere e il modello di base potrebbe non produrre in modo naturale una risposta del genere.Question answering estrattivo: la domanda riguarda un contesto e la risposta è una sottostringa del contesto.
La risposta "Last Glacial Maximum" è una frase specifica del contesto.
Chat: devi personalizzare la risposta del modello in modo che segua un utente tipo, un ruolo o un personaggio.
Puoi anche ottimizzare un modello nelle seguenti situazioni:
- I prompt non producono i risultati previsti in modo abbastanza coerente.
- L'attività è troppo complicata da definire in un prompt. Ad esempio, vuoi che il modello esegua la clonazione di comportamenti per un comportamento difficile da articolare in un prompt.
- Hai intuizioni complesse su un'attività che sono facili da ottenere, ma difficili da formalizzare in un prompt.
- Vuoi ridurre la lunghezza del contesto rimuovendo gli esempi di few-shot.
prepara un set di dati di ottimizzazione supervisionato
Il set di dati utilizzato per ottimizzare un modello di base deve includere esempi in linea con l'attività che deve essere eseguita dal modello. Struttura il set di dati di addestramento in formato da testo a testo. Ogni record o riga nel set di dati contiene il testo di input (chiamato anche prompt) abbinato all'output previsto dal modello. L'ottimizzazione supervisionata utilizza il set di dati per insegnare al modello a imitare un comportamento o un'attività di cui hai bisogno fornendo centinaia di esempi che illustrano questo comportamento.
Il set di dati deve includere almeno 10 esempi, ma ti consigliamo almeno 100-500 esempi per ottenere buoni risultati. Più esempi fornisci nel tuo set di dati, migliori saranno i risultati.
Per set di dati di esempio, consulta Set di dati di esempio in questa pagina.
Formato del set di dati
Il set di dati di ottimizzazione dei modelli deve essere in formato JSON Lines (JSONL), dove ogni riga contiene un singolo esempio di ottimizzazione. 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. Prima di ottimizzare il modello, devi caricare il set di dati in un bucket Cloud Storage.
Testo
Ogni esempio è composto da un campo input_text
che contiene il prompt al modello e un campo output_text
contenente una risposta di esempio che il modello ottimizzato dovrebbe generare. I campi aggiuntivi dei prompt strutturati, come context
, vengono ignorati.
La lunghezza massima del token per input_text
è 8192 e la lunghezza massima del token per output_text
è 1024. Se uno dei campi supera la lunghezza massima del token, i token in eccesso vengono troncati.
Il numero massimo di esempi che un set di dati per un modello di generazione di testo può contenere è 10.000.
Esempio di set di dati
{"input_text": "question: How many people live in Beijing? context: With over 21 million residents, Beijing is the world's most populous national capital city and is China's second largest city after Shanghai. It is located in Northern China, and is governed as a municipality under the direct administration of the State Council with 16 urban, suburban, and rural districts.[14] Beijing is mostly surrounded by Hebei Province with the exception of neighboring Tianjin to the southeast; together, the three divisions form the Jingjinji megalopolis and the national capital region of China.", "output_text": "over 21 million people"}
{"input_text": "question: How many parishes are there in Louisiana? context: The U.S. state of Louisiana is divided into 64 parishes (French: paroisses) in the same manner that 48 other states of the United States are divided into counties, and Alaska is divided into boroughs.", "output_text": "64"}
Includi istruzioni negli esempi
Per attività come la classificazione, è possibile creare un set di dati di esempi che non contengono istruzioni. Tuttavia, l'esclusione delle istruzioni dagli esempi nel set di dati determina prestazioni inferiori dopo l'ottimizzazione rispetto all'inclusione delle istruzioni, soprattutto per i set di dati più piccoli.
Istruzioni non incluse:
{"input_text": "5 stocks to buy now", "output_text": "business"}
Istruzioni incluse:
{"input_text": "Classify the following text into one of the following classes: [business, entertainment] Text: 5 stocks to buy now", "output_text": "business"}
Chat
Ogni esempio di conversazione in un set di dati di ottimizzazione della chat è composto da un campo messages
(obbligatorio) e un campo context
(facoltativo).
Il campo messages
è composto da un array di coppie autore-contenuti. Il campo author
fa riferimento all'autore del messaggio ed è impostato su user
o assistant
in modo alternato. Il campo content
rappresenta il contenuto del messaggio. Ogni esempio di conversazione dovrebbe avere da due a tre coppie di messaggi dell'assistente utente, che rappresentano un messaggio dell'utente e una risposta dal modello.
Il campo context
ti consente
di specificare un contesto per la chat. Se specifichi un contesto per un esempio, questo sostituirà il valore fornito in default_context
.
Per ogni esempio di conversazione, la lunghezza massima dei token per context
e
messages
combinata è di 8192 token. Inoltre, ogni campo content
per
assistant
non deve superare i 1024 token.
Il numero massimo di campi author
che gli esempi nel set di dati per un
modello di chat di testo possono contenere è 10.000. Questo valore massimo si riferisce alla somma di tutti i
campi author
in tutti i campi messages
di tutti gli esempi.
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?"
},
{
"author": "assistant",
"content": "I be Captain Barktholomew, the most feared pirate dog of the seven seas."
}
]
}
Set di dati di esempio
Puoi utilizzare un set di dati di esempio per iniziare a ottimizzare il modello text-bison@002
. Di seguito è riportato un set di dati di attività di classificazione
che contiene trascrizioni mediche di esempio per varie specialità mediche. I
dati provengono da mtsamples.com resi disponibili su
Kaggle.
URI del set di dati di ottimizzazione di esempio:
gs://cloud-samples-data/vertex-ai/model-evaluation/peft_train_sample.jsonl
URI del set di dati di valutazione di esempio:
gs://cloud-samples-data/vertex-ai/model-evaluation/peft_eval_sample.jsonl
Per utilizzare questi set di dati, specifica gli URI nei parametri applicabili durante la creazione di un job di ottimizzazione supervisionato di un modello di testo.
Ad esempio:
...
"dataset_uri": "gs://cloud-samples-data/vertex-ai/model-evaluation/peft_train_sample.jsonl",
...
"evaluation_data_uri": "gs://cloud-samples-data/vertex-ai/model-evaluation/peft_eval_sample.jsonl",
...
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.
Impostazioni della regione di ottimizzazione supervisionata
Puoi specificare tre impostazioni della regione Google Cloud quando configuri un job di ottimizzazione supervisionato. Una regione è quella in cui viene eseguita la pipeline che ottimizza il modello. Nell'altra regione viene eseguito il job di ottimizzazione del modello e viene caricato il modello ottimizzato.
Regione job di pipeline
La regione del job della pipeline è quella in cui viene eseguito il job della pipeline. Se la regione di caricamento del modello facoltativa non è specificata, il modello viene caricato e ne viene eseguito il deployment nella regione del job della pipeline. I dati intermedi, come il set di dati trasformato, vengono archiviati nella regione del job della pipeline. Per sapere quali regioni puoi utilizzare per la regione del job di pipeline, consulta Regioni supportate per job di pipeline e caricamento di modelli. Devi specificare la regione del job della pipeline utilizzando uno dei seguenti metodi:
Se utilizzi l'SDK Vertex AI, puoi specificare la regione in cui viene eseguito il job di pipeline utilizzando il parametro
tuning_job_location
sul metodotune_model
dell'oggetto che rappresenta il modello che stai ottimizzando (ad esempio, il metodoTextGenerationModel.tune_model
).Se crei un job di ottimizzazione supervisionato tramite l'invio di una richiesta POST utilizzando il metodo
pipelineJobs.create
, utilizzerai l'URL per specificare la regione in cui viene eseguito il job della pipeline. Nel seguente URL, sostituendo entrambe le istanze diPIPELINE_JOB_REGION
con la regione in cui viene eseguita la pipeline:https://PIPELINE_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/PIPELINE_JOB_REGION/pipelineJobs
Se utilizzi la console Google Cloud per creare un job supervisionato di ottimizzazione del modello, specifica la regione del job della pipeline nel controllo Regione quando crei il job di ottimizzazione. Nella console Google Cloud, il controllo Regione specifica sia la regione del job della pipeline sia la regione di caricamento del modello. Quando utilizzi la console Google Cloud per creare un job supervisionato di ottimizzazione del modello, entrambe le regioni sono sempre le stesse.
Regione di caricamento modello
Puoi utilizzare il parametro facoltativo tuned_model_location
per specificare dove
viene caricato il modello ottimizzato. Se la regione di caricamento del modello non è specificata, il modello ottimizzato viene caricato nella regione del job della pipeline.Puoi utilizzare una delle regioni supportate per il caricamento del job e del modello della pipeline per la regione di caricamento del modello. Puoi specificare la regione di caricamento del modello utilizzando uno dei seguenti metodi:
Se utilizzi l'SDK Vertex AI, il parametro
tuned_model_location
viene specificato sul metodotune_model
dell'oggetto che rappresenta il modello che stai ottimizzando (ad esempio, il metodoTextGenerationModel.tune_model
).Se crei un job di ottimizzazione del modello supervisionato inviando una richiesta POST utilizzando il metodo
pipelineJobs
, puoi utilizzare il parametrolocation
per specificare la regione di caricamento del modello.Se utilizzi la console Google Cloud per creare un job supervisionato di ottimizzazione del modello, devi specificare la regione di caricamento del modello nel controllo Regione quando crei il job di ottimizzazione. Nella console Google Cloud, il controllo Regione specifica sia la regione di caricamento del modello sia la regione del job della pipeline. Quando utilizzi la console Google Cloud per creare un job supervisionato di ottimizzazione del modello, entrambe le regioni sono sempre le stesse.
Regione di ottimizzazione del modello
La regione di ottimizzazione del modello è il luogo in cui avviene il calcolo dell'ottimizzazione del modello. Questa
regione è determinata dal tipo di acceleratore scelto. Se specifichi TPU
come tipo di acceleratore, il calcolo dell'ottimizzazione del modello avviene in
europe-west4
. Se specifichi GPU
come tipo di acceleratore, l'ottimizzazione del modello viene eseguita in us-central1
.
Regioni supportate per il caricamento di modelli e job di pipeline
Puoi utilizzare una delle seguenti regioni per specificare la regione di caricamento del modello e la regione del job della pipeline:
us-central1
europe-west4
asia-southeast1
us-west1
europe-west3
europe-west2
asia-northeast1
us-east4
us-west4
northamerica-northeast1
europe-west9
europe-west1
asia-northeast3
Crea un job di ottimizzazione supervisionato per modello di testo
Puoi creare un job di ottimizzazione di un modello di testo supervisionato utilizzando la console Google Cloud, l'API o l'SDK Vertex AI per Python. Per indicazioni sulle configurazioni di ottimizzazione del modello, consulta Configurazioni consigliate.
REST
Per creare un job di ottimizzazione del modello, invia una richiesta POST utilizzando il metodo pipelineJobs
.
Tieni presente che alcuni parametri non sono supportati da tutti i modelli. Assicurati di includere solo i parametri applicabili per il modello che stai ottimizzando.
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- PIPELINEJOB_DISPLAYNAME: un nome visualizzato per il job di pipeline.
- OUTPUT_DIR: l'URI del bucket in cui eseguire l'output degli artefatti della pipeline.
- PROJECT_ID: il tuo ID progetto.
- MODEL_DISPLAYNAME: un nome visualizzato per il modello caricato (creato) da pipelineJob.
- DATASET_URI: URI del file del set di dati.
- PIPELINE_JOB_REGION:
la regione in cui viene eseguito il job di ottimizzazione della pipeline. Questa è anche la regione predefinita in cui viene caricato
il modello ottimizzato. Se vuoi caricare il modello in una regione diversa, utilizza il parametro
location
per specificare la regione di caricamento del modello ottimizzato. Per maggiori informazioni, consulta Regione di caricamento modello. - MODEL_UPLOAD_REGION: (facoltativo) la regione in cui viene caricato il modello ottimizzato. Se non specifichi una regione di caricamento del modello, il modello ottimizzato carica nella stessa regione in cui viene eseguito il job della pipeline. Per maggiori informazioni, consulta Regione di caricamento modello.
- ACCELERATOR_TYPE:
(facoltativo, valore predefinito
GPU
) il tipo di acceleratore da utilizzare per l'ottimizzazione del modello. Le opzioni valide sono:GPU
: utilizza otto GPU A100 da 80 GB per l'ottimizzazione. Assicurati di avere una quota sufficiente. Se scegliGPU
, è supportato VPC‐SC. CMEK è supportata se la località di ottimizzazione e quella di caricamento del modello sonous-centra1
. Per maggiori informazioni, consulta Impostazioni della regione di ottimizzazione supervisionata. Se scegliGPU
, i calcoli di ottimizzazione del modello vengono eseguiti nella regioneus-central1
.TPU
: utilizza 64 core del pod TPU v3 per l'ottimizzazione. Assicurati di avere una quota sufficiente. CMEK non è supportata, ma VPC‐SC è supportato. Se scegliTPU
, i calcoli di ottimizzazione del modello vengono eseguiti nella regioneeurope-west4
.
- LARGE_MODEL_REFERENCE: nome del
modello di base da ottimizzare. Le opzioni sono:
text-bison@002
chat-bison@002
- DEFAULT_CONTEXT (chat only): il contesto che si applica a tutti gli esempi di ottimizzazione nel set di dati di ottimizzazione. L'impostazione del campo
context
in un esempio sostituisce il contesto predefinito. - STEPS:
il
numero di passaggi da eseguire per l'ottimizzazione del modello. Il valore predefinito è 300. La dimensione del batch varia in base alla località di ottimizzazione e alle dimensioni del modello. Per i modelli 8.000, come
text-bison@002
,chat-bison@002
,code-bison@002
ecodechat-bison@002
:us-central1
ha una dimensione del batch pari a 8.europe-west4
ha una dimensione del batch pari a 24.
text-bison-32k
,chat-bison-32k
,code-bison-32k
ecodechat-bison-32k
:us-central1
ha una dimensione del batch pari a 8.europe-west4
ha una dimensione del batch pari a 8.
Ad esempio, se stai addestrando
text-bison@002
ineurope-west4
, esistono 240 esempi in un set di dati di addestramento e impostisteps
su 20, il numero di esempi di addestramento è il prodotto di 20 passaggi e la dimensione del batch di 24 o 480 passaggi di addestramento. In questo caso, il processo di addestramento prevede due epoche perché gli esempi vengono sottoposti due volte. Inus-central1
, se ci sono 240 esempi in un set di dati di addestramento e impostisteps
su 15, il numero di esempi di addestramento è il prodotto di 15 passaggi e la dimensione del batch di 8 o 120 passaggi di addestramento. In questo caso, ci sono 0,5 epoche perché il numero di passaggi di addestramento è dimezzato rispetto agli esempi. - LEARNING_RATE_MULTIPLIER: un
moltiplicatore da applicare al tasso di apprendimento suggerito. Per utilizzare il tasso di apprendimento suggerito,
usa
1.0
. - EVAL_DATASET_URI (text only):
(facoltativo) l'URI del file JSONL contenente il set di dati di valutazione per la previsione e la valutazione batch. La valutazione non è supportata per
chat-bison
. Per maggiori informazioni, consulta Formato del set di dati per l'ottimizzazione di un modello di codice. Il set di dati di valutazione richiede tra 10 e 250 esempi. - EVAL_INTERVAL (text only):
(facoltativo, valore predefinito
20
) il numero di passaggi di ottimizzazione tra ogni valutazione. L'intervallo di valutazione non è supportato per i modelli di chat. Poiché la valutazione viene eseguita sull'intero set di dati di valutazione, un intervallo di valutazione inferiore determina tempi di ottimizzazione più lunghi. Ad esempio, sesteps
è 200 eEVAL_INTERVAL
è 100, otterrai solo due punti dati per le metriche di valutazione. Questo parametro richiede l'impostazione dievaluation_data_uri
. - ENABLE_EARLY_STOPPING (text only):
(facoltativo, valore predefinito
true
) Unboolean
che, se impostato sutrue
, interrompe l'ottimizzazione prima di completare tutti i passaggi di ottimizzazione se le prestazioni del modello, misurate in base all'accuratezza dei token previsti, non migliorano abbastanza tra le esecuzioni delle valutazioni. Se èfalse
, l'ottimizzazione continua fino al completamento di tutti i relativi passaggi. Questo parametro richiede l'impostazione dievaluation_data_uri
. L'opzione Abilita l'interruzione anticipata non è supportata per i modelli di chat. - TENSORBOARD_RESOURCE_ID: (facoltativo) l'ID di un'istanza Vertex AI TensorBoard. L'istanza Vertex AI TensorBoard viene utilizzata per creare un esperimento al termine del job di ottimizzazione. L'istanza Vertex AI TensorBoard deve trovarsi nella stessa regione della pipeline di ottimizzazione.
- ENCRYPTION_KEY_NAME:
(facoltativo) il nome completo di una chiave di crittografia gestita dal cliente (CMEK) che vuoi utilizzare
per la crittografia dei dati. Una CMEK è disponibile solo in
us-central1
. Se utilizzius-central1
e non specifichi una CMEK, viene utilizzata una chiave di crittografia gestita da Google. Una chiave di crittografia gestita da Google viene utilizzata per impostazione predefinita in tutte le altre regioni disponibili. Per maggiori informazioni, vedi Panoramica di CMEK. - TEMPLATE_URI: il modello di ottimizzazione da utilizzare dipende dal modello che stai ottimizzando:
- Modello di testo:
https://us-kfp.pkg.dev/ml-pipeline/large-language-model-pipelines/tune-large-model/v2.0.0
- Modello di chat:
https://us-kfp.pkg.dev/ml-pipeline/large-language-model-pipelines/tune-large-chat-model/v3.0.0
- Modello di testo:
- SERVICE_ACCOUNT (facoltativo) L'account di servizio che Vertex AI utilizza per eseguire il job della pipeline. Per impostazione predefinita, viene utilizzato l'account di servizio predefinito di Compute Engine del progetto (
PROJECT_NUMBER‑compute@developer.gserviceaccount.com
). Scopri di più su come collegare un account di servizio personalizzato.
Metodo HTTP e URL:
POST https://PIPELINE_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/PIPELINE_JOB_REGION/pipelineJobs
Corpo JSON della richiesta:
{ "displayName": "PIPELINEJOB_DISPLAYNAME", "runtimeConfig": { "gcsOutputDirectory": "gs://OUTPUT_DIR", "parameterValues": { "project": "PROJECT_ID", "model_display_name": "MODEL_DISPLAYNAME", "dataset_uri": "gs://DATASET_URI", "location": "MODEL_UPLOAD_REGION", "accelerator_type": "ACCELERATOR_TYPE", "large_model_reference": "LARGE_MODEL_REFERENCE", "default_context": "DEFAULT_CONTEXT (chat only)", "train_steps": STEPS, "learning_rate_multiplier": LEARNING_RATE_MULTIPLIER, "evaluation_data_uri": "gs://EVAL_DATASET_URI (text only)", "evaluation_interval": EVAL_INTERVAL (text only), "enable_early_stopping": ENABLE_EARLY_STOPPING (text only), "enable_checkpoint_selection": "ENABLE_CHECKPOINT_SELECTION (text only)", "tensorboard_resource_id": "TENSORBOARD_ID", "encryption_spec_key_name": "ENCRYPTION_KEY_NAME" } }, "encryptionSpec": { "kmsKeyName": "ENCRYPTION_KEY_NAME" }, "serviceAccount": "SERVICE_ACCOUNT", "templateUri": "TEMPLATE_URI" }
Per inviare la richiesta, scegli una delle seguenti opzioni:
curl
Salva il corpo della richiesta in un file denominato request.json
ed esegui questo comando:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://PIPELINE_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/PIPELINE_JOB_REGION/pipelineJobs"
PowerShell
Salva il corpo della richiesta in un file denominato request.json
ed esegui questo comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://PIPELINE_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/PIPELINE_JOB_REGION/pipelineJobs" | Select-Object -Expand Content
Dovresti ricevere una risposta JSON simile alla seguente. Tieni presente che pipelineSpec
è stato troncato per risparmiare spazio.
Python
Per scoprire come installare o aggiornare l'SDK Vertex AI per Python, vedi Installare l'SDK Vertex AI per Python. Per maggiori informazioni, consulta la documentazione di riferimento dell'API Python.
Node.js
Prima di provare questo esempio, segui le istruzioni per la configurazione di Node.js nella guida rapida di Vertex AI sull'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Node.js Vertex AI.
Per eseguire l'autenticazione su Vertex AI, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Java
Prima di provare questo esempio, segui le istruzioni per la configurazione di Java nella guida rapida di Vertex AI sull'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Java Vertex AI.
Per eseguire l'autenticazione su Vertex AI, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Console
Per ottimizzare un modello di testo con l'ottimizzazione supervisionata utilizzando la console Google Cloud, segui questi passaggi:
- Nella sezione Vertex AI della console Google Cloud, vai alla pagina Vertex AI Studio.
- Fai clic sulla scheda Ottimizzazione e distillazione.
- Fai clic su Crea modello ottimizzato.
- Fai clic su Ottimizzazione supervisionata.
- Configura i dettagli del modello:
- Nome del modello ottimizzato: inserisci un nome per il modello ottimizzato.
- Modello di base: seleziona il modello che vuoi ottimizzare.
- Regione: seleziona la regione in cui viene eseguito il job di ottimizzazione della pipeline e in cui viene eseguito il deployment del modello ottimizzato.
- 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:
inserisci il numero di passaggi da eseguire per l'ottimizzazione del modello. Il valore predefinito è 300. La dimensione del batch varia in base alla località di ottimizzazione e alle dimensioni del modello. Per i modelli 8.000, come
text-bison@002
,chat-bison@002
,code-bison@002
ecodechat-bison@002
:us-central1
ha una dimensione del batch pari a 8.europe-west4
ha una dimensione del batch pari a 24.
text-bison-32k
,chat-bison-32k
,code-bison-32k
ecodechat-bison-32k
:us-central1
ha una dimensione del batch pari a 8.europe-west4
ha una dimensione del batch pari a 8.
Ad esempio, se stai addestrando
text-bison@002
ineurope-west4
, esistono 240 esempi in un set di dati di addestramento e impostisteps
su 20, il numero di esempi di addestramento è il prodotto di 20 passaggi e la dimensione del batch di 24 o 480 passaggi di addestramento. In questo caso, il processo di addestramento prevede due epoche perché gli esempi vengono sottoposti due volte. Inus-central1
, se ci sono 240 esempi in un set di dati di addestramento e impostisteps
su 15, il numero di esempi di addestramento è il prodotto di 15 passaggi e la dimensione del batch di 8 o 120 passaggi di addestramento. In questo caso, ci sono 0,5 epoche perché il numero di passaggi di addestramento è dimezzato rispetto agli esempi. - Moltiplicatore del tasso di apprendimento: inserisci la dimensione del passaggio a ogni iterazione. Il valore predefinito è 1.
- Tipo di acceleratore:
(facoltativo) inserisci il tipo di acceleratore da utilizzare per l'ottimizzazione del modello. Le opzioni valide sono:
GPU
: utilizza otto GPU A100 da 80 GB per l'ottimizzazione. Assicurati di avere una quota sufficiente. Se scegliGPU
, è supportato VPC‐SC. CMEK è supportata se la località di ottimizzazione e quella di caricamento del modello sonous-centra1
. Per maggiori informazioni, consulta Impostazioni della regione di ottimizzazione supervisionata. Se scegliGPU
, i calcoli di ottimizzazione del modello vengono eseguiti nella regioneus-central1
.TPU
: utilizza 64 core del pod TPU v3 per l'ottimizzazione. Assicurati di avere una quota sufficiente. CMEK non è supportata, ma VPC‐SC è supportato. Se scegliTPU
, i calcoli di ottimizzazione del modello vengono eseguiti nella regioneeurope-west4
.
- Aggiungi un'istanza TensorBoard: (facoltativo) l'ID di un'istanza Vertex AI TensorBoard. L'istanza Vertex AI TensorBoard viene utilizzata per creare un esperimento al termine del job di ottimizzazione. L'istanza Vertex AI TensorBoard deve trovarsi nella stessa regione della pipeline di ottimizzazione.
- Crittografia
(facoltativo) Scegli se utilizzare una chiave di crittografia gestita da Google o una chiave di crittografia gestita dal cliente
(CMEK). Una CMEK è disponibile per la crittografia solo nella regione
us-central1
. In tutte le altre regioni disponibili, viene utilizzata una chiave di crittografia gestita da Google. Per ulteriori informazioni, vedi Panoramica di CMEK. - Account di servizio (facoltativo) Scegli un account di servizio gestito dall'utente. Un account di servizio determina a quali risorse Google Cloud può accedere il tuo codice di servizio. Se non scegli un account di servizio, viene utilizzato un agente di servizio che include le autorizzazioni appropriate per la maggior parte dei modelli.
- Passaggi di addestramento:
inserisci il numero di passaggi da eseguire per l'ottimizzazione del modello. Il valore predefinito è 300. La dimensione del batch varia in base alla località di ottimizzazione e alle dimensioni del modello. Per i modelli 8.000, come
- Fai clic su Continua.
- Se vuoi caricare il file del tuo set di dati, seleziona
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.
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.
- (Facoltativo) Per valutare il modello ottimizzato, seleziona Abilita valutazione
del modello e configura la valutazione del modello:
- Set di dati di valutazione:
(facoltativo) l'URI del file JSONL contenente il set di dati di valutazione per la previsione e la valutazione batch. La valutazione non è supportata per
chat-bison
. Per maggiori informazioni, consulta Formato del set di dati per l'ottimizzazione di un modello di codice. Il set di dati di valutazione richiede tra 10 e 250 esempi. - Intervallo di valutazione:
(facoltativo,
20
predefinito) il numero di passaggi di ottimizzazione tra ogni valutazione. L'intervallo di valutazione non è supportato per i modelli di chat. Poiché la valutazione viene eseguita sull'intero set di dati di valutazione, un intervallo di valutazione inferiore determina tempi di ottimizzazione più lunghi. Ad esempio, sesteps
è 200 eEVAL_INTERVAL
è 100, otterrai solo due punti dati per le metriche di valutazione. Questo parametro richiede l'impostazione dievaluation_data_uri
. - Attiva l'interruzione anticipata:
(facoltativo, valore predefinito
true
) un elementoboolean
che, se impostato sutrue
, interrompe l'ottimizzazione prima di completare tutti i passaggi dell'ottimizzazione se le prestazioni del modello, misurate in base all'accuratezza dei token previsti, non migliorano abbastanza tra le esecuzioni delle valutazioni. Se èfalse
, l'ottimizzazione continua fino al completamento di tutti i relativi passaggi. Questo parametro richiede l'impostazione dievaluation_data_uri
. L'opzione Abilita l'interruzione anticipata non è supportata per i modelli di chat. - Abilita selezione del checkpoint: se abilitata, Vertex AI seleziona e restituisce il punto di controllo con le migliori prestazioni di valutazione del modello da tutti i checkpoint creati durante il job di ottimizzazione. Se questa opzione è disabilitata, viene restituito il checkpoint finale creato durante il job di ottimizzazione. Ogni checkpoint fa riferimento a uno snapshot del modello durante un job di ottimizzazione.
- Istanza TensorBoard: (facoltativo) l'ID di un'istanza Vertex AI TensorBoard. L'istanza Vertex AI TensorBoard viene utilizzata per creare un esperimento al termine del job di ottimizzazione. L'istanza Vertex AI TensorBoard deve trovarsi nella stessa regione della pipeline di ottimizzazione.
- Set di dati di valutazione:
(facoltativo) l'URI del file JSONL contenente il set di dati di valutazione per la previsione e la valutazione batch. La valutazione non è supportata per
- Fai clic su Avvia ottimizzazione.
Comando curl di esempio
PROJECT_ID=myproject
DATASET_URI=gs://my-gcs-bucket-uri/dataset
OUTPUT_DIR=gs://my-gcs-bucket-uri/output
ACCELERATOR_TYPE=GPU
LOCATION=us-central1
curl \
-X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
"https://europe-west4-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/europe-west4/pipelineJobs?pipelineJobId=tune-large-model-$(date +%Y%m%d%H%M%S)" -d \
$'{
"displayName": "tune-llm",
"runtimeConfig": {
"gcsOutputDirectory": "'${OUTPUT_DIR}'",
"parameterValues": {
"project": "'${PROJECT_ID}'",
"model_display_name": "The display name for your model in the UI",
"dataset_uri": "'${DATASET_URI}'",
"location": "'${LOCATION}'",
"accelerator_type:": "'${ACCELERATOR_TYPE}'",
"large_model_reference": "text-bison@002",
"train_steps": 300,
"learning_rate_multiplier": 1,
"encryption_spec_key_name": "projects/myproject/locations/us-central1/keyRings/sample-key/cryptoKeys/sample-key"
}
},
"encryptionSpec": {
"kmsKeyName": "projects/myproject/locations/us-central1/keyRings/sample-key/cryptoKeys/sample-key"
},
"templateUri": "https://us-kfp.pkg.dev/ml-pipeline/large-language-model-pipelines/tune-large-model/v2.0.0"
}'
Configurazioni consigliate
La tabella seguente mostra le configurazioni consigliate per ottimizzare un modello di base in base all'attività:
Attività | N. di esempi nel set di dati | Passaggi di addestramento |
---|---|---|
Classificazione | 100+ | 100-500 |
Riassunto | 100-500+ | 200-1000 |
QA estrattivo | 100+ | 100-500 |
Chat | Oltre 200 | 1000 |
Per i passaggi di addestramento, puoi provare più di un valore per ottenere le migliori prestazioni per un determinato set di dati, ad esempio 100, 200, 500.
Visualizza un elenco di modelli ottimizzati
Puoi visualizzare un elenco di modelli nel progetto attuale, compresi i modelli ottimizzati, utilizzando la console Google Cloud o l'SDK Vertex AI per Python.
Python
Prima di provare questo esempio, segui le istruzioni per la configurazione di Python nella guida rapida di Vertex AI sull'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Python Vertex AI.
Per eseguire l'autenticazione su Vertex AI, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Console
Per visualizzare i tuoi modelli ottimizzati nella console Google Cloud, vai alla pagina Vertex AI Model Registry.
Carica un modello di testo ottimizzato
Il codice campione seguente utilizza l'SDK Vertex AI per Python per caricare un modello di generazione di testo ottimizzato mediante l'ottimizzazione supervisionata:
import vertexai from vertexai.preview.language_models import TextGenerationModel model = TextGenerationModel.get_tuned_model(TUNED_MODEL_NAME)
Sostituisci TUNED_MODEL_NAME
con il nome risorsa qualificato del tuo modello ottimizzato.
Questo nome è nel formato
projects/PROJECT_ID/locations/LOCATION/models/MODEL_ID
.
Puoi trovare l'ID del tuo modello ottimizzato in
Vertex AI Model Registry.
Metriche di ottimizzazione e valutazione
Puoi configurare un job di ottimizzazione del modello per raccogliere e generare report sulle metriche di ottimizzazione e valutazione del modello, che possono poi essere visualizzate utilizzando Vertex AI TensorBoard.
Metriche di ottimizzazione del modello
Puoi configurare un job di ottimizzazione del modello per raccogliere le seguenti metriche di ottimizzazione perchat-bison
, code-bison
, codechat-bison
e text-bison
:
/train_total_loss
: perdita del set di dati di ottimizzazione in una fase di addestramento./train_fraction_of_correct_next_step_preds
: l'accuratezza dei token in una fase di addestramento. Una singola previsione è composta da una sequenza di token. Questa metrica misura l'accuratezza dei token previsti rispetto ai dati empirici reali nel set di dati di ottimizzazione./train_num_predictions:
Numero di token previsti in una fase di addestramento.
Metriche di valutazione del modello
Puoi configurare un job di ottimizzazione del modello per raccogliere le seguenti metriche di valutazione
per code-bison
e text-bison
:
/eval_total_loss
: perdita per il set di dati di valutazione in un passaggio di valutazione./eval_fraction_of_correct_next_step_preds
: l'accuratezza del token in una fase di valutazione. Una singola previsione è composta da una sequenza di token. Questa metrica misura l'accuratezza dei token previsti rispetto ai dati empirici reali nel set di dati di valutazione./eval_num_predictions
: numero di token previsti in un passaggio di valutazione.
Le visualizzazioni delle metriche sono disponibili al termine del job di ottimizzazione del modello. Se specifichi solo un ID istanza Vertex AI TensorBoard e non un set di dati di valutazione quando crei il job di ottimizzazione, saranno disponibili solo le visualizzazioni per le metriche di ottimizzazione.
Risoluzione dei problemi
I seguenti argomenti potrebbero aiutarti a risolvere i problemi relativi all'ottimizzazione di un modello di testo di base utilizzando l'ottimizzazione supervisionata.
Il tentativo di ottimizzare un modello restituisce un errore 500 o Internal error encountered
Se si verifica questo errore 500 quando cerchi di ottimizzare un modello, prova questa soluzione:
Esegui questo comando cURL per creare un set di dati Vertex AI vuoto. Assicurati di configurare l'ID progetto nel comando.
curl \
-X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://europe-west4-aiplatform.googleapis.com/ui/projects/$PROJECT_ID/locations/europe-west4/datasets \
-d '{
"display_name": "test-name1",
"metadata_schema_uri": "gs://google-cloud-aiplatform/schema/dataset/metadata/image_1.0.0.yaml",
"saved_queries": [{"display_name": "saved_query_name", "problem_type": "IMAGE_CLASSIFICATION_MULTI_LABEL"}]
}'
Una volta completato il comando, attendi cinque minuti e riprova a ottimizzare il modello.
Errore: autorizzazione "aiplatform.metadataStores.get" negata per la risorsa "...europe-west4/metadataStores/default".
Assicurati che l'API Compute Engine sia abilitata e che all'account di servizio Compute Engine predefinito (PROJECT_NUM‑compute@developer.gserviceaccount.com
) vengano concessi i ruoli aiplatform.admin
e storage.objectAdmin
.
Per concedere i ruoli aiplatform.admin
e
storage.objectAdmin
all'account di servizio Compute Engine, segui questi passaggi:
-
Nella console Google Cloud, attiva Cloud Shell.
Nella parte inferiore della console Google Cloud viene avviata una sessione di Cloud Shell che mostra un prompt della riga di comando. Cloud Shell è un ambiente shell con Google Cloud CLI già installato e con valori già impostati per il progetto attuale. L'inizializzazione della sessione può richiedere alcuni secondi.
Se preferisci utilizzare un terminale sulla tua macchina, installa e configura Google Cloud CLI.
Collega il ruolo
aiplatform.admin
al tuo account di servizio Compute Engine utilizzando il comandogcloud projects add-iam-policy-binding
:Sostituisci quanto segue:
PROJECT_ID
con l'ID progetto Google Cloud.PROJECT_NUM
con il numero del tuo progetto Google Cloud.
gcloud projects add-iam-policy-binding PROJECT_ID --member serviceAccount:PROJECT_NUM-compute@developer.gserviceaccount.com --role roles/aiplatform.admin
Collega il ruolo
storage.objectAdmin
al tuo account di servizio Compute Engine utilizzando il comandogcloud projects add-iam-policy-binding
:PROJECT_ID
con l'ID progetto Google Cloud.PROJECT_NUM
con il numero del tuo progetto Google Cloud.
gcloud projects add-iam-policy-binding PROJECT_ID --member serviceAccount:PROJECT_NUM-compute@developer.gserviceaccount.com --role roles/storage.objectAdmin
Errore: il servizio dell'agente di servizio Vertex AI service-{project-number}@gcp-sa-aiplatform.iam.gserviceaccount.com non dispone dell'autorizzazione per accedere al repository di Artifact Registry projects/vertex-ai-restricted/locations/us/repositories/llm.
Questo errore di autorizzazione è dovuto a un ritardo della propagazione. Un nuovo tentativo dovrebbe risolvere l'errore.
Passaggi successivi
- Scopri come valutare un modello ottimizzato.
- Scopri come ottimizzare un modello di base utilizzando l'ottimizzazione RLHF.
- Scopri come ottimizzare un modello di codice.