运行基于计算的评估流水线

您可以在 Gemini Enterprise Agent Platform 中评估基础模型和经过调优的生成式 AI 模型的性能。系统会针对您提供的评估数据集,使用一组指标来评估模型。本页面介绍了通过 评估流水线服务进行基于计算的模型评估 的工作原理、如何创建评估数据集并设置其格式,以及如何使用 Google Cloud 控制台、Agent Platform API 或 Agent Platform SDK for Python 执行评估。

基于计算的模型评估的工作原理

如需评估模型的性能,请先创建包含提示和标准答案对的评估数据集。对于每个对,提示是要评估的输入,标准答案是该提示的理想回答。在评估过程中,评估数据集的每个对中的提示会传递给模型以生成输出。模型生成的输出和来自评估数据集的标准答案用于计算评估指标。

用于评估的指标类型取决于您所评估的任务。下表显示了支持的任务以及用于评估每种任务的指标:

任务 指标
分类 Micro-F1、Macro-F1、Per class F1
摘要 ROUGE-L
问答 完全匹配
文本生成 BLEU、ROUGE-L

支持的模型

以下模型支持模型评估:

  • text-bison:基础版本和经过调优的版本。

  • Gemini:除分类之外的所有任务。

准备评估数据集

用于模型评估的评估数据集包含与您要评估的任务相配的提示和标准答案对。数据集必须至少包含一个提示和标准答案对;为获得有意义的指标,至少包含 10 个对。您提供的样本越多,结果就越有意义。

数据集格式

您的评估数据集必须采用 JSON 行 (JSONL) 格式,其中每行包含分别在 input_textoutput_text 字段中指定的单个提示和标准答案对。input_text 字段包含您要评估的提示,output_text 字段包含该提示的理想回答。

input_text 的词元长度上限为 8,192,output_text 的词元长度上限为 1,024。

将评估数据集上传到 Cloud Storage

您可以创建新的 Cloud Storage 存储桶,也可以使用现有存储桶来存储数据集文件。存储桶必须与模型位于同一区域。

存储桶准备就绪后,将数据集文件上传到存储桶。

执行模型评估

您可以使用 REST API 或 Google Cloud 控制台评估模型。

REST

如需创建模型评估作业,请使用 pipelineJobs 方法发送 POST 请求。

在使用任何请求数据之前, 请进行以下替换:

  • PROJECT_ID:运行流水线组件的 Google Cloud 项目。
  • PIPELINEJOB_DISPLAYNAME:pipelineJob 的显示名称。
  • LOCATION:需要在其中运行流水线组件的区域。目前只支持 us-central1
  • DATASET_URI:参考数据集的 Cloud Storage URI。您可以指定一个或多个 URI。此参数支持通配符。如需详细了解此参数,请参阅 InputConfig
  • OUTPUT_DIR:用于存储评估输出的 Cloud Storage URI。
  • MODEL_NAME:指定发布方模型或经过调整的模型资源,如下所示:
    • 发布方模型publishers/google/models/MODEL@MODEL_VERSION

      示例:publishers/google/models/text-bison@002

    • 经调整的模型projects/PROJECT_NUMBER/locations/LOCATION/models/ENDPOINT_ID

      示例:projects/123456789012/locations/us-central1/models/1234567890123456789

    评估作业不会影响模型或其资源的任何现有部署。

  • EVALUATION_TASK:要评估模型的任务。评估作业会计算一组与该特定任务相关的指标。可接受的值包括:
    • summarization
    • question-answering
    • text-generation
    • classification
  • INSTANCES_FORMAT:数据集的格式。目前只支持 jsonl。如需详细了解此参数,请参阅 InputConfig
  • PREDICTIONS_FORMAT:评估输出的格式。目前只支持 jsonl。如需详细了解此参数,请参阅 InputConfig
  • MACHINE_TYPE:(可选)用于运行评估作业的机器类型。默认值为 e2-highmem-16。如需查看 支持的机器类型的列表,请参阅 机器类型
  • SERVICE_ACCOUNT: (可选) 用于运行评估作业的服务帐号。如需了解如何创建自定义服务帐号,请参阅 配置具有精细权限的服务帐号。如果未指定,系统会使用 Gemini Enterprise Agent Platform Custom Code Service Agent
  • NETWORK:(可选) 要与评估作业对等互连的 Compute Engine 网络的完全限定名称。网络名称的格式为 projects/PROJECT_NUMBER/global/networks/NETWORK_NAME. 如果指定此字段,则需要拥有适用于 Gemini Enterprise Agent Platform 的 VPC 网络对等互连。如果未指定,则 评估作业不与任何网络对等互连。
  • KEY_NAME:(可选) 客户管理的加密密钥 (CMEK) 的名称。如果已配置,评估作业创建的资源 将使用提供的加密密钥进行加密。密钥名称的格式为 projects/PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY。 密钥需要与评估作业处于同一区域。

HTTP 方法和网址:

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

请求 JSON 正文:

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

如需发送请求,请选择以下方式之一:

curl

将请求正文保存在名为 request.json 的文件中,然后执行以下命令:

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

将请求正文保存在名为 request.json 的文件中,然后执行以下命令:

$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

您应该收到类似以下内容的 JSON 响应。请注意,为节省空间,系统截断了 pipelineSpec

示例 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

试用此示例之前,请按照 Python 设置说明进行操作,请参阅 Agent Platform 快速入门:使用 客户端库

如需向 Agent Platform 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅 为本地开发环境设置身份验证

import os

import vertexai
from vertexai.evaluation import EvalResult, EvalTask

# TODO (Developer) Set environment variables
PROJECT_ID = os.getenv("GOOGLE_CLOUD_PROJECT")
LOCATION_ID = os.getenv("LOCATION_ID", "us-central1")
MODEL_NAME = os.getenv("MODEL_NAME", "gemini-2.5-flash")


def evaluate_model() -> EvalResult:
    """Evaluate the performance of a generative AI model."""

    vertexai.init(project=PROJECT_ID, location=LOCATION_ID)

    # Dataset URI containing input prompts and ground truth labels
    dataset_uri = "gs://cloud-samples-data/ai-platform/generative_ai/llm_classification_bp_input_prompts_with_ground_truth.jsonl"

    metric_column_mapping = {"reference": "ground_truth"}

    # Define evaluation task
    eval_task = EvalTask(
        dataset=dataset_uri,
        metrics=["exact_match"],
        experiment="gemini-classification-eval",
        metric_column_mapping=metric_column_mapping,
    )

    # Define a prompt template so the generative Gemini model produces formatted labels
    prompt_template = (
        "Classify the following text into exactly one category from "
        "[nature, news, sports, health, startups]. Return only the category name:\n\n{prompt}"
    )

    # Evaluate using a modern Gemini model
    eval_result = eval_task.evaluate(
        model=MODEL_NAME,
        prompt_template=prompt_template,
    )

    print("=== SUMMARY METRICS ===")
    print(eval_result.summary_metrics)

    print("\n=== METRICS TABLE SAMPLE ===")
    print(eval_result.metrics_table.head())

    return eval_result

控制台

如需使用 Google Cloud 控制台创建模型评估作业,请执行 以下步骤:

  1. 在 Google Cloud 控制台中,前往 Gemini Enterprise Agent Platform Model Registry 页面。

    前往 Gemini Enterprise Agent Platform Model Registry

  2. 点击要评估的模型的名称。
  3. 评估标签页中,点击创建评估,然后按如下方式进行配置:
    • 目标:选择要评估的任务。
    • 目标列或字段:(仅限分类)输入进行预测的目标列。示例:ground_truth
    • 来源路径:输入或选择评估数据集的 URI。
    • 输出格式:输入评估输出的格式。目前只支持 jsonl
    • Cloud Storage 路径:输入或选择用于存储评估输出的 URI。
    • 类别名称:(仅限分类)输入可能的类别名称的列表。
    • 计算节点数:输入要用于运行评估作业的计算节点数。
    • 机器类型:选择要用于运行评估作业的机器类型。
  4. 点击开始评估

查看评估结果

您可以在创建评估作业时指定的 Cloud Storage 输出目录中找到评估结果。该文件的名称为 evaluation_metrics.json

对于经过调优的模型,您还可以在 Google Cloud 控制台中查看评估结果:

  1. 在 Google Cloud 控制台的 Agent Platform 部分中,前往 Gemini Enterprise Agent Platform Model Registry 页面。

    前往 Gemini Enterprise Agent Platform Model Registry

  2. 点击模型的名称以查看其评估指标。

  3. 评估标签页中,点击要查看的评估运行的名称。

后续步骤