Berechnungsbasierte Bewertungspipeline ausführen

Sie können die Leistung von Foundation Models und Ihre abgestimmten generativen KI-Modelle auf Vertex AI bewerten. Die Modelle werden anhand einer Reihe von Messwerten anhand eines von Ihnen bereitgestellten Bewertungs-Datasets ausgewertet. Auf dieser Seite wird erläutert, wie die berechnungsbasierte Modellbewertung über den Pipeline-Bewertungsdienst funktioniert, wie Sie das Bewertungs-Dataset erstellen und formatieren und wie Sie die Bewertung mit der Google Cloud Console, der Vertex AI API oder dem Vertex AI SDK für Python ausführen.

Funktionsweise der berechnungsbasierten Modellbewertung

Zum Bewerten der Leistung eines Modells erstellen Sie zuerst ein Bewertungs-Dataset, das Prompt- und Ground-Truth-Paare enthält. Die Eingabeaufforderung ist für jedes Paar die Aufforderung, die Sie auswerten möchten, und die Ground-Truth-Antwort ist die ideale Antwort auf diese Eingabeaufforderung. Während der Bewertung wird die Prompt in jedem Paar des Bewertungs-Datasets an das Modell übergeben, um eine Ausgabe zu generieren. Die vom Modell generierten Ausgabe und die Grundwahrheit-Ausgabe aus dem Bewertungs-Dataset werden zur Berechnung der Bewertungsmesswerte verwendet.

Die Art der Messwerte, die für die Bewertung verwendet werden, hängt von der Aufgabe ab, die Sie bewerten. Die folgende Tabelle enthält die unterstützten Aufgaben und die Messwerte, die zum Bewerten der einzelnen Aufgaben verwendet werden:

Aufgabe Messwert
Klassifizierung Micro-F1, Macro-F1, pro Klasse F1
Zusammenfassung ROUGE-L
Beantworten von Fragen Genaue Übereinstimmung
Textgenerierung BLEU, ROUGE-L

Unterstützte Modelle

Die Modellbewertung wird für die folgenden Modelle unterstützt:

  • text-bison: Basis- und abgestimmte Versionen.

  • Gemini: Alle Aufgaben außer Klassifizierung.

Bewertungs-Dataset vorbereiten

Das für die Modellbewertung verwendete Bewertungs-Dataset enthält Prompt- und Ground-Truth-Paare, die der Aufgabe entsprechen, die Sie bewerten möchten. Ihr Dataset muss mindestens 1 Prompt- und Ground-Truth-Paar und mindestens 10 Paare enthalten, um aussagekräftige Messwerte zu erhalten. Je mehr Beispiele Sie angeben, desto aussagekräftiger sind die Ergebnisse.

Dataset-Format

Ihr Bewertungs-Dataset muss im JSON Lines-Format (JSONL) vorliegen, wobei jede Zeile ein einzelnes Prompt- und Ground-Truth-Paar enthält, das jeweils im Feld input_text und output_text angegeben ist. Das Feld input_text enthält den Prompt, den Sie bewerten möchten, und das Feld output_text enthält die ideale Antwort für den Prompt.

Die maximale Tokenlänge für input_text ist 8.192, die maximale Tokenlänge für output_text ist 1.024.

Bewertungs-Dataset in Cloud Storage hochladen

Sie können entweder einen neuen Cloud Storage-Bucket erstellen oder einen vorhandenen Bucket zum Speichern Ihrer Dataset-Datei verwenden. Der Bucket muss sich in derselben Region wie das Modell befinden.

Wenn der Bucket bereit ist, laden Sie Ihre Dataset-Datei in den Bucket hoch.

Modellbewertung durchführen

Sie können Modelle mithilfe der REST API oder der Google Cloud Console bewerten.

REST

Senden Sie zum Erstellen eines Modellbewertungsjobs eine POST-Anfrage mit der Methode PipelineJobs.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_ID: Das Google Cloud-Projekt, in dem die Pipelinekomponenten ausgeführt werden.
  • PIPELINEJOB_DISPLAYNAME: Ein Anzeigename für den pipelineJob.
  • LOCATION: Die Region, in der die Pipelinekomponenten ausgeführt wird. Derzeit wird nur us-central1 unterstützt.
  • DATASET_URI: Der Cloud Storage-URI Ihres Referenz-Datasets. Sie können einen oder mehrere URIs angeben. Dieser Parameter unterstützt Platzhalter. Weitere Informationen zu diesem Parameter finden Sie unter InputConfig.
  • OUTPUT_DIR: Der Cloud Storage-URI zum Speichern der Bewertungsausgabe.
  • MODEL_NAME: Geben Sie ein Publisher-Modell oder eine feinabgestimmte Modellressource so an:
    • Publisher-Modell: publishers/google/models/MODEL@MODEL_VERSION

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

    • Abgestimmtes Modell: projects/PROJECT_NUMBER/locations/LOCATION/models/ENDPOINT_ID

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

    Der Bewertungsjob hat keine Auswirkungen auf vorhandene Bereitstellungen des Modells oder deren Ressourcen.

  • EVALUATION_TASK: Die Aufgabe, für die Sie das Modell bewerten möchten. Der Bewertungsjob berechnet eine Reihe von Messwerten, die für diese spezifische Aufgabe relevant sind. Unter anderem sind folgende Werte zulässig:
    • summarization
    • question-answering
    • text-generation
    • classification
  • INSTANCES_FORMAT: Das Format Ihres Datasets. Derzeit wird nur jsonl unterstützt. Weitere Informationen zu diesem Parameter finden Sie unter InputConfig.
  • PREDICTIONS_FORMAT: Das Format der Bewertungsausgabe. Derzeit wird nur jsonl unterstützt. Weitere Informationen zu diesem Parameter finden Sie unter InputConfig.
  • MACHINE_TYPE: (Optional) Der Maschinentyp zum Ausführen des Bewertungsjobs. Der Standardwert ist e2-highmem-16. Eine Liste der unterstützten Maschinentypen finden Sie unter Maschinentypen.
  • SERVICE_ACCOUNT: (Optional) Das Dienstkonto, das zum Ausführen des Bewertungsjobs verwendet werden soll. Informationen zum Erstellen eines benutzerdefinierten Dienstkontos finden Sie unter Dienstkonto mit detaillierten Berechtigungen konfigurieren. Wenn nicht angegeben, wird der Dienst-Agent für benutzerdefinierten Vertex AI-Code verwendet.
  • NETWORK: (Optional) Der vollständig qualifizierte Name des Compute Engine-Netzwerks, mit dem der Bewertungs-Job per peering verbunden werden soll. Das Format des Netzwerknamens ist projects/PROJECT_NUMBER/global/networks/NETWORK_NAME. Wenn Sie dieses Feld angeben, benötigen Sie ein VPC-Netzwerk-Peering für Vertex AI. Wenn nicht angegeben, wird der Bewertungsjob nicht über Peering mit einem Netzwerk verbunden.
  • KEY_NAME: (Optional) Der Name des vom Kunden verwalteten Verschlüsselungsschlüssels (CMEK). Bei entsprechender Konfiguration werden Ressourcen, die vom Bewertungsjob erstellt wurden, mit dem bereitgestellten Verschlüsselungsschlüssel verschlüsselt. Das Format des Schlüsselnamens ist projects/PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY. Der Schlüssel muss sich in derselben Region wie der Bewertungsjob befinden.

HTTP-Methode und URL:

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

JSON-Text der Anfrage:

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

Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

curl

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

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

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

$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

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten: Beachten Sie, dass pipelineSpec gekürzt wurde, um Speicherplatz zu sparen.

Beispiel: cURL-Befehls

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

Informationen zur Installation des Vertex AI SDK for Python finden Sie unter Vertex AI SDK for Python installieren. Weitere Informationen finden Sie in der Referenzdokumentation zur 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

Console

Führen Sie die folgenden Schritte aus, um mithilfe der Google Cloud Console einen Modellbewertungsjob zu erstellen:

  1. Rufen Sie in der Google Cloud Console die Seite Vertex AI Model Registry auf.

    Zur Vertex AI Model Registry

  2. Klicken Sie auf den Namen des Modells, das bewertet werden soll.
  3. Klicken Sie auf dem Tab Bewerten auf Bewertung erstellen und konfigurieren Sie Folgendes:
    • Ziel: Wählen Sie die Aufgabe aus, die Sie bewerten möchten.
    • Zielspalte oder -feld: (nur Klassifizierung) Geben Sie die Zielspalte für die Vorhersage ein. Beispiel: ground_truth.
    • Quellpfad: Geben Sie den URI Ihres Bewertungs-Datasets ein oder wählen Sie ihn aus.
    • Ausgabeformat: Geben Sie das Format der Bewertungsausgabe ein. Derzeit wird nur jsonl unterstützt.
    • Cloud Storage-Pfad: Geben Sie den URI zum Speichern der Bewertungsausgabe ein oder wählen Sie ihn aus.
    • Klassennamen: (nur Klassifizierung) Geben Sie die Liste der möglichen Klassennamen ein.
    • Anzahl der Computing-Knoten: Geben Sie die Anzahl der Computing-Knoten ein, auf denen der Bewertungsjob ausgeführt werden soll.
    • Maschinentyp: Wählen Sie einen Maschinentyp aus, der zum Ausführen des Bewertungsjobs verwendet werden soll.
  4. Klicken Sie auf Bewertung starten.

Bewertungsergebnisse ansehen

Sie finden die Bewertungsergebnisse im Cloud Storage-Ausgabeverzeichnis, das Sie beim Erstellen des Bewertungsjobs angegeben haben. Der Name der Datei lautet evaluation_metrics.json.

Bei optimierten Modellen können Sie auch Bewertungsergebnisse in der Google Cloud Console aufrufen:

  1. Rufen Sie im Bereich „Vertex AI” der Google Cloud Console die Seite Vertex AI Model Registry auf.

    Zur Vertex AI Model Registry

  2. Klicken Sie auf den Namen des Modells, um die Bewertungsmesswerte aufzurufen.

  3. Klicken Sie auf dem Tab Bewerten auf den Namen der Bewertungsausführung, die Sie aufrufen möchten.

Nächste Schritte