É possível avaliar o desempenho dos modelos de base e dos modelos de IA generativa ajustados na Vertex AI. Os modelos são avaliados usando um conjunto de métricas em relação a um conjunto de dados de avaliação fornecido por você. Nesta página, explicamos como funciona a avaliação de modelos baseada em computação por meio do serviço de pipeline de avaliação, como criar e formatar o conjunto de dados de avaliação e como executar a avaliação usando o console do Google Cloud, a API Vertex AI ou o SDK da Vertex AI para Python.
Como funciona a avaliação de modelo baseado em computação
Para avaliar o desempenho de um modelo, primeiro você cria um conjunto de dados de avaliação que contém prompts e pares de informações empíricas. Para cada par, a entrada é a que você quer avaliar, e a informação empírica é a resposta ideal para ela. Durante a avaliação, o comando em cada par do conjunto de dados de avaliação é transmitido ao modelo para produzir uma saída. A saída gerada pelo modelo e as informações empíricas do conjunto de dados de avaliação são usadas 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 tarefa:
Tarefa | Métrica |
---|---|
Classificação | Micro-F1, Macro-F1, por classe F1 |
Resumo | ROUGE-L |
Respostas a perguntas | Correspondência exata |
Geração de texto | BLEU, ROUGE-L |
Modelos compatíveis
A avaliação de modelos é compatível com os seguintes modelos:
text-bison
: versões de base e ajustadas.Gemini: todas as tarefas, exceto classificação.
Preparar conjunto de dados de avaliação
O conjunto de dados usado para avaliar o modelo 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, mais significativos serão os resultados.
Formato do conjunto de dados
O conjunto de dados de avaliação precisa estar emLinhas JSON
(JSONL), em que cada linha contém um único par de prompt e de informações empíricas
especificado no input_text
e output_text
respectivamente. O campo
input_text
contém o comando que você quer avaliar, e o campo
output_text
contém 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 upload do conjunto de dados de avaliação 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 gatilho.
Quando o bucket estiver pronto, faça o upload do arquivo do conjunto de dados para o bucket.
Fazer avaliação de modelo.
É possível avaliar modelos usando a API REST ou o console do Google Cloud.
Permissões exigidas para a tarefa
Para executar essa tarefa, você precisa conceder papéis do Identity and Access Management (IAM) a cada uma das contas de serviço a seguir:
Conta de serviço | Principal padrão | Descrição | Papéis |
---|---|---|---|
Agente de serviço da Vertex AI | service-PROJECT_NUMBER@gcp-sa-aiplatform.iam.gserviceaccount.com |
O Agente de serviço da Vertex AI é provisionado automaticamente para seu projeto e recebe papel predefinido. No entanto, se uma política da organização modificar as permissões padrão do agente de serviço da Vertex AI, você precisará conceda manualmente o papel ao agente de serviço. | Agente de serviço da Vertex AI
(roles/aiplatform.serviceAgent ) |
Conta de serviço de pipelines da Vertex AI | PROJECT_NUMBER-compute@developer.gserviceaccount.com |
A conta de serviço que executa o pipeline. A conta padrão de serviço usada é a Conta de serviço padrão do Compute Engine: Opcionalmente, é possível usar uma conta de serviço personalizada em vez da conta de serviço padrão. |
Dependendo das fontes de dados de entrada e saída, também pode ser necessário conceder aos pipelines Papéis adicionais da conta de serviço:
Fonte de dados | Papel | Onde conceder o papel: |
---|---|---|
Tabela padrão do BigQuery | Editor de dados do BigQuery | Projeto que executa o pipeline |
Visualizador de dados do BigQuery | Projeto a que a tabela pertence | |
Visualização do BigQuery de uma tabela padrão do BigQuery | Editor de dados do BigQuery | Projeto que executa o pipeline |
Visualizador de dados do BigQuery | Projeto a que a visualização pertence | |
Visualizador de dados do BigQuery | Projeto a que a tabela pertence | |
Tabela externa do BigQuery que tem um arquivo de origem do Cloud Storage | Editor de dados do BigQuery | Projeto que executa o pipeline |
Visualizador de dados do BigQuery | Projeto ao qual a tabela externa pertence | |
Leitor de objetos do Storage | Projeto a que o arquivo de origem pertence | |
Visualização do BigQuery de uma tabela externa do BigQuery que tem um arquivo de origem do Cloud Storage | Editor de dados do BigQuery | Projeto que executa o pipeline |
Visualizador de dados do BigQuery | Projeto a que a visualização pertence | |
Visualizador de dados do BigQuery | Projeto ao qual a tabela externa pertence | |
Leitor de objetos do Storage | Projeto a que o arquivo de origem pertence | |
Arquivo do Cloud Storage | Visualizador de dados do BigQuery | Projeto que executa o pipeline |
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 do 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, somenteus-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.
- Modelo do editor:
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, somentejsonl
é aceito. Para saber mais sobre esse parâmetro, consulte InputConfig.PREDICTIONS_FORMAT : o formato da saída da avaliação. Atualmente, somentejsonl
é 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:
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"
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.
Resposta
...... ..... "state": "PIPELINE_STATE_PENDING", "labels": { "vertex-ai-pipelines-run-billing-id": "1234567890123456789" }, "runtimeConfig": { "gcsOutputDirectory": "gs://my-evaluation-bucket/output", "parameterValues": { "project": "my-project", "location": "us-central1", "batch_predict_gcs_source_uris": [ "gs://my-evaluation-bucket/reference-datasets/eval_data.jsonl" ], "batch_predict_gcs_destination_output_uri": "gs://my-evaluation-bucket/output", "model_name": "publishers/google/models/text-bison@002" } }, "serviceAccount": "123456789012-compute@developer.gserviceaccount.com", "templateUri": "https://us-kfp.pkg.dev/vertex-evaluation/pipeline-templates/evaluation-llm-text-generation-pipeline/1.0.1", "templateMetadata": { "version": "sha256:d4c0d665533f6b360eb474111aa5e00f000fb8eac298d367e831f3520b21cb1a" } }
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"
}'
Para saber como instalar o SDK da Vertex AI para Python, consulte Instalar o SDK da Vertex AI para Python. Saiba mais na documentação de referência da API SDK da Vertex AI para Python.
Para criar um job de avaliação de modelo usando o console do Google Cloud, execute as seguintes etapas:
- No console do Google Cloud, acesse a página do Vertex AI Model Registry.
- Clique no nome do modelo que você quer avaliar.
- Na guia Avaliar, clique em Criar avaliação e configure da seguinte maneira:
- 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.
- 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 do Google Cloud:
Na seção "Vertex AI" do console do Google Cloud, acesse a página Vertex AI Model Registry.
Clique no nome do modelo para visualizar as métricas de avaliação.
Na guia Avaliar, clique no nome da execução da avaliação que você quer visualizar.
A seguir
- Saiba mais sobre avaliação de IA generativa.
- Saiba mais sobre a avaliação on-line com o serviço de avaliação de IA generativa.
- Saiba como ajustar um modelo de fundação.