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

Este guia mostra como executar um pipeline de avaliação baseado em computação para avaliar a performance dos modelos de base e dos modelos de IA generativa ajustados na Vertex AI. O pipeline avalia seu modelo usando um conjunto de métricas em relação a um conjunto de dados de avaliação fornecido por você.

Nesta página, abordamos os seguintes tópicos:

O diagrama a seguir resume o fluxo de trabalho geral para executar uma avaliação baseada em computação:

Para conferir os recursos de avaliação mais recentes com base em computação, consulte Definir suas métricas.

Como funciona a avaliação de modelo baseado em computação

Para avaliar o desempenho de um modelo, você fornece um conjunto de dados de avaliação que contém pares de comandos e informações empíricas. Para cada par, a entrada é o que você quer avaliar, e a informação empírica é a resposta ideal para ela.

Durante a avaliação, o processo transmite o comando de cada par ao modelo para gerar uma saída. Em seguida, o processo usa a saída gerada do modelo e as informações empíricas correspondentes para calcular as métricas de avaliação.

O tipo de métrica usada para avaliação depende da tarefa que você está avaliando. A tabela a seguir mostra as tarefas compatíveis e as métricas usadas para avaliar cada uma delas:

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 compatíveis

É possível avaliar os seguintes modelos:

  • text-bison: versões de base e ajustadas.
  • Gemini: todas as tarefas, exceto classificação.

Preparar e fazer upload do conjunto de dados de avaliação

O conjunto de dados de avaliação inclui pares de comandos e informações empíricas que se alinham à tarefa que você quer avaliar. Seu conjunto de dados precisa incluir no mínimo um par de comandos e informações empíricas e pelo menos 10 pares para métricas significativas. Quanto mais exemplos você fornecer, mais significativos serão os resultados.

Formato do conjunto de dados

O conjunto de dados de avaliação precisa estar no formato linhas JSON (JSONL), em que cada linha é um objeto JSON. Cada objeto precisa conter um campo input_text com o comando que você quer avaliar e um campo output_text com a resposta ideal para esse comando.

O tamanho máximo do token para input_text é 8.192, e o comprimento máximo do token para output_text é 1.024.

Fazer o upload do conjunto de dados para o Cloud Storage

É possível criar um novo bucket do Cloud Storage ou usar um atual para armazenar o arquivo do conjunto de dados. O bucket precisa estar na mesma região que o modelo.

Quando o bucket estiver pronto, faça o upload do arquivo do conjunto de dados para o bucket.

Escolher um método de avaliação

É possível executar um job de avaliação baseado em computação usando o console Google Cloud , a API REST ou o SDK da Vertex AI para Python. A tabela a seguir pode ajudar você a escolher a melhor opção para seu caso de uso.

Método Descrição Caso de uso
Google Cloud console Uma interface gráfica do usuário (GUI) que oferece um fluxo de trabalho guiado e detalhado para criar e monitorar jobs de avaliação.
  • Novos usuários que estão aprendendo o fluxo de trabalho de avaliação.
  • Avaliações rápidas e únicas.
  • Visualizar a configuração e os resultados sem escrever código.
API REST Uma interface programática para criar jobs de avaliação enviando solicitações JSON a um endpoint.
  • Integrar a avaliação de modelos a aplicativos ou fluxos de trabalho multilíngues.
  • Criar ferramentas ou automações personalizadas que não sejam baseadas em Python.
SDK do Vertex AI para Python Uma biblioteca Python de alto nível que simplifica as interações com a API Vertex AI.
  • Cientistas de dados e engenheiros de ML que trabalham principalmente em ambientes Python (por exemplo, em notebooks do Jupyter).
  • Automatizar pipelines de MLOps e fluxos de trabalho de avaliação complexos.

Fazer avaliação de modelo.

Use um dos métodos a seguir para executar um job de avaliação de modelo.

REST

Para criar um job de avaliação de modelo, envie uma solicitação POST usando o método pipelineJobs.

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • PROJECT_ID: o projeto Google Cloud que executa os componentes do pipeline.
  • PIPELINEJOB_DISPLAYNAME: um nome de exibição do pipelineJob.
  • LOCATION: a região para executar os componentes do pipeline. Atualmente, somente us-central1 é aceito.
  • DATASET_URI: o URI do Cloud Storage do conjunto de dados de referência. É possível especificar um ou vários URIs. Esse parâmetro é compatível com caracteres curinga. Para saber mais sobre esse parâmetro, consulte InputConfig.
  • OUTPUT_DIR: o URI do Cloud Storage para armazenar a saída da avaliação.
  • MODEL_NAME: especifique um modelo de editor ou um recurso de modelo ajustado da seguinte maneira:
    • Modelo do editor: publishers/google/models/MODEL@MODEL_VERSION

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

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

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

    O job de avaliação não afeta as implantações atuais do modelo ou os recursos dele.

  • EVALUATION_TASK: a tarefa em que você quer avaliar o modelo. O job de avaliação calcula um conjunto de métricas relevantes para essa tarefa específica. Os valores aceitáveis são os seguintes:
    • summarization
    • question-answering
    • text-generation
    • classification
  • INSTANCES_FORMAT: o formato do conjunto de dados. Atualmente, somente jsonl é aceito. Para saber mais sobre esse parâmetro, consulte InputConfig.
  • PREDICTIONS_FORMAT: o formato da saída da avaliação. Atualmente, somente jsonl é aceito. Para saber mais sobre esse parâmetro, consulte InputConfig.
  • MACHINE_TYPE: (opcional) o tipo de máquina para executar o job de avaliação. O valor padrão é e2-highmem-16. Para uma lista de tipos de máquina compatíveis, consulte Tipos de máquina.
  • SERVICE_ACCOUNT: (opcional) a conta de serviço a ser usada para executar o job de avaliação. Para saber como criar uma conta de serviço personalizada, consulte Configurar uma conta de serviço com permissões granulares. Se não for especificado, será usado o agente de serviço de código personalizado da Vertex AI.
  • NETWORK: (opcional) o nome totalmente qualificado da rede do Compute Engine para fazer o peering do job de avaliação. O formato do nome da rede é projects/PROJECT_NUMBER/global/networks/NETWORK_NAME. Se você especificar esse campo, será necessário ter um peering de rede VPC para a Vertex AI. Se não for especificado, o job de avaliação não fará peering com nenhuma rede.
  • KEY_NAME: (opcional) o nome da chave de criptografia gerenciada pelo cliente (CMEK, na sigla em inglês). Se configurados, os recursos criados pelo job de avaliação são criptografados usando a chave de criptografia fornecida. O formato do nome da chave é projects/PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY. A chave precisa estar na mesma região que o job de avaliação.

Método HTTP e URL:

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

Corpo JSON da solicitação:

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

curl

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

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

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

$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

Você receberá uma resposta JSON semelhante a seguinte. Observe que pipelineSpec foi truncado para economizar espaço.

Exemplo de comando curl

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 o SDK da Vertex AI para Python, consulte Instalar o SDK da Vertex AI para Python. Para mais informações, consulte a documentação de referência da 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

Para criar um job de avaliação de modelo usando o console Google Cloud , siga estas etapas:

  1. No console do Google Cloud , acesse a página Vertex AI Model Registry.

    Acessar o Vertex AI Model Registry

  2. Clique no nome do modelo que você quer avaliar.
  3. Na guia Avaliar, clique em Criar avaliação e configure as seguintes opções:
    • Objetivo: selecione a tarefa que você quer avaliar.
    • Coluna ou campo de destino: (apenas classificação) insira a coluna de destino para previsão. Exemplo: ground_truth.
    • Caminho de origem: insira ou selecione o URI do conjunto de dados de avaliação.
    • Formato de saída: insira o formato da saída da avaliação. Atualmente, somente jsonl é aceito.
    • Caminho do Cloud Storage: insira ou selecione o URI para armazenar a saída da avaliação.
    • Nomes de classes: (apenas classificação) digite a lista de possíveis nomes de classes.
    • Número de nós de computação: digite o número de nós de computação para executar o job de avaliação.
    • Tipo de máquina: selecione um tipo de máquina a ser usado para executar o job de avaliação.
  4. Clique em Iniciar avaliação.

Visualizar os resultados da avaliação

Encontre os resultados da avaliação no diretório de saída do Cloud Storage especificado ao criar o job de avaliação. O nome do arquivo é evaluation_metrics.json.

Para modelos ajustados, também é possível conferir os resultados da avaliação no console Google Cloud :

  1. Na seção "Vertex AI" do console Google Cloud , acesse a página Vertex AI Model Registry.

    Acessar o Vertex AI Model Registry

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

  3. Na guia Avaliar, clique no nome da execução da avaliação que você quer conferir.

A seguir