Esegui una pipeline di valutazione basata su calcolo

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 fornito da te. Questa pagina spiega come funziona la valutazione del modello basata su 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 dal modello e i dati di fatto del set di dati di valutazione vengono utilizzati per calcolare le metriche di valutazione.

Il tipo di metriche utilizzate per la valutazione dipende dall'attività che stai valutando. La tabella seguente mostra le attività supportate e le metriche utilizzate per valutare ogni attività:

Attività Metrica
Classificazione Micro F1, Macro F1, F1 per classe
Riassunto ROUGE-L
Question answering Corrispondenza esatta
Generazione di testo BLEU, ROUGE-L

Modelli supportati

La valutazione del modello è supportata per i seguenti modelli:

  • text-bison: versioni di base e ottimizzate.

  • Gemini: tutte le attività tranne la classificazione.

Prepara il set di dati di valutazione

Il set di dati di valutazione utilizzato per la valutazione del modello include coppie di prompt e dati di fatto in linea con l'attività che vuoi valutare. Il set di dati deve includere almeno un prompt e una coppia di dati di fatto e almeno 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 specificata rispettivamente nei campi input_text e output_text. Il campo 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 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.

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 progetto Google Cloud che esegue componenti della pipeline.
  • PIPELINEJOB_DISPLAYNAME: un nome visualizzato per il job pipeline.
  • 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 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.

  • 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 accettati sono:
    • summarization
    • question-answering
    • text-generation
    • classification
  • INSTANCES_FORMAT: il formato del set di dati. Al momento è supportato solo jsonl. Per saperne di più su questo parametro, consulta InputConfig.
  • PREDICTIONS_FORMAT: il formato del come output di valutazione. Al momento è supportato solo jsonl. Per scoprire di più su questo parammetro, 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 dei 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, consulta la sezione Configurare un account di servizio con autorizzazioni granulari. Se non specificato, il agente di servizio del codice personalizzato Vertex AI .
  • NETWORK: (Facoltativo) Il nome completo della rete Compute Engine con 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 non viene specificato, il job di valutazione non è in coppia con nessuna 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 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:

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, quindi esegui il comando seguente:

$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 per Python, consulta Installare l'SDK Vertex AI per 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, svolgi i seguenti passaggi:

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

    Vai al registro dei modelli di Vertex AI

  2. Fai clic sul nome del modello da valutare.
  3. Nella scheda Valuta, fai clic su Crea valutazione e configura come che segue:
    • Obiettivo: seleziona l'attività da 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 per archiviare l'output della valutazione.
    • Nomi dei corsi: (solo classificazione) inserisci l'elenco di tutte le possibili opzioni dei nomi delle classi.
    • Numero di nodi di calcolo: inserisci il numero di nodi di calcolo per eseguire il job di valutazione.
    • Tipo di macchina: seleziona un tipo di macchina da utilizzare per eseguire il job di valutazione.
  4. 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 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 Model Registry di Vertex AI.

    Vai a registro dei modelli di Vertex AI

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

  3. Nella scheda Valuta, fai clic sul nome dell'esecuzione di valutazione che ti interessa. da visualizzare.

Passaggi successivi