Realiza una evaluación basada en métricas

Puedes evaluar el rendimiento de los modelos de base y los modelos de IA generativa ajustados en Vertex AI. Los modelos se evalúan mediante un conjunto de métricas en función de un conjunto de datos de evaluación que proporcionas. En esta página, se explica cómo funciona la evaluación de modelos, cómo crear y formatear el conjunto de datos de evaluación y cómo realizar la evaluación mediante la consola de Google Cloud, la API de Vertex AI o el SDK de Vertex AI para Python.

Cómo funciona la evaluación del modelo

Para evaluar el rendimiento de un modelo, primero debes crear un conjunto de datos de evaluación que contenga mensajes y pares de verdad fundamental. Para cada par, la instrucción es la entrada que deseas evaluar y la verdad fundamental es la respuesta ideal para esa instrucción. Durante la evaluación, la instrucción de cada par del conjunto de datos de evaluación se pasa al modelo para producir un resultado. El resultado que generó 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 usa para la evaluación depende de la tarea que evalúes. En la siguiente tabla, se muestran las tareas admitidas y las métricas usadas para evaluar cada tarea:

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

Modelos compatibles

La evaluación de modelos es compatible con las versiones base y ajustadas de text-bison.

Prepara el conjunto de datos de evaluación

El conjunto de datos de evaluación que se usa para la evaluación del modelo incluye pares de instrucción y verdad fundamental que se alinean con la tarea que deseas evaluar. Tu conjunto de datos debe incluir un mínimo de un par de instrucción y verdad fundamental y al menos 10 pares para las métricas 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 Líneas JSON (JSONL) donde que cada línea contiene un solo mensaje y un par de verdad fundamental especificados en elinput_text youtput_text respectivamente. El campo input_text contiene la instrucción que deseas evaluar y el campo output_text contiene la respuesta ideal para la instrucción.

La longitud máxima del token para input_text es 8,192 y la longitud máxima del token para output_text es 1,024.

Ejemplos de conjuntos de datos de evaluación

Clasificación

{"input_text": "Multi-choice problem: What is the topic of this text? OPTIONS: -
nature - news - politics - sports - health - startups TEXT: #DYK In 2015, the
world produced 322M tonnes of plastic. That equals 900 Empire State Buildings!
Act:\u2026 https://t.co/qGrpumIN20", "output_text": "nature"}
{"input_text": "Multi-choice problem: What is the topic of this text? OPTIONS: -
nature - news - politics - sports - health - startups TEXT: Do you agree with
Chris Pratt? https://t.co/1q43CvIWAY https://t.co/zcKnTa9hKS", "output_text":
"news"}
{"input_text": "Multi-choice problem: What is the topic of this text? OPTIONS: -
nature - news - politics - sports - health - startups TEXT: Cahill and Diego
Costa aren't far away from getting their head on Hazard's corner. Meanwhile,
Ibe has replaced Pugh for Bournemouth. #BOUCHE", "output_text": "sports"}
{"input_text": "Multi-choice problem: What is the topic of this text? OPTIONS: -
nature - news - politics - sports - health - startups TEXT: Protecting our
oceans is integral to protecting the global environment #EarthDay
https://t.co/CN5NHKFbsB", "output_text": "nature"}
{"input_text": "Multi-choice problem: What is the topic of this text? OPTIONS: -
nature - news - politics - sports - health - startups TEXT: Scientists have
found that water is gushing across Antarctica \u2014 more than they ever
realized:\u2026 https://t.co/ttBGA15w5G", "output_text": "news"}

Búsqueda de respuestas

{"input_text": "What is the capital of Australia?", "output_text": "Canberra"}
{"input_text": "Who is the author of The Great Gatsby?", "output_text": "F. Scott
Fitzgerald"}
{"input_text": "What is the highest mountain in the world?", "output_text":
"Mount Everest"}
{"input_text": "What is the largest country in South America?", "output_text":
"Brazil"}
{"input_text": "Who directed The Godfather?", "output_text": "Francis Ford
Coppola"}

Generación de texto general

{"input_text":"Basketball teams in the Midwest.", "output_text":"There are
several basketball teams located in the Midwest region of the United States.
Here are some of them:"}
{"input_text":"How to bake gluten-free bread?", "output_text":"Baking gluten-free
bread can be a bit challenging because gluten is the protein that gives bread
its structure and elasticity."}
{"input_text":"Want to buy a new phone.", "output_text":"Great! There are many
factors to consider when buying a new phone, including your budget, preferred
operating system, desired features, and more. Here are some general steps to
follow to help you make an informed decision:"}
{"input_text":"I told them \"see you tomorrow\"", "output_text":"If you told
someone \"see you tomorrow,\" you most likely meant that you will see them the
following day. This is a common phrase used when saying goodbye to someone
with the intention of seeing them again soon. If you are unable to meet with
them as planned, it is always polite to let them know as soon as possible so
that they are not left waiting or wondering."}
{"input_text":"Apples are red\nOranges are orange", "output_text":"Yes, apples
are often red, although there are other varieties of apples that can be green,
yellow, or a combination of these colors. Oranges are typically orange, but
they can also be green or even slightly red depending on their variety and
ripeness. Colors are an important characteristic of fruits, as they can be an
indication of ripeness and nutritional value."}

Creación de resúmenes

{"input_text": "Summarize this: The coronavirus pandemic has resulted in a global
health crisis, with millions of people infected and hundreds of thousands of
deaths. Governments and healthcare organizations around the world are working
to contain the spread of the virus and develop effective treatments and
vaccines. In addition to the health impacts, the pandemic has also had major
economic and social consequences, with many businesses forced to shut down and
people facing unemployment and financial hardship.", "output_text": "The
coronavirus pandemic has caused a global health crisis, with governments and
healthcare organizations working to contain the virus and develop treatments
and vaccines. The pandemic has also had major economic and social
consequences, with businesses shutting down and people facing financial
hardship."}

{"input_text": "Summarize this: The United States has a long and complicated history of race relations, with racism and discrimination affecting many aspects of society. In recent years, there have been numerous protests and movements calling for racial justice and equality. These efforts have brought renewed attention to issues such as police brutality, mass incarceration, and systemic inequality.", "output_text": "The United States has a history of racism and discrimination, with recent protests calling for racial justice and equality. Issues such as police brutality, mass incarceration, and systemic inequality have been brought to the forefront."}
{"input_text": "Summarize this: Climate change is a pressing global issue, with rising temperatures and sea levels posing significant threats to ecosystems and human societies. Many governments and organizations are taking steps to reduce greenhouse gas emissions and transition to cleaner sources of energy. However, there is still much work to be done to address the root causes of climate change and mitigate its impacts.", "output_text": "Climate change is a global issue, with rising temperatures and sea levels posing significant threats. Many governments and organizations are taking steps to reduce greenhouse gas emissions, but more work needs to be done to address the root causes and mitigate the impacts."}
{"input_text": "Summarize this: Artificial intelligence and machine learning are rapidly advancing fields with many potential applications in industry, healthcare, and other sectors. However, there are also concerns about the ethical implications of AI and the potential for these technologies to exacerbate existing inequalities. As AI continues to evolve, it will be important to ensure that its development and use are guided by principles of fairness and accountability.", "output_text": "Artificial intelligence and machine learning have many potential applications, but there are also concerns about the ethical implications and potential for exacerbating existing inequalities. It will be important to ensure that AI development and use are guided by principles of fairness and accountability."}

Sube un conjunto de datos de evaluación a Cloud Storage

Puedes crear un bucket de Cloud Storage nuevo o usar uno existente para almacenar tu archivo de conjunto de datos. El bucket debe estar en la misma región que el modelo.

Una vez que tu bucket esté listo, sube tu archivo de conjunto de datos al bucket.

Realiza la evaluación del modelo

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

REST

Para crear un trabajo de evaluaci´n de modelo, envía una solicitud POST a través del método pipelineJobs.

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID: El proyecto de Google Cloud que ejecuta los componentes de canalización.
  • PIPELINEJOB_DISPLAYNAME: Un nombre visible para el pipelineJob.
  • LOCATION: Es la región en la que se ejecutarán los componentes de canalización. Por el momento, solo se admite us-central1.
  • DATASET_URI: Es el URI de Cloud Storage de tu conjunto de datos de referencia. Puedes especificar uno o varios URI. Este parámetro admite comodines. Para obtener más información sobre este parámetro, consulta InputConfig.
  • OUTPUT_DIR: Es el URI de Cloud Storage para almacenar el resultado de la evaluación.
  • MODEL_NAME: Especifica un modelo de publicador o un recurso de modelo ajustado de la siguiente manera:
    • Modelo de publicador: publishers/google/models/MODEL@MODEL_VERSION

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

    • 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 ninguna implementación existente del modelo o sus recursos.

  • EVALUATION_TASK: La tarea en la que deseas evaluar el modelo. El trabajo de evaluación calcula un conjunto de métricas relevantes para esa tarea específica. Los valores aceptables son los siguientes:
    • summarization
    • question-answering
    • text-generation
    • classification
  • INSTANCES_FORMAT: el formato de tu conjunto de datos. Por el momento, solo se admite jsonl. Para obtener más información sobre este parámetro, consulta InputConfig.
  • PREDICTIONS_FORMAT: El formato del resultado de la evaluación. Por el momento, solo se admite jsonl. Para obtener más información sobre este parámetro, consulta InputConfig.
  • MACHINE_TYPE: El tipo de máquina para ejecutar el trabajo de evaluación (opcional). El valor predeterminado es e2-highmem-16. Para obtener una lista de los tipos de máquinas compatibles, consulta Tipos de máquinas.
  • SERVICE_ACCOUNT: (Opcional) La cuenta de servicio que se usará para ejecutar el trabajo de evaluación. Para obtener información sobre cómo crear una cuenta de servicio personalizada, consulta Configura 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: El nombre completamente calificado de la red de Compute Engine para intercambiar tráfico con el trabajo de evaluación (opcional). El formato del nombre de la red es projects/PROJECT_NUMBER/global/networks/NETWORK_NAME. Si especificas este campo, debes tener un intercambio de tráfico entre redes de VPC para Vertex AI. Si no se especifica, el trabajo de evaluación no intercambia tráfico con ninguna red.
  • KEY_NAME: El nombre de la clave de encriptación administrada por el cliente (CMEK) (opcional). Si se configura, los recursos que creó el trabajo de evaluación se encriptan con la clave de encriptación 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 que se muestra a continuación: Ten en cuenta que pipelineSpec se truncó para ahorrar espacio.

Ejemplo del comando curl

PROJECT_ID=myproject
REGION=us-central1
MODEL_NAME=publishers/google/models/text-bison@001
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

Si deseas obtener información para instalar o actualizar el SDK de Python, consulta Instala el SDK de Vertex AI para Python. Si deseas obtener más información, consulta la documentación de referencia de la API de Python.


from google.auth import default
import vertexai
from vertexai.preview.language_models import (
    EvaluationTextClassificationSpec,
    TextGenerationModel,
)

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

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

    vertexai.init(project=project_id, location=location, 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)

    return eval_metrics

Console

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

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

    Ir a Vertex AI Model Registry

  2. Haz clic en el nombre del modelo que deseas evaluar.
  3. En la pestaña Evaluar, haz clic en Crear evaluación y configúrala de la siguiente manera:
    • Objetivo: Elige la tarea que deseas evaluar.
    • Columna o campo de destino: (Solo clasificación) escribe la columna de destino para la predicción. Ejemplo: ground_truth.
    • Ruta de acceso de origen: Escribe o elige el URI del conjunto de datos de evaluación.
    • Formato de salida: Escribe el formato del resultado de la evaluación. Por el momento, solo se admite jsonl.
    • Ruta de acceso de Cloud Storage: Escribe o elige el URI para almacenar el resultado de la evaluación.
    • Nombres de clase: (Solo clasificación) escribe la lista de nombres de clase posibles.
    • Cantidad de nodos de procesamiento: Escribe la cantidad de nodos de procesamiento para ejecutar el trabajo de evaluación.
    • Tipo de máquina: Elige un tipo de máquina que se usará para ejecutar el trabajo de evaluación.
  4. Haz clic en Iniciar evaluación

Visualiza los resultados de la evaluación

Puedes encontrar los resultados de la evaluación en el directorio de salida de Cloud Storage que especificaste cuando creaste el trabajo de evaluación. El nombre del archivo es evaluation_metrics.json.

Para los modelos ajustados, también puedes ver los resultados de la evaluación en la consola de Google Cloud:

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

    Ir a Vertex AI Model Registry

  2. Haz clic en el nombre del modelo del que deseas ver las métricas de evaluación.

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

¿Qué sigue?