Ejecutar un flujo de procesamiento de evaluación basado en cálculos

Puedes evaluar el rendimiento de los modelos fundacionales y de tus modelos de IA generativa ajustados en Vertex AI. Los modelos se evalúan mediante un conjunto de métricas con un conjunto de datos de evaluación que proporcionas. En esta página se explica cómo funciona la evaluación de modelos basada en cálculos a través del servicio de canalización de evaluación, cómo crear y dar formato al conjunto de datos de evaluación y cómo llevar a cabo la evaluación mediante la Google Cloud consola, la API Vertex AI o el SDK de Vertex AI para Python.

Cómo funciona la evaluación de modelos basada en cálculos

Para evaluar el rendimiento de un modelo, primero debes crear un conjunto de datos de evaluación que contenga pares de peticiones y datos validados. En cada par, la petición es la entrada que quieres evaluar y la verdad fundamental es la respuesta ideal a esa petición. Durante la evaluación, la petición de cada par del conjunto de datos de evaluación se envía al modelo para generar un resultado. La salida generada por el modelo y la verdad fundamental del conjunto de datos de evaluación se usan para calcular las métricas de evaluación.

El tipo de métricas que se usan para la evaluación depende de la tarea que estés evaluando. En la siguiente tabla se muestran las tareas admitidas y las métricas que se usan para evaluar cada tarea:

Tarea Métrica
Clasificación Micro-F1, Macro-F1 y F1 por clase
Creación de resúmenes ROUGE-L
Búsqueda de respuestas Concordancia exacta
Generación de texto BLEU, ROUGE-L

Modelos admitidos

La evaluación de modelos se admite en los siguientes modelos:

  • text-bison: versiones base y optimizadas.

  • Gemini todas las tareas excepto la clasificación.

Preparar el conjunto de datos de evaluación

El conjunto de datos de evaluación que se usa para evaluar el modelo incluye pares de peticiones y de valores de referencia que se ajustan a la tarea que quieres evaluar. Tu conjunto de datos debe incluir un mínimo de un par de peticiones y datos verificados, y al menos 10 pares para que las métricas sean significativas. Cuantos más ejemplos proporciones, más significativos serán los resultados.

Formato del conjunto de datos

El conjunto de datos de evaluación debe estar en formato JSON Lines (JSONL), donde cada línea contiene un par de peticiones y respuestas correctas especificado en los campos input_text y output_text, respectivamente. El campo input_text contiene la petición que quieres evaluar y el campo output_text contiene la respuesta ideal a la petición.

La longitud máxima del token de input_text es de 8192 y la de output_text es de 1024.

Subir el conjunto de datos de evaluación a Cloud Storage

Puedes crear un segmento de Cloud Storage o usar uno que ya tengas para almacenar el archivo del conjunto de datos. El segmento debe estar en la misma región que el modelo.

Cuando el segmento esté listo, suba el archivo del conjunto de datos al segmento.

Realizar una evaluación del modelo

Puedes evaluar modelos mediante la API REST o la Google Cloud consola.

REST

Para crear una tarea de evaluación de modelos, envía una solicitud POST con el método pipelineJobs.

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • PROJECT_ID: el Google Cloud proyecto que ejecuta los componentes de la canalización.
  • PIPELINEJOB_DISPLAYNAME: nombre visible del objeto PipelineJob.
  • LOCATION: la región en la que se ejecutarán los componentes del flujo de procesamiento. Actualmente, solo se admite us-central1.
  • DATASET_URI: el URI de Cloud Storage de tu conjunto de datos de referencia. Puedes especificar uno o varios URIs. Este parámetro admite comodines. Para obtener más información sobre este parámetro, consulte InputConfig.
  • OUTPUT_DIR: el URI de Cloud Storage para almacenar la salida de la evaluación.
  • MODEL_NAME: especifica un modelo de editor o un recurso de modelo ajustado de la siguiente manera:
    • Modelo de editor: publishers/google/models/MODEL@MODEL_VERSION

      Ejemplo: publishers/google/models/text-bison@002

    • Modelo ajustado: projects/PROJECT_NUMBER/locations/LOCATION/models/ENDPOINT_ID

      Ejemplo: projects/123456789012/locations/us-central1/models/1234567890123456789

    El trabajo de evaluación no afecta a las implementaciones del modelo ni a sus recursos.

  • EVALUATION_TASK: la tarea en la que quieres evaluar el modelo. La tarea de evaluación calcula un conjunto de métricas relevantes para esa tarea específica. Entre los valores aceptados se incluyen los siguientes:
    • summarization
    • question-answering
    • text-generation
    • classification
  • INSTANCES_FORMAT: el formato de tu conjunto de datos. Actualmente, solo se admite jsonl. Para obtener más información sobre este parámetro, consulte InputConfig.
  • PREDICTIONS_FORMAT: el formato de la salida de la evaluación. Actualmente, solo se admite jsonl. Para obtener más información sobre este parámetro, consulte InputConfig.
  • MACHINE_TYPE: (opcional) El tipo de máquina para ejecutar el trabajo de evaluación. El valor predeterminado es e2-highmem-16. Para ver una lista de los tipos de máquinas compatibles, consulta Tipos de máquinas.
  • SERVICE_ACCOUNT: (Opcional) Cuenta de servicio que se usará para ejecutar el trabajo de evaluación. Para saber cómo crear una cuenta de servicio personalizada, consulta Configurar una cuenta de servicio con permisos detallados. Si no se especifica, se usa el agente de servicio de código personalizado de Vertex AI.
  • NETWORK: (Opcional) Nombre completo de la red de Compute Engine con la que se emparejará el trabajo de evaluación. El formato del nombre de la red es projects/PROJECT_NUMBER/global/networks/NETWORK_NAME. Si especificas este campo, debes tener un emparejamiento entre redes de VPC para Vertex AI. Si no se especifica, la tarea de evaluación no se empareja con ninguna red.
  • KEY_NAME: (Opcional) Nombre de la clave de cifrado gestionada por el cliente (CMEK). Si se configura, los recursos creados por el trabajo de evaluación se cifran con la clave de cifrado proporcionada. El formato del nombre de la clave es projects/PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY. La clave debe estar en la misma región que el trabajo de evaluación.

Método HTTP y URL:

POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/pipelineJobs

Cuerpo JSON de la solicitud:

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

Para enviar tu solicitud, elige una de estas opciones:

curl

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente 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

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente 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

Deberías recibir una respuesta JSON similar a la siguiente. Ten en cuenta que pipelineSpec se ha truncado para ahorrar espacio.

Comando curl de ejemplo

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

Para saber cómo instalar o actualizar el SDK de Vertex AI para Python, consulta Instalar el SDK de Vertex AI para Python. Para obtener más información, consulta la documentación de referencia de la 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

Consola

Para crear un trabajo de evaluación de modelos mediante la consola Google Cloud , sigue estos pasos:

  1. En la Google Cloud consola, ve a la página Registro de modelos de Vertex AI.

    Ir a Registro de modelos de Vertex AI

  2. Haz clic en el nombre del modelo que quieras evaluar.
  3. En la pestaña Evaluar, haz clic en Crear evaluación y configura los campos de la siguiente manera:
    • Objetivo: selecciona la tarea que quieras evaluar.
    • Columna o campo de destino: (solo para clasificación) introduce la columna de destino para la predicción. Ejemplo: ground_truth
    • Ruta de origen: introduce o selecciona el URI de tu conjunto de datos de evaluación.
    • Formato de salida: introduce el formato de la salida de la evaluación. Actualmente, solo se admite jsonl.
    • Ruta de Cloud Storage: introduce o selecciona el URI para almacenar los resultados de la evaluación.
    • Nombres de clase: (solo clasificación) introduce la lista de nombres de clase posibles.
    • Número de nodos de computación: introduce el número de nodos de computación para ejecutar la tarea de evaluación.
    • Tipo de máquina: selecciona un tipo de máquina para ejecutar el trabajo de evaluación.
  4. Haz clic en Empezar evaluación.

Ver los resultados de la evaluación

Puedes encontrar los resultados de la evaluación en el directorio de salida de Cloud Storage que especificaste al crear la tarea de evaluación. El archivo se llama evaluation_metrics.json.

En el caso de los modelos optimizados, también puede ver los resultados de la evaluación en la Google Cloud consola:

  1. En la sección Vertex AI de la Google Cloud consola, ve a la página Registro de modelos de Vertex AI.

    Ir al registro de modelos de Vertex AI

  2. Haga clic en el nombre del modelo para ver sus métricas de evaluación.

  3. En la pestaña Evaluar, haga clic en el nombre de la ejecución de la evaluación que quiera ver.

Siguientes pasos