Execute um pipeline de avaliação baseado em computação

Pode avaliar o desempenho dos modelos base e dos seus modelos de IA generativa ajustados no Vertex AI. Os modelos são avaliados através de um conjunto de métricas com base num conjunto de dados de avaliação que fornece. Esta página explica como funciona a avaliação de modelos baseada em cálculos através do serviço de pipeline de avaliação, como criar e formatar o conjunto de dados de avaliação e como realizar a avaliação através da Google Cloud consola, da API Vertex AI ou do SDK Vertex AI para Python.

Como funciona a avaliação de modelos baseada em cálculos

Para avaliar o desempenho de um modelo, primeiro, cria um conjunto de dados de avaliação que contém pares de comandos e dados reais. Para cada par, o comando é a entrada que quer avaliar e a verdade fundamental é a resposta ideal para esse comando. Durante a avaliação, o comando em cada par do conjunto de dados de avaliação é transmitido ao modelo para produzir um resultado. O resultado gerado pelo modelo e a verdade fundamental do conjunto de dados de avaliação são usados para calcular as métricas de avaliação.

O tipo de métricas usado para a avaliação depende da tarefa que está a avaliar. A tabela seguinte mostra as tarefas suportadas e as métricas usadas para avaliar cada tarefa:

Tarefa Métrica
Classificação Micro-F1, Macro-F1, F1 por classe
Resumo ROUGE-L
Respostas a perguntas Correspondência Exata
Geração de texto BLEU, ROUGE-L

Modelos suportados

A avaliação de modelos é suportada para os seguintes modelos:

  • text-bison: versões base e otimizadas.

  • Gemini: todas as tarefas, exceto a classificação.

Prepare o conjunto de dados de avaliação

O conjunto de dados de avaliação usado para a avaliação do modelo inclui pares de comandos e verdade fundamental que se alinham com a tarefa que quer avaliar. O conjunto de dados tem de incluir, no mínimo, 1 par de comandos e dados reais, e, pelo menos, 10 pares para métricas significativas. Quanto mais exemplos der, mais significativos são os resultados.

Formato do conjunto de dados

O conjunto de dados de avaliação tem de estar no formato JSON Lines (JSONL), em que cada linha contém um único par de comandos e dados reais especificados, respetivamente, nos campos input_text e output_text. O campo input_text contém o comando que quer avaliar e o campo output_text contém a resposta ideal para o comando.

O comprimento máximo de tokens para input_text é de 8192 e o comprimento máximo de tokens para output_text é de 1024.

Carregue o conjunto de dados de avaliação para o Cloud Storage

Pode criar um novo contentor do Cloud Storage ou usar um existente para armazenar o ficheiro do conjunto de dados. O contentor tem de estar na mesma região que o modelo.

Quando o contentor estiver pronto, carregue o ficheiro do conjunto de dados para o contentor.

Realize a avaliação de modelos

Pode avaliar os modelos através da API REST ou da Google Cloud consola.

REST

Para criar uma tarefa de avaliação de modelos, envie um pedido POST através do método pipelineJobs.

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • PROJECT_ID: o Google Cloud projeto que executa os componentes do pipeline.
  • PIPELINEJOB_DISPLAYNAME: um nome a apresentar para o pipelineJob.
  • LOCATION: a região para executar os componentes do pipeline. Atualmente, apenas é suportado o idioma us-central1.
  • DATASET_URI: o URI do Cloud Storage do seu conjunto de dados de referência. Pode especificar um ou vários URIs. Este parâmetro suporta carateres universais. Para saber mais acerca deste parâmetro, consulte InputConfig.
  • OUTPUT_DIR: o URI do Cloud Storage para armazenar o resultado da avaliação.
  • MODEL_NAME: especifique um modelo de publicador ou um recurso de modelo otimizado da seguinte forma:
    • Modelo de publicador: publishers/google/models/MODEL@MODEL_VERSION

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

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

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

    A tarefa de avaliação não afeta implementações existentes do modelo nem os respetivos recursos.

  • EVALUATION_TASK: a tarefa na qual quer avaliar o modelo. A tarefa de avaliação calcula um conjunto de métricas relevantes para essa tarefa específica. Os valores aceitáveis incluem o seguinte:
    • summarization
    • question-answering
    • text-generation
    • classification
  • INSTANCES_FORMAT: o formato do conjunto de dados. Atualmente, apenas é suportado o idioma jsonl. Para saber mais acerca deste parâmetro, consulte o artigo InputConfig.
  • PREDICTIONS_FORMAT: o formato do resultado da avaliação. Atualmente, apenas é suportado o idioma jsonl. Para saber mais acerca deste parâmetro, consulte InputConfig.
  • MACHINE_TYPE: (opcional) O tipo de máquina para executar a tarefa de avaliação. O valor predefinido é e2-highmem-16. Para ver uma lista dos tipos de máquinas compatíveis, consulte Tipos de máquinas.
  • SERVICE_ACCOUNT: (opcional) A conta de serviço a usar para executar a tarefa de avaliação. Para saber como criar uma conta de serviço personalizada, consulte Configurar uma conta de serviço com autorizações detalhadas. Se não for especificado, é usado o agente do serviço de código personalizado do Vertex AI.
  • NETWORK: (Opcional) O nome totalmente qualificado da rede do Compute Engine para estabelecer peering com a tarefa de avaliação. O formato do nome da rede é projects/PROJECT_NUMBER/global/networks/NETWORK_NAME. Se especificar este campo, tem de ter um intercâmbio da rede da VPC para o Vertex AI. Se não for especificado, a tarefa de avaliação não é associada a nenhuma rede.
  • KEY_NAME: (Opcional) O nome da chave de encriptação gerida pelo cliente (CMEK). Se estiver configurado, os recursos criados pela tarefa de avaliação são encriptados através da chave de encriptação fornecida. O formato do nome da chave é projects/PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY. A chave tem de estar na mesma região que a tarefa de avaliação.

Método HTTP e URL:

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

Corpo JSON do pedido:

{
  "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 o seu pedido, escolha uma destas opções:

curl

Guarde o corpo do pedido num ficheiro com o nome request.json, e execute o seguinte 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

Guarde o corpo do pedido num ficheiro com o nome request.json, e execute o seguinte 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

Deve receber uma resposta JSON semelhante à seguinte. Tenha em atenção que pipelineSpec foi truncado para poupar espaço.

Comando curl de exemplo

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 como instalar ou atualizar o SDK Vertex AI para Python, consulte o artigo Instale o SDK Vertex AI para Python. Para mais informações, consulte a Python documentação de referência da API.

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 criar uma tarefa de avaliação de modelos através da Google Cloud consola, siga estes passos:

  1. Na Google Cloud consola, aceda à página Registo de modelos da Vertex AI.

    Aceda ao Registo de modelos Vertex AI

  2. Clique no nome do modelo que quer avaliar.
  3. No separador Avaliar, clique em Criar avaliação e configure da seguinte forma:
    • Objetivo: selecione a tarefa que quer avaliar.
    • Coluna ou campo de destino: (apenas classificação) introduza a coluna de destino para a previsão. Exemplo: ground_truth.
    • Caminho de origem: introduza ou selecione o URI do conjunto de dados de avaliação.
    • Formato de saída: introduza o formato da saída da avaliação. Atualmente, apenas é suportado o idioma jsonl.
    • Caminho do Cloud Storage: introduza ou selecione o URI para armazenar o resultado da avaliação.
    • Nomes das classes: (apenas classificação) introduza a lista de possíveis nomes das classes.
    • Número de nós de computação: introduza o número de nós de computação para executar a tarefa de avaliação.
    • Tipo de máquina: selecione um tipo de máquina a usar para executar a tarefa de avaliação.
  4. Clique em Iniciar avaliação

Veja os resultados da avaliação

Pode encontrar os resultados da avaliação no diretório de saída do Cloud Storage que especificou quando criou a tarefa de avaliação. O ficheiro tem o nome evaluation_metrics.json.

Para modelos otimizados, também pode ver os resultados da avaliação na Google Cloud consola:

  1. Na secção Vertex AI da Google Cloud consola, aceda à página Registo de modelos do Vertex AI.

    Aceda ao Registo de modelos Vertex AI

  2. Clique no nome do modelo para ver as respetivas métricas de avaliação.

  3. No separador Avaliar, clique no nome da execução de avaliação que quer ver.

O que se segue?