執行運算式評估管道

您可以在 Vertex AI 上評估基礎模型和經過調整的生成式 AI 模型效能。系統會根據您提供的評估資料集,使用一組指標評估模型。本頁面說明如何透過評估管道服務進行以運算為基礎的模型評估,如何建立及設定評估資料集,以及如何使用 Google Cloud 控制台、Vertex AI API 或 Vertex AI SDK for Python 執行評估。

運算式模型評估的運作方式

如要評估模型效能,請先建立評估資料集,其中包含提示和真值組合。每個組合中的提示都是您要評估的輸入內容,而真值則是該提示的理想回覆。在評估期間,評估資料集中每個組合的提示都會傳遞至模型,以產生輸出內容。模型產生的輸出內容,以及評估資料集的真值,會用於計算評估指標。

用於評估的指標類型取決於您要評估的任務。下表列出支援的作業,以及用於評估每項作業的指標:

工作 指標
分類 Micro-F1、Macro-F1、Per class F1
摘要 ROUGE-L
問題回答 完全符合
文字生成 BLEU、ROUGE-L

支援的模型

系統支援下列模型的模型評估功能:

  • text-bison:基礎和調校版本。

  • Gemini:所有任務 (分類任務除外)。

準備評估用資料集

用於模型評估的評估資料集,包含與您要評估的任務相符的提示和真值組合。資料集必須包含至少 1 個提示和真值組合,且至少有 10 個組合才能產生有意義的指標。提供的例子越多,結果就越有意義。

資料集格式

評估資料集必須採用 JSON Lines (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:管道工作程式的顯示名稱。
  • 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:(選用) 用於執行評估工作的服務帳戶。如要瞭解如何建立自訂服務帳戶,請參閱「設定具備精細權限的服務帳戶」。如未指定,系統會使用 Vertex AI 自訂程式碼服務代理
  • NETWORK:(選用) 要與評估工作對等互連的 Compute Engine 網路完整名稱。網路名稱的格式為 projects/PROJECT_NUMBER/global/networks/NETWORK_NAME。如果您指定這個欄位,就必須建立 Vertex AI 的 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 適用的 Vertex AI SDK

如要瞭解如何安裝或更新 Python 適用的 Vertex AI SDK,請參閱「安裝 Python 適用的 Vertex AI SDK」。 詳情請參閱 Vertex AI SDK for Python 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

控制台

如要使用 Google Cloud 控制台建立模型評估工作,請執行下列步驟:

  1. 前往 Google Cloud 控制台的「Vertex AI Model Registry」頁面。

    前往 Vertex AI Model Registry

  2. 按一下要評估的模型名稱。
  3. 在「評估」分頁中,按一下「建立評估」,然後按照下列方式設定:
    • 目標:選取要評估的工作。
    • 目標資料欄或欄位:(僅限分類) 輸入預測的目標資料欄。範例:ground_truth
    • 來源路徑:輸入或選取評估資料集的 URI。
    • 輸出格式:輸入評估輸出的格式。 目前僅支援 jsonl
    • Cloud Storage 路徑:輸入或選取 URI,以便儲存評估輸出內容。
    • 類別名稱:(僅限分類) 輸入可能的類別名稱清單。
    • 運算節點數量:輸入執行評估工作的運算節點數量。
    • Machine type (機器類型):選取用於執行評估作業的機器類型。
  4. 按一下「Start evaluation」(開始評估)

查看評估結果

您可以在建立評估工作時指定的 Cloud Storage 輸出目錄中找到評估結果。檔案名稱為 evaluation_metrics.json

對於已調整的模型,您也可以在 Google Cloud 控制台中查看評估結果:

  1. 在 Google Cloud 控制台的 Vertex AI 專區中,前往「Vertex AI Model Registry」頁面。

    前往 Vertex AI Model Registry

  2. 按一下模型名稱,查看評估指標。

  3. 在「評估」分頁中,按一下要查看的評估執行作業名稱。

後續步驟