Puoi valutare le prestazioni dei modelli di base e dei tuoi modelli di IA generativa su Vertex AI. I modelli vengono valutati utilizzando un insieme di metriche rispetto a un set di dati di valutazione da te fornito. In questa pagina viene spiegato come la valutazione di modelli basati sul calcolo tramite il servizio della pipeline di valutazione come creare e formattare il set di dati di valutazione e come eseguire la valutazione utilizzando la console Google Cloud, l'API Vertex AI o l'SDK Vertex AI per Python.
Come funziona la valutazione di modelli basati sul calcolo
Per valutare le prestazioni di un modello, devi prima creare un set di dati di valutazione che contiene coppie di prompt e dati di fatto. Per ogni coppia, il prompt è l'input che desideri valutare e la risposta di fatto è la risposta ideale il prompt. Durante la valutazione, il prompt in ogni coppia di valutazione un set di dati viene passato al modello per produrre un output. L'output generato e i dati di fatto del set di dati di valutazione vengono utilizzati per calcolare e le metriche di valutazione.
Il tipo di metriche utilizzate per la valutazione dipende dall'attività che stai e la valutazione. La tabella seguente mostra le attività supportate e le metriche utilizzate per valutare ogni attività:
Attività | Metrica |
---|---|
Classificazione | Micro-F1, Macro-F1, Per classe F1 |
Riassunto | ROUGE-L |
Question answering | Corrispondenza esatta |
Generazione di testo | BLEU, ROUGE-L |
Modelli supportati
La valutazione del modello è supportata per le versioni di base e ottimizzate di text-bison
.
prepara il set di dati di valutazione
Il set di dati utilizzato per la valutazione del modello include prompt e coppie di dati di fatto che si allineano all'attività che vuoi valutare. Il tuo il set di dati deve includere almeno una coppia di prompt e dati empirici reali 10 coppie per metriche significative. Più esempi più significativi i risultati.
Formato del set di dati
Il set di dati di valutazione deve essere in formato JSON Lines (JSONL)
in cui ogni riga contiene una singola coppia di prompt e dati di fatto specificati
rispettivamente nei campi input_text
e output_text
. input_text
contiene il prompt che vuoi valutare e il campo output_text
contiene la risposta ideale per il prompt.
La lunghezza massima del token per input_text
è 8192 e la lunghezza massima del token
per output_text
è 1024.
Carica il set di dati di valutazione in Cloud Storage
Puoi crea un nuovo bucket Cloud Storage o utilizzarne uno esistente per archiviare il file del set di dati. Il bucket deve trovarsi nella della stessa regione del modello.
Quando il bucket è pronto, carica del tuo set di dati nel bucket.
Esegui la valutazione del modello
Puoi valutare i modelli utilizzando l'API REST o la console Google Cloud.
Autorizzazioni richieste per questa attività
Per eseguire questa attività, devi concedere i ruoli di Identity and Access Management (IAM) a ciascuno dei seguenti account di servizio:
Service account | Entità predefinita | Descrizione | Ruoli |
---|---|---|---|
Vertex AI Service Agent | service-PROJECT_NUMBER@gcp-sa-aiplatform.iam.gserviceaccount.com |
Viene automaticamente eseguito il provisioning dell'agente di servizio Vertex AI per il progetto e viene concesso ruolo predefinito. Tuttavia, se un criterio dell'organizzazione modifica le autorizzazioni predefinite dell'agente di servizio Vertex AI, devi concedere manualmente il ruolo all'agente di servizio. | Agente di servizio Vertex AI
(roles/aiplatform.serviceAgent ) |
Account di servizio Vertex AI Pipelines | PROJECT_NUMBER-compute@developer.gserviceaccount.com |
L'account di servizio che esegue la pipeline. L'account di servizio predefinito utilizzato è Account di servizio predefinito Compute Engine. Facoltativamente, puoi utilizzare un account di servizio personalizzato anziché quello predefinito. |
A seconda delle origini dati di input e di output, potrebbe anche essere necessario concedere a Vertex AI Pipelines Ruoli aggiuntivi dell'account di servizio:
Origine dati | Ruolo | Dove concedere il ruolo |
---|---|---|
Tabella BigQuery standard | Editor dati BigQuery | Progetto che esegue la pipeline |
Visualizzatore dati BigQuery | Progetto a cui appartiene la tabella | |
Vista BigQuery di una tabella BigQuery standard | Editor dati BigQuery | Progetto che esegue la pipeline |
Visualizzatore dati BigQuery | Progetto a cui appartiene la vista | |
Visualizzatore dati BigQuery | Progetto a cui appartiene la tabella | |
Tabella esterna BigQuery contenente un file Cloud Storage di origine | Editor dati BigQuery | Progetto che esegue la pipeline |
Visualizzatore dati BigQuery | Progetto a cui appartiene la tabella esterna | |
Visualizzatore oggetti Storage | Progetto a cui appartiene il file di origine | |
Vista BigQuery di una tabella esterna BigQuery che contiene un file Cloud Storage di origine | Editor dati BigQuery | Progetto che esegue la pipeline |
Visualizzatore dati BigQuery | Progetto a cui appartiene la vista | |
Visualizzatore dati BigQuery | Progetto a cui appartiene la tabella esterna | |
Visualizzatore oggetti Storage | Progetto a cui appartiene il file di origine | |
File Cloud Storage | Visualizzatore dati BigQuery | Progetto che esegue la pipeline |
Per creare un job di valutazione del modello, invia una richiesta POST
utilizzando il metodo
pipelineJobs.
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
PROJECT_ID : il progetto Google Cloud che esegue componenti della pipeline.PIPELINEJOB_DISPLAYNAME : un display del job della pipeline.LOCATION : la regione in cui eseguire i componenti della pipeline. Al momento è supportato solo il criterious-central1
.DATASET_URI : l'URI Cloud Storage del tuo set di dati di riferimento. Puoi specificare uno o più URI. Questo parametro supporta caratteri jolly. Per scoprire di più su questo parametro, consulta InputConfig.OUTPUT_DIR : l'URI Cloud Storage da archiviare come output di valutazione.MODEL_NAME : specifica un modello di publisher o un modello ottimizzato del modello come segue:- Modello di publisher:
publishers/google/models/MODEL@MODEL_VERSION
Esempio:
publishers/google/models/text-bison@002
- Modello ottimizzato:
projects/PROJECT_NUMBER/locations/LOCATION/models/ENDPOINT_ID
Esempio:
projects/123456789012/locations/us-central1/models/1234567890123456789
Il job di valutazione non influisce sui deployment esistenti del modello o delle relative risorse.
- Modello di publisher:
EVALUATION_TASK : l'attività da eseguire valutare il modello. Il job di valutazione calcola un insieme di metriche pertinenti allo specifico dell'attività. I valori accettati sono:summarization
question-answering
text-generation
classification
INSTANCES_FORMAT : il formato del set di dati. Al momento è supportato solo il criteriojsonl
. Per saperne di più su questo parametro, consulta InputConfig.PREDICTIONS_FORMAT : il formato del come output di valutazione. Al momento è supportato solojsonl
. Per scoprire di più in merito , consulta InputConfig.MACHINE_TYPE : (facoltativo) il tipo di macchina per che esegue il job di valutazione. Il valore predefinito èe2-highmem-16
. Per un elenco di tipi di macchine supportati, consulta Tipi di macchine.- (Facoltativo)
SERVICE_ACCOUNT : il servizio da usare per eseguire il job di valutazione. Per scoprire come creare un account di servizio personalizzato: vedi Configura un account di servizio con autorizzazioni granulari. Se non specificato, il agente di servizio del codice personalizzato Vertex AI . NETWORK : (facoltativo) il nome completo del rete Compute Engine verso cui eseguire il peering del job di valutazione. Il formato del nome della rete èprojects/PROJECT_NUMBER/global/networks/NETWORK_NAME
. Se questo campo, è necessario disporre di un peering di rete VPC Vertex AI. Se questo valore non è specificato, il job di valutazione non è in peering con nessuna rete.KEY_NAME : (facoltativo) il nome dell'account gestito dal cliente chiave di crittografia (CMEK). Se configurate, le risorse create dal job di valutazione vengono criptate usando la chiave di crittografia fornita. Il formato del nome della chiave èprojects/PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY
. La chiave deve trovarsi nella stessa regione del job di valutazione.
Metodo HTTP e URL:
POST https://LOCATION -aiplatform.googleapis.com/v1/projects/PROJECT_ID /locations/LOCATION /pipelineJobs
Corpo JSON della richiesta:
{ "displayName": "PIPELINEJOB_DISPLAYNAME ", "runtimeConfig": { "gcsOutputDirectory": "gs://OUTPUT_DIR ", "parameterValues": { "project": "PROJECT_ID ", "location": "LOCATION ", "batch_predict_gcs_source_uris": ["gs://DATASET_URI "], "batch_predict_gcs_destination_output_uri": "gs://OUTPUT_DIR ", "model_name": "MODEL_NAME ", "evaluation_task": "EVALUATION_TASK ", "batch_predict_instances_format": "INSTANCES_FORMAT ", "batch_predict_predictions_format: "PREDICTIONS_FORMAT ", "machine_type": "MACHINE_TYPE ", "service_account": "SERVICE_ACCOUNT ", "network": "NETWORK ", "encryption_spec_key_name": "KEY_NAME " } }, "templateUri": "https://us-kfp.pkg.dev/vertex-evaluation/pipeline-templates/evaluation-llm-text-generation-pipeline/1.0.1" }
Per inviare la richiesta, scegli una delle seguenti opzioni:
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://LOCATION -aiplatform.googleapis.com/v1/projects/PROJECT_ID /locations/LOCATION /pipelineJobs"
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://LOCATION -aiplatform.googleapis.com/v1/projects/PROJECT_ID /locations/LOCATION /pipelineJobs" | Select-Object -Expand Content
Dovresti ricevere una risposta JSON simile alla seguente. Tieni presente che pipelineSpec
è stato troncato per risparmiare spazio.
Risposta
...... ..... "state": "PIPELINE_STATE_PENDING", "labels": { "vertex-ai-pipelines-run-billing-id": "1234567890123456789" }, "runtimeConfig": { "gcsOutputDirectory": "gs://my-evaluation-bucket/output", "parameterValues": { "project": "my-project", "location": "us-central1", "batch_predict_gcs_source_uris": [ "gs://my-evaluation-bucket/reference-datasets/eval_data.jsonl" ], "batch_predict_gcs_destination_output_uri": "gs://my-evaluation-bucket/output", "model_name": "publishers/google/models/text-bison@002" } }, "serviceAccount": "123456789012-compute@developer.gserviceaccount.com", "templateUri": "https://us-kfp.pkg.dev/vertex-evaluation/pipeline-templates/evaluation-llm-text-generation-pipeline/1.0.1", "templateMetadata": { "version": "sha256:d4c0d665533f6b360eb474111aa5e00f000fb8eac298d367e831f3520b21cb1a" } }
Comando curl di esempio
PROJECT_ID=myproject
REGION=us-central1
MODEL_NAME=publishers/google/models/text-bison@002
TEST_DATASET_URI=gs://my-gcs-bucket-uri/dataset.jsonl
OUTPUT_DIR=gs://my-gcs-bucket-uri/output
curl \
-X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
"https://${REGION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${REGION}/pipelineJobs" -d \
$'{
"displayName": "evaluation-llm-text-generation-pipeline",
"runtimeConfig": {
"gcsOutputDirectory": "'${OUTPUT_DIR}'",
"parameterValues": {
"project": "'${PROJECT_ID}'",
"location": "'${REGION}'",
"batch_predict_gcs_source_uris": ["'${TEST_DATASET_URI}'"],
"batch_predict_gcs_destination_output_uri": "'${OUTPUT_DIR}'",
"model_name": "'${MODEL_NAME}'",
}
},
"templateUri": "https://us-kfp.pkg.dev/vertex-evaluation/pipeline-templates/evaluation-llm-text-generation-pipeline/1.0.1"
}'
Per scoprire come installare o aggiornare l'SDK Vertex AI per Python, vedi Installare l'SDK Vertex AI per Python. Per ulteriori informazioni, consulta documentazione di riferimento dell'API Python.
Per creare un job di valutazione del modello utilizzando la console Google Cloud, esegui segui questi passaggi:
- Nella console Google Cloud, vai alla pagina Vertex AI Model Registry.
- Fai clic sul nome del modello da valutare.
- Nella scheda Valuta, fai clic su Crea valutazione e configura come che segue:
- Obiettivo: seleziona l'attività da valutare.
- Colonna o campo target: (solo classificazione) inserisci il target.
colonna per la previsione. Esempio:
ground_truth
. - Percorso di origine: inserisci o seleziona l'URI del set di dati di valutazione.
- Formato di output: inserisci il formato dell'output di valutazione.
Al momento è supportato solo
jsonl
. - Percorso Cloud Storage: inserisci o seleziona l'URI per archiviare la valutazione come output.
- Nomi dei corsi: (solo classificazione) inserisci l'elenco di tutte le possibili opzioni dei nomi delle classi.
- Numero di nodi di computing: inserisci il numero di nodi di computing da eseguire il job di valutazione.
- Tipo di macchina: seleziona un tipo di macchina da utilizzare per eseguire di valutazione.
- Fai clic su Avvia valutazione.
Visualizza i risultati di una valutazione
Puoi trovare i risultati della valutazione nella directory di output di Cloud Storage
specificato durante la creazione del job di valutazione. Il file è denominato
evaluation_metrics.json
.
Per i modelli ottimizzati, puoi visualizzare i risultati della valutazione anche nella console Google Cloud:
Nella sezione Vertex AI della console Google Cloud, vai a la pagina Vertex AI Model Registry.
Fai clic sul nome del modello per visualizzare le metriche di valutazione.
Nella scheda Valuta, fai clic sul nome dell'esecuzione di valutazione che ti interessa. da visualizzare.
Passaggi successivi
- Prova un blocco note di esempio di valutazione.
- Scopri di più sulla valutazione dell'AI generativa.
- Scopri di più sulla valutazione online con la valutazione rapida.
- Scopri di più sulla valutazione della coppia basata su modello con la pipeline AutoSxS.
- Scopri come ottimizzare un modello di base.