Questo documento descrive come ottimizzare un modello Gemini utilizzando dei modelli.
Prima di iniziare
- Scopri di più sull'ottimizzazione supervisionata e sui relativi vantaggi.
- Prepara un set di dati di ottimizzazione supervisionato.
- Scegli una regione in cui eseguire job di ottimizzazione supervisionati.
Crea un job di ottimizzazione
Puoi creare un job di ottimizzazione supervisionato utilizzando la console Google Cloud, o l'SDK Vertex AI per Python. Per indicazioni sulle configurazioni di ottimizzazione dei modelli, consulta la sezione Configurazioni consigliate.
REST
Per creare un job di ottimizzazione del modello, invia una richiesta POST utilizzando
tuningJobs.create
. Alcuni parametri non sono supportati da tutti i modelli. Assicurati
di includere solo i parametri applicabili per il modello che stai
dell'ottimizzazione.
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- PROJECT_ID: il tuo ID progetto.
- TUNING_JOB_REGION: la regione in cui viene eseguito il job di ottimizzazione. Questa è anche la regione predefinita in cui viene caricato il modello ottimizzato.
- BASE_MODEL: nome del
di base da ottimizzare. Valori supportati:
gemini-1.0-pro-002
. - TRAINING_DATASET_URI: URI Cloud Storage del set di dati di addestramento. Il set di dati deve essere formattato come file JSONL. Per ottenere risultati ottimali, fornisci almeno da 100 a 500 esempi. Per saperne di più, consulta Informazioni sui set di dati di ottimizzazione supervisionati .
- VALIDATION_DATASET_URIFacoltativo: l'URI Cloud Storage del file del set di dati di convalida.
- EPOCH_COUNTFacoltativo: il numero di passaggi completi che il modello esegue per l'intero set di dati di addestramento durante l'addestramento. Lascialo non configurato per utilizzare il valore consigliato.
- ADAPTER_SIZEFacoltativo: le dimensioni dell'adattatore da utilizzare per il job di ottimizzazione.
- LEARNING_RATE_MULTIPLIER: Facoltativo: A da applicare al tasso di apprendimento suggerito. Lascialo non configurato per utilizzare il valore consigliato.
- TUNED_MODEL_DISPLAYNAME(Facoltativo) Un display del modello ottimizzato. Se non viene impostato, viene generato un nome casuale.
Metodo HTTP e URL:
POST https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs
Corpo JSON della richiesta:
{ "baseModel": "BASE_MODEL", "supervisedTuningSpec" : { "trainingDatasetUri": "TRAINING_DATASET_URI", "validationDatasetUri": "VALIDATION_DATASET_URI", "hyperParameters": { "epochCount": EPOCH_COUNT, "adapterSize": "ADAPTER_SIZE", "learningRateMultiplier": LEARNING_RATE_MULTIPLIER }, }, "tunedModelDisplayName": "TUNED_MODEL_DISPLAYNAME" }
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://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs"
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://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs" | Select-Object -Expand Content
Dovresti ricevere una risposta JSON simile alla seguente.
Comando curl di esempio
PROJECT_ID=myproject
LOCATION=us-central1
curl \
-X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
"https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/tuningJobs" \
-d \
$'{
"baseModel": "gemini-1.0-pro-002",
"supervisedTuningSpec" : {
"training_dataset_uri": "gs://cloud-samples-data/ai-platform/generative_ai/sft_train_data.jsonl",
"validation_dataset_uri": "gs://cloud-samples-data/ai-platform/generative_ai/sft_validation_data.jsonl"
},
"tunedModelDisplayName": "tuned_gemini_pro"
}'
Python
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 su Crea modello ottimizzato.
In Metodo di ottimizzazione, seleziona il pulsante di opzione per Ottimizzazione supervisionata.
In Dettagli modello, configura quanto segue:
- Nel campo Nome del modello ottimizzato, inserisci un nome per il nuovo modello ottimizzato modello, fino a 128 caratteri.
- Nel campo Modello di base, seleziona
gemini-1.0-pro-002
. - Nel campo a discesa Regione, Seleziona la regione in cui viene eseguito il job di ottimizzazione della pipeline e in cui viene eseguito il deployment del modello ottimizzato.
(Facoltativo) Espandi la freccia menu a discesa Opzioni avanzate e configura le seguenti:
- Nel campo Numero di epoche, inserisci il numero di passaggi per cui eseguire dell'ottimizzazione del modello.
- Nel campo Dimensione adattatore, inserisci le dimensioni dell'adattatore da utilizzare per dell'ottimizzazione del modello.
- Nel campo Moltiplicatore del tasso di apprendimento, inserisci un Inserisci il dimensione del passo a ogni iterazione. Il valore predefinito è 1.
Fai clic su Continua.
Si apre la pagina Set di dati di ottimizzazione.
Per caricare il file di un set di dati, seleziona una delle seguenti opzioni:
- Se non hai ancora caricato un set di dati, seleziona il pulsante di opzione Carica il file su Cloud Storage.
- Nel campo Seleziona file JSONL, fai clic su Sfoglia e seleziona il tuo del set di dati.
- Nel campo Posizione set di dati, fai clic su Sfoglia e seleziona l' Bucket Cloud Storage in cui vuoi archiviare il file del set di dati.
- Se il file del set di dati si trova già in un bucket Cloud Storage, seleziona il pulsante di opzione File esistente su Cloud Storage.
- Nel campo 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.
(Facoltativo) Per visualizzare le metriche di convalida durante l'addestramento, fai clic su Abilita convalida modello pulsante di attivazione/disattivazione.
- Nel file Validation dataset (Set di dati di convalida), inserisci il percorso Cloud Storage di il set di dati di convalida.
Fai clic su Avvia ottimizzazione.
Il nuovo modello viene visualizzato nella sezione Modelli ottimizzati di Gemini Pro nella Pagina Ottimizzazione e distillazione. Al termine dell'ottimizzazione del modello, lo Stato indica Riuscito.
Configurazioni consigliate
La tabella seguente mostra le configurazioni consigliate per l'ottimizzazione di una base modello per attività:
Attività | N. di esempi nel set di dati | N. di epoche |
---|---|---|
Classificazione | 500+ | 2-4 |
Riassunto | 1000+ | 2-4 |
QA estrattivo | 500+ | 2-4 |
Chat | 1000+ | 2-4 |
Per ottimizzare le prestazioni su un set di dati specifico, prova a utilizzare un valore di epoca più elevato. L'aumento del numero di epoche potrebbe migliorare i risultati. Tuttavia, fai attenzione sull'overfitting, soprattutto quando si tratta di set di dati di piccole dimensioni. In caso di overfitting puoi ridurre il numero dell'epoca.
Per le attività di classificazione, la complessità dell'attività aumenta con il numero di classi. Per un numero elevato di classi, potrebbero essere necessari set di dati più grandi.
Visualizza un elenco di job di ottimizzazione
Puoi visualizzare un elenco di job di ottimizzazione nel tuo progetto attuale utilizzando la console Google Cloud.
l'SDK Vertex AI per Python o inviando una richiesta GET utilizzando il metodo tuningJobs
.
REST
Per visualizzare un elenco di job di ottimizzazione dei modelli, invia una richiesta GET utilizzando
tuningJobs.list
.
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- PROJECT_ID: il tuo ID progetto.
- TUNING_JOB_REGION: la regione in cui viene eseguito il job di ottimizzazione. Questa è anche la regione predefinita in cui viene caricato il modello ottimizzato.
Metodo HTTP e URL:
GET https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs
Per inviare la richiesta, scegli una delle seguenti opzioni:
curl
Esegui questo comando:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs"
PowerShell
Esegui questo comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs" | Select-Object -Expand Content
Dovresti ricevere una risposta JSON simile alla seguente.
Python
Console
Per visualizzare i tuoi job di ottimizzazione nella console Google Cloud, vai alla Pagina Vertex AI Studio.
I tuoi job di ottimizzazione di Gemini sono elencati nella tabella nei modelli ottimizzati di Gemini Pro .
Ottieni i dettagli di un job di ottimizzazione
Puoi ottenere i dettagli di un job di ottimizzazione nel progetto attuale
utilizzando la console Google Cloud, l'SDK Vertex AI per Python o inviando un messaggio GET
usando il metodo tuningJobs
.
REST
Per visualizzare un elenco di job di ottimizzazione dei modelli, invia una richiesta GET utilizzando
tuningJobs.get
e specifica il TuningJob_ID
.
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- PROJECT_ID: il tuo ID progetto.
- TUNING_JOB_REGION: la regione in cui viene eseguito il job di ottimizzazione. Questa è anche la regione predefinita in cui viene caricato il modello ottimizzato.
- TUNING_JOB_ID: l'ID del job di ottimizzazione.
Metodo HTTP e URL:
GET https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs/TUNING_JOB_ID
Per inviare la richiesta, scegli una delle seguenti opzioni:
curl
Esegui questo comando:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs/TUNING_JOB_ID"
PowerShell
Esegui questo comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs/TUNING_JOB_ID" | Select-Object -Expand Content
Dovresti ricevere una risposta JSON simile alla seguente.
Python
Console
Per visualizzare i dettagli di un modello ottimizzato nella console Google Cloud, vai a Pagina Vertex AI Studio.
Nella tabella Modelli ottimizzati di Gemini Pro, trova il tuo modello e fai clic su Dettagli.
Vengono mostrati i dettagli del modello.
Annullare un job di ottimizzazione
Puoi annullare un job di ottimizzazione nel progetto attuale utilizzando la console Google Cloud,
l'SDK Vertex AI per Python o inviando una richiesta POST utilizzando il metodo tuningJobs
.
REST
Per visualizzare un elenco di job di ottimizzazione dei modelli, invia una richiesta GET utilizzando
tuningJobs.cancel
e specifica il TuningJob_ID
.
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- PROJECT_ID: il tuo ID progetto.
- TUNING_JOB_REGION: la regione in cui viene eseguito il job di ottimizzazione. Questa è anche la regione predefinita in cui viene caricato il modello ottimizzato.
- TUNING_JOB_ID: l'ID del job di ottimizzazione.
Metodo HTTP e URL:
POST https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs/TUNING_JOB_ID:cancel
Per inviare la richiesta, scegli una delle seguenti opzioni:
curl
Esegui questo comando:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d "" \
"https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs/TUNING_JOB_ID:cancel"
PowerShell
Esegui questo comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-Uri "https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs/TUNING_JOB_ID:cancel" | Select-Object -Expand Content
Dovresti ricevere una risposta JSON simile alla seguente.
Python
Console
Per annullare un job di ottimizzazione nella console Google Cloud, vai alla Pagina Vertex AI Studio.
Nella tabella Modelli ottimizzati di Gemini Pro, fai clic su
Gestisci esecuzione.Fai clic su Annulla.
Testa il modello ottimizzato con un prompt
Puoi testare un job di ottimizzazione nel progetto attuale utilizzando la proprietà
SDK Vertex AI per Python o inviando una richiesta POST utilizzando l'tuningJobs
.
L'esempio seguente suggerisce un modello con la domanda "Perché il cielo è blu?".
REST
Per testare un modello ottimizzato con un prompt, invia una richiesta POST
specificare TUNED_ENDPOINT_ID
.
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- PROJECT_ID: il tuo ID progetto.
- TUNING_JOB_REGION: la regione in cui viene eseguito il job di ottimizzazione. Questa è anche la regione predefinita in cui viene caricato il modello ottimizzato.
- ENDPOINT_ID: l'ID endpoint del modello ottimizzato dall'API GET.
- TEMPERATURE:
La temperatura viene utilizzata per il campionamento durante la generazione della risposta, che si verifica quando
topP
etopK
. La temperatura controlla il grado di casualità nella selezione dei token. Le temperature più basse sono ideali per prompt che richiedono una risposta meno aperta o creativa, mentre temperature più alte possono portare a risultati più diversificati o creativi. Una temperatura di0
significa che vengono sempre selezionati i token con la probabilità più alta. In questo caso, le risposte per un determinato sono per lo più deterministici, ma è ancora possibile una piccola variazione.Se il modello restituisce una risposta troppo generica, troppo breve, oppure fornisce una risposta di riserva di risposta, prova ad aumentare la temperatura.
- TOP_P:
Top-P cambia il modo in cui il modello seleziona i token per l'output. Token selezionati
dal più probabile (vedi top-K) al meno probabile fino alla somma delle probabilità
equivale al valore di top-p. Ad esempio, se i token A, B e C hanno una probabilità di
0,3, 0,2 e 0,1 e il valore di top-P è
0.5
, il modello seleziona A o B come token successivo utilizzando la temperatura ed esclude C come candidato.Specifica un valore più basso per risposte meno casuali e un valore più alto per più risposte risposte casuali.
- TOP_K:
Top-K cambia il modo in cui il modello seleziona i token per l'output. Un top-K di
1
significa che il successivo token selezionato è il più probabile tra tutti nel vocabolario del modello (chiamato anche decodifica greedy), mentre una top-K di3
significa che il token successivo viene selezionato tra i tre probabili token utilizzando la temperatura.Per ogni passaggio di selezione dei token, vengono mostrati i token top-K con il vengono campionate. Quindi i token vengono ulteriormente filtrati in base a top-p con il token finale selezionato utilizzando il campionamento della temperatura.
Specifica un valore più basso per risposte meno casuali e un valore più alto per più risposte risposte casuali.
- MAX_OUTPUT_TOKENS:
Numero massimo di token che possono essere generati nella risposta. Un token è
di circa quattro caratteri. 100 token corrispondono a circa 60-80 parole.
Specifica un valore più basso per risposte più brevi e un valore più alto per risposte potenzialmente più lunghe diverse.
Metodo HTTP e URL:
POST https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/endpoints/ENDPOINT_ID:generateContent
Corpo JSON della richiesta:
{ "contents": [ { "role": "USER", "parts": { "text" : "Why is sky blue?" } } ], "generation_config": { "temperature":TEMPERATURE, "topP": TOP_P, "topK": TOP_K, "maxOutputTokens": MAX_OUTPUT_TOKENS } }
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://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/endpoints/ENDPOINT_ID:generateContent"
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://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/endpoints/ENDPOINT_ID:generateContent" | Select-Object -Expand Content
Dovresti ricevere una risposta JSON simile alla seguente.
Python
from vertexai.preview.generative_models import GenerativeModel
from vertexai.preview import tuning
from vertexai.preview.tuning import sft
sft_tuning_job = sft.SupervisedTuningJob("projects/<PROJECT_ID>/locations/<TUNING_JOB_REGION>/tuningJobs/<TUNING_JOB_ID>")
tuned_model = GenerativeModel(sft_tuning_job.tuned_model_endpoint_name)
print(tuned_model.generate_content(content))
Console
Per visualizzare i dettagli di un modello ottimizzato nella console Google Cloud, vai a Pagina Vertex AI Studio.
Nella tabella Modelli ottimizzati di Gemini Pro, seleziona Test.
Si apre una pagina in cui puoi creare una conversazione con il tuo un modello di machine learning.
Metriche di ottimizzazione e convalida
Puoi configurare un job di ottimizzazione del modello per raccogliere e generare report sull'ottimizzazione del modello. metriche di valutazione del modello, che possono quindi essere visualizzate Vertex AI Studio
Per visualizzare i dettagli di un modello ottimizzato nella console Google Cloud, vai a Pagina Vertex AI Studio.
Nella tabella Tune e Distill, fai clic sul nome del modello ottimizzato di cui vuoi visualizzare le metriche.
Le metriche di ottimizzazione vengono visualizzate nella scheda Monitor.
Metriche di ottimizzazione del modello
Il job di ottimizzazione del modello raccoglie automaticamente le seguenti metriche di ottimizzazione
per gemini-1.0-pro-002
.
/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 un addestramento passaggio. Una singola previsione è composta da una sequenza di token. Questa metrica misura la precisione dei token previsti rispetto al suolo per l'ottimizzazione del set di dati./train_num_predictions:
Numero di token previsti in una fase di addestramento.
Metriche di convalida del modello:
Puoi configurare un job di ottimizzazione del modello per raccogliere le seguenti metriche di convalida
per gemini-1.0-pro-002
.
/eval_total_loss
: perdita del set di dati di convalida in una fase di convalida./eval_fraction_of_correct_next_step_preds
: l'accuratezza del token di convalida. Una singola previsione è composta da una sequenza di token. Questo misura l'accuratezza dei token previsti rispetto alla metrica dati empirici reali nel set di dati di convalida./eval_num_predictions
: numero di token previsti in un passaggio di convalida.
Le visualizzazioni delle metriche sono disponibili al termine del job di ottimizzazione del modello. Se non specifichi un set di dati di convalida quando crei il job di ottimizzazione, le visualizzazioni delle metriche di ottimizzazione.
Passaggi successivi
- Per scoprire come l'ottimizzazione supervisionata può essere utilizzata in una soluzione che crea un Knowledge base sull'AI generativa, consulta Soluzione Jump Start: IA generativa knowledge base.