Esegui una pipeline di valutazione basata su calcolo

Questa guida mostra come eseguire una pipeline di valutazione basata sul calcolo per valutare le prestazioni dei modelli di base e dei modelli di AI generativa ottimizzati su Vertex AI. La pipeline valuta il modello utilizzando un insieme di metriche rispetto a un set di dati di valutazione fornito dall'utente.

Questa pagina tratta i seguenti argomenti:

Il seguente diagramma riassume il flusso di lavoro generale per l'esecuzione di una valutazione basata sul calcolo:

Per le funzionalità di valutazione basate sul calcolo più recenti, consulta Definisci le metriche.

Come funziona la valutazione dei modelli basata su calcolo

Per valutare le prestazioni di un modello, fornisci un set di dati di valutazione che contenga coppie di prompt e dati di fatto. Per ogni coppia, il prompt è l'input che vuoi valutare e la risposta basata su dati di fatto è la risposta ideale per quel prompt.

Durante la valutazione, il processo passa il prompt di ogni coppia al modello per generare un output. Il processo utilizza quindi l'output generato dal modello e i dati di riferimento corrispondenti per calcolare le metriche di valutazione.

Il tipo di metriche utilizzato per la valutazione dipende dall'attività che stai valutando. La tabella seguente mostra le attività supportate e le metriche utilizzate per valutare ciascuna 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

Puoi valutare i seguenti modelli:

  • text-bison: versioni di base e ottimizzate.
  • Gemini: tutte le attività tranne la classificazione.

Prepara e carica il set di dati di valutazione

Il set di dati di valutazione include coppie di prompt e dati di fatto in linea con l'attività che vuoi valutare. Il set di dati deve includere almeno una coppia di prompt e dati di riferimento e almeno 10 coppie per metriche significative. Più esempi fornisci, più significativi saranno i risultati.

Formato del set di dati

Il set di dati di valutazione deve essere in formato JSON Lines (JSONL), in cui ogni riga è un oggetto JSON. Ogni oggetto deve contenere un campo input_text con il prompt che vuoi valutare e un campo output_text con la risposta ideale per quel prompt.

La lunghezza massima del token per input_text è 8192 e per output_text è 1024.

Carica il set di dati in Cloud Storage

Puoi creare un nuovo bucket Cloud Storage o utilizzarne uno esistente per archiviare il file del set di dati. Il bucket deve trovarsi nella stessa regione del modello.

Quando il bucket è pronto, carica il file del set di dati nel bucket.

Scegliere un metodo di valutazione

Puoi eseguire un job di valutazione basato sul calcolo utilizzando la console Google Cloud , l'API REST o l'SDK Vertex AI per Python. La tabella seguente può aiutarti a scegliere l'opzione migliore per il tuo caso d'uso.

Metodo Descrizione Caso d'uso
Google Cloud console Una GUI (Graphic User Interface) che fornisce un flusso di lavoro guidato e passo passo per la creazione e il monitoraggio dei job di valutazione.
  • Nuovi utenti che stanno imparando il flusso di lavoro di valutazione.
  • Valutazioni rapide e una tantum.
  • Visualizzazione della configurazione e dei risultati senza scrivere codice.
API REST Un'interfaccia programmatica per la creazione di job di valutazione tramite l'invio di richieste JSON a un endpoint.
  • Integrazione della valutazione del modello in applicazioni esistenti o workflow multilingue.
  • Creazione di strumenti o automazioni personalizzati non basati su Python.
SDK Vertex AI Python Una libreria Python di alto livello che semplifica le interazioni con l'API Vertex AI.
  • Data scientist e ML engineer che lavorano principalmente in ambienti Python (ad esempio, nei notebook Jupyter).
  • Automatizzare le pipeline MLOps e i flussi di lavoro di valutazione complessi.

Esegui la valutazione del modello

Utilizza uno dei seguenti metodi per eseguire un job di valutazione del modello.

REST

Per creare un job di valutazione del modello, invia una richiesta POST utilizzando il metodo pipelineJobs.

Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

  • PROJECT_ID: il Google Cloud progetto che esegue i componenti della pipeline.
  • PIPELINEJOB_DISPLAYNAME: un nome visualizzato per il pipelineJob.
  • LOCATION: la regione in cui eseguire i componenti della pipeline. Al momento è supportato solo us-central1.
  • DATASET_URI: l'URI Cloud Storage del set di dati di riferimento. Puoi specificare uno o più URI. Questo parametro supporta i caratteri jolly. Per scoprire di più su questo parametro, consulta InputConfig.
  • OUTPUT_DIR: l'URI Cloud Storage in cui archiviare l'output della valutazione.
  • MODEL_NAME: specifica una risorsa modello di publisher o un modello ottimizzato come segue:
    • Modello del 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 sulle relative risorse.

  • EVALUATION_TASK: l'attività su cui vuoi valutare il modello. Il job di valutazione calcola un insieme di metriche pertinenti per l'attività specifica. I valori accettabili includono:
    • summarization
    • question-answering
    • text-generation
    • classification
  • INSTANCES_FORMAT: il formato del set di dati. Al momento è supportato solo jsonl. Per scoprire di più su questo parametro, consulta InputConfig.
  • PREDICTIONS_FORMAT: il formato dell'output di valutazione. Al momento è supportato solo jsonl. Per scoprire di più su questo parametro, consulta <x0A> InputConfig.
  • MACHINE_TYPE: (facoltativo) Il tipo di macchina per l'esecuzione del job di valutazione. Il valore predefinito è e2-highmem-16. Per un elenco dei tipi di macchine supportati, vedi Tipi di macchine.
  • SERVICE_ACCOUNT: (facoltativo) il service account da utilizzare per l'esecuzione del job di valutazione. Per scoprire come creare un account di servizio personalizzato, consulta Configurare un account di servizio con autorizzazioni granulari. Se non specificato, viene utilizzato l'agente di servizio del codice personalizzato Vertex AI.
  • NETWORK: (facoltativo) Il nome completo della rete Compute Engine a cui eseguire il peering del job di valutazione. Il formato del nome della rete è projects/PROJECT_NUMBER/global/networks/NETWORK_NAME. Se specifichi questo campo, devi disporre del peering di rete VPC per Vertex AI. Se non specificato, il job di valutazione non viene sottoposto a peering con alcuna rete.
  • KEY_NAME: (facoltativo) il nome della chiave di crittografia gestita dal cliente (CMEK). Se configurate, le risorse create dal job di valutazione vengono criptate utilizzando 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 di queste 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://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/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://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.

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"
}'

Python

Per scoprire come installare o aggiornare l'SDK Vertex AI Python, consulta Installare l'SDK Vertex AI Python. Per saperne di più, consulta la documentazione di riferimento dell'API Python.

import os

from google.auth import default

import vertexai
from vertexai.preview.language_models import (
    EvaluationTextClassificationSpec,
    TextGenerationModel,
)

PROJECT_ID = os.getenv("GOOGLE_CLOUD_PROJECT")


def evaluate_model() -> object:
    """Evaluate the performance of a generative AI model."""

    # Set credentials for the pipeline components used in the evaluation task
    credentials, _ = default(scopes=["https://www.googleapis.com/auth/cloud-platform"])

    vertexai.init(project=PROJECT_ID, location="us-central1", credentials=credentials)

    # Create a reference to a generative AI model
    model = TextGenerationModel.from_pretrained("text-bison@002")

    # Define the evaluation specification for a text classification task
    task_spec = EvaluationTextClassificationSpec(
        ground_truth_data=[
            "gs://cloud-samples-data/ai-platform/generative_ai/llm_classification_bp_input_prompts_with_ground_truth.jsonl"
        ],
        class_names=["nature", "news", "sports", "health", "startups"],
        target_column_name="ground_truth",
    )

    # Evaluate the model
    eval_metrics = model.evaluate(task_spec=task_spec)
    print(eval_metrics)
    # Example response:
    # ...
    # PipelineJob run completed.
    # Resource name: projects/123456789/locations/us-central1/pipelineJobs/evaluation-llm-classification-...
    # EvaluationClassificationMetric(label_name=None, auPrc=0.53833705, auRoc=0.8...

    return eval_metrics

Console

Per creare un job di valutazione del modello utilizzando la console Google Cloud , segui questi passaggi:

  1. Nella console Google Cloud , vai alla pagina Vertex AI Model Registry.

    Vai a Vertex AI Model Registry

  2. Fai clic sul nome del modello che vuoi valutare.
  3. Nella scheda Valuta, fai clic su Crea valutazione e configura le seguenti impostazioni:
    • Obiettivo: seleziona l'attività che vuoi valutare.
    • Colonna o campo di destinazione: (solo classificazione) inserisci la colonna di destinazione 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 della valutazione. Al momento è supportato solo jsonl.
    • Percorso Cloud Storage: inserisci o seleziona l'URI in cui archiviare l'output di valutazione.
    • Nomi delle classi: (solo classificazione) inserisci l'elenco dei possibili 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 l'esecuzione del job di valutazione.
  4. Fai clic su Inizia valutazione.

Visualizza i risultati di una valutazione

Puoi trovare i risultati della valutazione nella directory di output di Cloud Storage specificata durante la creazione del job di valutazione. Il file si chiama evaluation_metrics.json.

Per i modelli ottimizzati, puoi anche visualizzare i risultati della valutazione nella console Google Cloud :

  1. Nella sezione Vertex AI della console Google Cloud , vai alla pagina Vertex AI Model Registry.

    Vai a Vertex AI Model Registry

  2. Fai clic sul nome del modello per visualizzare le relative metriche di valutazione.

  3. Nella scheda Valuta, fai clic sul nome dell'esecuzione della valutazione che vuoi visualizzare.

Passaggi successivi