執行運算式評估管道

本指南說明如何執行以運算為基礎的評估管道,評估基礎模型和微調生成式 AI 模型在 Vertex AI 上的效能。這個管道會根據您提供的評估資料集,使用一組指標評估模型。

本頁面涵蓋下列主題:

下圖概略說明執行以運算為基礎的評估作業的整體工作流程:

如要瞭解最新的運算式評估功能,請參閱「定義指標」。

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

如要評估模型效能,請提供內含提示與真值組合的評估資料集。在每個組合中,提示是您要評估的輸入內容,基準真相則是該提示的理想回覆。

在評估期間,程序會將每對提示傳遞至模型,以生成輸出內容。接著,這項程序會使用模型生成的輸出內容和對應的基準真相,計算評估指標。

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

工作 指標
分類 Micro-F1Macro-F1、各類別的 F1
摘要 ROUGE-L
問題回答 完全比對
文字生成 BLEUROUGE-L

支援的模型

您可以評估下列模型:

  • text-bison:基礎和微調版本。
  • Gemini:分類以外的所有工作。

準備並上傳評估資料集

評估資料集包含提示和真值組合,這些與您要評估的任務一致。資料集至少須包含一組提示和真值,如要取得有意義的指標,則至少須包含 10 組。提供的範例越多,結果就越有意義。

資料集格式

評估資料集必須採用 JSON Lines (JSONL) 格式,其中每一行都是 JSON 物件。每個物件都必須包含「input_text」欄位 (內含要評估的提示) 和「output_text」欄位 (內含該提示的理想回應)。

input_text 的權杖長度上限為 8,192,output_text 的權杖長度上限則為 1,024。

將資料集上傳至 Cloud Storage

您可以建立新的 Cloud Storage 值區,或使用現有值區儲存資料集檔案。值區必須與模型位於相同區域。

值區準備就緒後,請上傳資料集檔案至值區。

選擇評估方法

您可以使用 Google Cloud 控制台、REST API 或 Python 適用的 Vertex AI SDK,執行以運算為基礎的評估工作。下表有助於您根據用途選擇最合適的選項。

方法 說明 用途
Google Cloud console 圖形使用者介面 (GUI),提供逐步操作的導覽工作流程,方便您建立及監控評估工作。
  • 正在學習評估工作流程的新手。
  • 快速的一次性評估。
  • 無須編寫程式碼,即可查看設定和結果。
REST API 程式化介面,可將 JSON 要求傳送至端點,藉此建立評估工作。
  • 將模型評估整合至現有應用程式或多語言工作流程。
  • 建構非 Python 型的自訂工具或自動化程序。
Vertex AI SDK for Python 高階 Python 程式庫,可簡化與 Vertex AI API 的互動。
  • 主要在 Python 環境 (例如 Jupyter 筆記本) 中工作的資料科學家和機器學習工程師。
  • 自動化機器學習運作管道和複雜的評估工作流程。

執行模型評估作業

請使用下列其中一種方法執行模型評估作業。

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 建立虛擬私有雲網路對等互連。如未指定,評估作業不會與任何網路對等互連。
  • 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 適用的 Vertex AI SDK,請參閱「安裝 Python 適用的 Vertex AI SDK」。 詳情請參閱 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,用於儲存評估輸出內容。
    • 類別名稱:(僅限分類) 輸入可能的類別名稱清單。
    • 運算節點數量:輸入要執行評估工作的運算節點數量。
    • 機器類型:選取要用於執行評估工作的機器類型。
  4. 按一下「開始評估」

查看評估結果

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

如果是微調模型,您也可以在 Google Cloud 控制台中查看評估結果:

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

    前往 Vertex AI Model Registry

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

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

後續步驟