AutoSxS ausführen, um paarweise modellbasierte Bewertung durchzuführen

Auf dieser Seite wird erläutert, wie Sie die paarweise modellbasierte Bewertung mit AutoSxS ausführen. Dies ist ein Tool, das über den Bewertungspipelinedienst ausgeführt wird. In diesem Artikel wird erläutert, wie Sie AutoSxS über die Vertex AI API, das Vertex AI SDK für Python oder die Google Cloud Console verwenden können.

AutoSxS

Automatic Side-by-Side (AutoSxS) ist ein paarweises modellbasiertes Bewertungstool, das den Bewertungspipelinedienst durchläuft. Mit AutoSxS kann die Leistung von generativen KI-Modellen in Vertex AI Model Registry oder vorab generierten Vorhersagen bewertet werden. Dies ermöglicht es, Vertex AI-Grundlagenmodelle, generative KI-Modelle und Sprachmodelle von Drittanbietern zu unterstützen. AutoSxS verwendet einen Autorater, um zu entscheiden, welches Modell die bessere Antwort auf einen Prompt gibt. Das Tool ist auf Anfrage verfügbar und bewertet Sprachmodelle mit vergleichbarer Leistung wie menschliche Beurteiler.

Der Autorater

Das Diagramm zeigt auf übergeordneter Ebene, wie AutoSxS die Vorhersagen der Modelle A und B mit einem dritten Modell, dem Autorater, vergleicht.

Übersicht über die Funktionsweise von AutoSxS

Die Modelle A und B erhalten Prompts. Jedes Modell generiert Antworten, die an den Autorater gesendet werden. Ähnlich wie ein menschlicher Beurteiler ist ein Autorater ein Sprachmodell, das die Qualität der Modellantworten anhand eines ursprünglichen Inferenz-Prompts bewertet. Bei AutoSxS vergleicht der Autorater die Qualität von zwei Modellantworten anhand ihrer Inferenzanweisung mithilfe einer Reihe von Kriterien. Anhand der Kriterien wird bestimmt, welches Modell die beste Leistung erzielt hat. Dazu werden die Ergebnisse von Modell A mit den Ergebnissen von Modell B verglichen. Der Autorater gibt Antworteinstellungen als aggregierte Messwerte aus und gibt Präferenzerläuterungen und Konfidenzwerte für jedes Beispiel aus. Weitere Informationen finden Sie in der Bewertungstabelle.

Unterstützte Modelle

AutoSxS unterstützt die Bewertung jedes Modells, wenn vorab generierte Vorhersagen bereitgestellt werden. AutoSxS unterstützt auch das automatische Generieren von Antworten für jedes Modell in Vertex AI Model Registry, das Batchvorhersagen in Vertex AI unterstützt.

Wenn Ihr Textmodell von Vertex AI Model Registry nicht unterstützt wird, akzeptiert AutoSxS auch vorab generierte Vorhersagen, die als JSONL in Cloud Storage gespeichert sind, oder eine BigQuery-Tabelle. Preise finden Sie unter Textgenerierung.

Unterstützte Aufgaben und Kriterien

AutoSxS unterstützt die Bewertung von Modellen für Zusammenfassungs- und Frage-Antwort-Aufgaben. Die Bewertungskriterien sind für jede Aufgabe vordefiniert, wodurch die Sprachbewertung objektiver wird und die Antwortqualität verbessert wird.

Die Kriterien werden nach Aufgabe aufgelistet.

Zusammenfassung

Die Aufgabe summarization hat ein Tokenlimit von 4.096 für Eingaben.

Die Liste der Bewertungskriterien für summarization sieht so aus:

Kriterium
1. Folgt der Anleitung Inwieweit zeigt die Antwort des Modells ein Verständnis der Anweisung aus dem Prompt?
2. Grounded Enthält die Antwort nur Informationen aus dem Inferenzkontext und der Inferenzanweisung?
3. Umfassend In welchem Umfang erfasst das Modell wichtige Details in der Zusammenfassung?
4. Kurzfassung Ist die Zusammenfassung ausführlich? Enthält sie floskelhafte Sprache? Ist sie zu knapp?

Question + Answer

Die Aufgabe question_answering hat ein Tokenlimit von 4.096 für Eingaben.

Die Liste der Bewertungskriterien für question_answering sieht so aus:

Kriterium
1. Beantwortet die Frage vollständig Mit der Antwort wird die Frage vollständig beantwortet.
2. Grounded Enthält die Antwort nur Informationen aus dem Befehlskontext und der Inferenzanweisung?
3. Relevanz Bezieht sich der Inhalt der Antwort auf die Frage?
4. Umfassend Inwieweit erfasst das Modell wichtige Details in der Frage?

Bewertungs-Dataset für AutoSxS vorbereiten

In diesem Abschnitt werden die Daten beschrieben, die Sie in Ihrem AutoSxS-Bewertungs-Dataset angeben sollten, sowie die Best Practices für die Dataset-Erstellung. Die Beispiele sollten reale Eingaben widerspiegeln, mit denen Ihre Modelle in der Produktion konfrontiert werden könnten, und am besten zeigen, wie sich Ihre Live-Modelle verhalten.

Dataset-Format

AutoSxS akzeptiert ein einzelnes Bewertungs-Dataset mit einem flexiblen Schema. Das Dataset kann eine BigQuery-Tabelle sein oder als JSON Lines in Cloud Storage gespeichert.

Jede Zeile des Bewertungs-Datasets stellt ein einzelnes Beispiel dar und die Spalten sind eine der folgenden:

  • ID-Spalten: Wird zur Identifizierung jedes eindeutigen Beispiels verwendet.
  • Datenspalten: Wird zum Ausfüllen von Vorlagen für Prompts verwendet. Siehe Prompt-Parameter.
  • Vorgenerierte Vorhersagen: Vorhersagen, die vom selben Modell mit demselben Prompt getroffen wurden. Die Verwendung von vorab generierten Vorhersagen spart Zeit und Ressourcen.
  • Menschliche Ground-Truth-Präferenzen: Wird verwendet, um AutoSxS mit Ihren Ground-Truth-Präferenzdaten zu vergleichen, wenn für beide Modelle vorgefertigte Vorhersagen bereitgestellt werden.

Hier ist ein Beispiel für ein Bewertungs-Dataset, bei dem context und question Datenspalten sind und model_b_response vorab generierte Vorhersagen enthält.

context question model_b_response
Manche mögen denken, dass Stahl oder Titan das härteste Material ist, aber Diamant ist tatsächlich das härteste Material. Was ist das härteste Material? Diamant ist das härteste Material. Es ist härter als Stahl oder Titan.

Weitere Informationen zum Aufrufen von AutoSxS finden Sie unter Modellbewertung durchführen. Weitere Informationen zur Tokenlänge finden Sie unter Unterstützte Aufgaben und Kriterien. Informationen zum Hochladen Ihrer Daten in Cloud Storage finden Sie unter Bewertungs-Dataset in Cloud Storage hochladen.

Prompt-Parameter

Viele Sprachmodelle verwenden Prompt-Parameter als Eingaben anstelle eines einzelnen Prompt-Strings. Beispiel: chat-bison verwendet mehrere Prompt-Parameter (Nachrichten, Beispiele, Kontext), aus denen Teile des Prompts bestehen. text-bison hat jedoch nur einen Prompt-Parameter namens Prompt, der den gesamten Prompt enthält.

Wir zeigen, wie Sie Parameter für Modellprompts flexibel zum Zeitpunkt der Inferenz und Evaluation angeben können. Mit AutoSxS können Sie Language Models mit unterschiedlichen erwarteten Eingaben über Vorlagenparameter aufrufen.

Inferenz

Wenn eines der Modelle keine vorab generierten Vorhersagen hat, verwendet AutoSxS die Batchvorhersage von Vertex AI, um Antworten zu generieren. Die Prompt-Parameter jedes Modells müssen angegeben werden.

In AutoSxS können Sie eine einzelne Spalte im Bewertungs-Dataset als Prompt-Parameter angeben.

{'some_parameter': {'column': 'my_column'}}

Alternativ können Sie Vorlagen mithilfe von Spalten aus dem Bewertungs-Dataset als Variablen definieren, um Prompt-Parameter anzugeben:

{'some_parameter': {'template': 'Summarize the following: {{ my_column }}.'}}

Bei der Bereitstellung von Modell-Prompt-Parametern für die Inferenz können Nutzer das geschützte default_instruction-Keyword als Vorlagenargument verwenden, das durch die Standardinferenzanweisung für die angegebene Aufgabe ersetzt wird:

model_prompt_parameters = {
        'prompt': {'template': '{{ default_instruction }}: {{ context }}'},
}

Geben Sie beim Generieren von Vorhersagen Parameter für den Modell-Prompt und eine Ausgabespalte an. Beispiel: text-bison verwendet „Prompt“ für die Eingabe und „Inhalt“ für die Ausgabe. Gehen Sie dazu so vor:

  1. Identifizieren Sie die Eingaben und Ausgaben, die von den bewerteten Modellen benötigt werden.
  2. Definieren Sie die Eingaben als Modell-Prompt-Parameter.
  3. Übergeben Sie die Ausgabe an die Antwortspalte.
model_a_prompt_parameters={
    'prompt': {
        'template': {
            'Answer the following question from the point of view of a college professor: {{ context }}\n{{ question }}'
        },
    },
},
response_column_a='content',  # Column in Model A response.
response_column_b='model_b_response',  # Column in eval dataset.

Bewertung

So wie Sie Prompt-Parameter für Inferenz angeben müssen, müssen Sie auch Prompt-Parameter für die Bewertung angeben. Der Autorater benötigt die folgenden Prompt-Parameter:

Autorater-Prompt-Parameter Vom Nutzer konfigurierbar? Beschreibung Beispiel
Anleitung für Autorater Nein Eine kalibrierte Anweisung, die die Kriterien beschreibt, mit denen der Autorater nun die Antworten bewerten soll. Wählen Sie die Antwort aus, die die Frage beantwortet und der Anleitung am besten folgt.
Inferenzanweisung Ja Eine Beschreibung der Aufgabe, die jedes Kandidatenmodell ausführen soll. Beantworten Sie die Frage genau: Welches ist das schwierigste Material?
Inferenzkontext Ja Zusätzlicher Kontext für die auszuführende Aufgabe. Titan und Diamant sind zwar beide härter als Kupfer, aber Diamant hat einen Härtegrad von 98, während Titan einen Wert von 36 hat. Eine höhere Bewertung bedeutet einen höheren Härtegrad.
Antworten Nein1 Ein Paar zu bewertender Antworten, eine aus jedem Kandidatenmodell. Raute

1 Sie können den Prompt-Parameter nur über vorab generierte Antworten konfigurieren.

Beispielcode unter Verwendung der Parameter:

autorater_prompt_parameters={
    'inference_instruction': {
        'template': 'Answer the following question from the point of view of a college professor: {{ question }}.'
    },
    'inference_context': {
        'column': 'context'
    }
}

Die Modelle A und B können Inferenzanweisungen und -kontext haben, die unterschiedlich formatiert sind, unabhängig davon, ob dieselben Informationen bereitgestellt werden oder nicht. Das bedeutet, dass der Autorater eine separate, aber einzige Inferenzanweisung und einen einzigen Kontext verwendet.

Beispiel für ein Bewertungs-Dataset

Dieser Abschnitt enthält ein Beispiel für ein Dataset zur Bewertung einer Frage-Antwort, einschließlich vorab generierter Vorhersagen für Modell B. In diesem Beispiel führt AutoSxS nur für Modell A Inferenz aus. Wir stellen eine id-Spalte zur Verfügung, um zwischen Beispielen mit derselben Frage und demselben Kontext zu unterscheiden.

{
 "id": 1,
 "question": "What is the hardest material?",
  "context": "Some might think that steel is the hardest material, or even titanium. However, diamond is actually the hardest material.",
  "model_b_response": "Diamond is the hardest material. It is harder than steel or titanium."
}
{
  "id": 2,
  "question": "What is the highest mountain in the world?",
  "context": "K2 and Everest are the two tallest mountains, with K2 being just over 28k feet and Everest being 29k feet tall.",
  "model_b_response": "Mount Everest is the tallest mountain, with a height of 29k feet."
}
{
  "id": 3,
  "question": "Who directed The Godfather?",
  "context": "Mario Puzo and Francis Ford Coppola co-wrote the screenplay for The Godfather, and the latter directed it as well.",
  "model_b_response": "Francis Ford Coppola directed The Godfather."
}
{
  "id": 4,
  "question": "Who directed The Godfather?",
  "context": "Mario Puzo and Francis Ford Coppola co-wrote the screenplay for The Godfather, and the latter directed it as well.",
  "model_b_response": "John Smith."
}

Best Practices

Halten Sie sich beim Definieren Ihres Bewertungs-Datasets an folgende Best Practices:

  • Stellen Sie Beispiele für die Eingabetypen bereit, die Ihre Modelle in der Produktion verarbeiten.
  • Ihr Dataset muss mindestens ein Bewertungsbeispiel enthalten. Wir empfehlen etwa 100 Beispiele, um qualitativ hochwertige aggregierte Messwerte zu gewährleisten. Wenn mehr als 400 Beispiele zur Verfügung gestellt werden, sinkt die Verbesserungsrate bei den aggregierten Messwerten tendenziell.
  • Eine Anleitung zum Schreiben von Prompts finden Sie unter Text-Prompts entwerfen.
  • Wenn Sie für jedes Modell vorab generierte Vorhersagen verwenden, fügen Sie die vorab generierten Vorhersagen in eine Spalte Ihres Bewertungs-Datasets ein. Die Bereitstellung vorab generierter Vorhersagen ist nützlich, da Sie damit die Ausgabe von Modellen vergleichen können, die sich nicht in Vertex Model Registry befinden, und Sie Antworten wiederverwenden können.

Modellbewertung durchführen

Sie können Modelle mithilfe der REST API, des Vertex AI SDK für Python oder der Google Cloud Console bewerten.

Verwenden Sie diese Syntax, um den Pfad zu Ihrem Modell anzugeben:

  • Publisher-Modell: publishers/PUBLISHER/models/MODEL Beispiel: publishers/google/models/text-bison
  • Abgestimmtes Modell: projects/PROJECT_NUMBER/locations/LOCATION/models/MODEL@VERSION Beispiel: projects/123456789012/locations/us-central1/models/1234567890123456789

REST

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

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PIPELINEJOB_DISPLAYNAME : Anzeigename für pipelineJob.
  • PROJECT_ID : Google Cloud-Projekt, das die Pipelinekomponenten ausführt.
  • LOCATION: Die Region, in der die Pipelinekomponenten ausgeführt werden. us-central1 wird unterstützt.
  • OUTPUT_DIR : Cloud Storage-URI zum Speichern der Bewertungsausgabe.
  • EVALUATION_DATASET : BigQuery-Tabelle oder eine durch Kommas getrennte Liste von Cloud Storage-Pfaden zu einem JSONL-Dataset, das Bewertungsbeispiele enthält.
  • TASK : Bewertungsaufgabe, die [summarization, question_answering] sein kann.
  • ID_COLUMNS : Spalten, die zwischen eindeutigen Bewertungsbeispielen unterscheiden.
  • AUTORATER_PROMPT_PARAMETERS : Parameter der Autorater-Prompts, die Spalten oder Vorlagen zugeordnet sind. Die erwarteten Parameter sind: inference_instruction (Details zur Ausführung einer Aufgabe) und inference_context (Inhalte, auf die bei der Ausführung der Aufgabe verwiesen wird). Zum Beispiel verwendet {'inference_context': {'column': 'my_prompt'}} die Spalte „my_prompt“ des Bewertungs-Datasets für den Kontext des Autoraters.
  • RESPONSE_COLUMN_A : Entweder der Name einer Spalte im Bewertungs-Dataset, das vordefinierte Vorhersagen enthält, oder der Name der Spalte in der Modell-A-Ausgabe, die Vorhersagen enthält. Wenn kein Wert angegeben ist, wird versucht, den richtigen Spaltennamen für die Modellausgabe abzuleiten.
  • RESPONSE_COLUMN_B : Entweder der Name einer Spalte im Bewertungs-Dataset, das vordefinierte Vorhersagen enthält, oder der Name der Spalte in der Ausgabe von Modell B mit Vorhersagen. Wenn kein Wert angegeben ist, wird versucht, den richtigen Spaltennamen für die Modellausgabe abzuleiten.
  • MODEL_A (optional): Ein voll qualifizierter Name für die Modellressource (projects/{project}/locations/{location}/models/{model}@{version}) oder der Ressourcenname des Publisher-Modells (publishers/{publisher}/models/{model}). Wenn Antworten von Modell A angegeben werden, sollte dieser Parameter nicht angegeben werden.
  • MODEL_B (optional): Ein voll qualifizierter Name für die Modellressource (projects/{project}/locations/{location}/models/{model}@{version}) oder der Ressourcenname des Publisher-Modells (publishers/{publisher}/models/{model}). Wenn Antworten von Modell B angegeben werden, sollte dieser Parameter nicht angegeben werden.
  • MODEL_A_PROMPT_PARAMETERS (Optional): Die Prompt-Vorlagenparameter von Modell A, die Spalten oder Vorlagen zugeordnet sind. Wenn Antworten von Modell A vordefiniert sind, sollte dieser Parameter nicht angegeben werden. Beispiel: {'prompt': {'column': 'my_prompt'}} verwendet die Spalte my_prompt des Bewertungs-Datasets für den Prompt-Parameter prompt.
  • MODEL_B_PROMPT_PARAMETERS (Optional): Die Parameter der Prompt-Vorlagen von Modell B, die Spalten oder Vorlagen zugeordnet sind. Wenn Antworten von Modell B vordefiniert sind, sollte dieser Parameter nicht angegeben werden. Beispiel: {'prompt': {'column': 'my_prompt'}} verwendet die Spalte my_prompt des Bewertungs-Datasets für den Prompt-Parameter prompt.

JSON-Text der Anfrage:

  {
    "displayName": "PIPELINEJOB_DISPLAYNAME",
    "runtimeConfig": {
        "gcsOutputDirectory": "gs://OUTPUT_DIR",
        "parameterValues": {
            "evaluation_dataset": "EVALUATION_DATASET",
            "id_columns": ["ID_COLUMNS"],
            "task": "TASK",
            "autorater_prompt_parameters": AUTORATER_PROMPT_PARAMETERS,
            "response_column_a": "RESPONSE_COLUMN_A",
            "response_column_b": "RESPONSE_COLUMN_B",
            "model_a": "MODEL_A",
            "model_a_prompt_parameters": MODEL_A_PROMPT_PARAMETERS,
            "model_b": "MODEL_B",
            "model_b_prompt_parameters": MODEL_B_PROMPT_PARAMETERS,
        },
    },
    "templateUri": "https://us-kfp.pkg.dev/ml-pipeline/google-cloud-registry/autosxs-template/default"
  }

Verwenden Sie curl, um Ihre Anfrage zu senden.

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"

Antwort

  "state": "PIPELINE_STATE_PENDING",
  "labels": {
    "vertex-ai-pipelines-run-billing-id": "1234567890123456789"
  },
  "runtimeConfig": {
    "gcsOutputDirectory": "gs://my-evaluation-bucket/output",
    "parameterValues": {
      "evaluation_dataset": "gs://my-evaluation-bucket/output/data.json",
      "id_columns": [
        "context"
      ],
      "task": "question_answering",
      "autorater_prompt_parameters": {
        "inference_instruction": {
          "template": "Answer the following question: {{ question }} }."
        },
        "inference_context": {
          "column": "context"
        }
      },
      "response_column_a": "",
      "response_column_b": "response_b",
      "model_a": "publishers/google/models/text-bison@001",
      "model_a_prompt_parameters": {
        "prompt": {
          "template": "Answer the following question from the point of view of a college professor: {{ question }}\n{{ context }} }"
        }
      },
      "model_b": "",
      "model_b_prompt_parameters": {}
    }
  },
  "serviceAccount": "123456789012-compute@developer.gserviceaccount.com",
  "templateUri": "https://us-kfp.pkg.dev/ml-pipeline/google-cloud-registry/autosxs-template/default",
  "templateMetadata": {
    "version": "sha256:7366b784205551ed28f2c076e841c0dbeec4111b6df16743fc5605daa2da8f8a"
  }
}

Vertex AI SDK für Python

Informationen zur Installation des Vertex AI SDK for Python finden Sie unter Vertex AI SDK for Python installieren. Weitere Informationen zur Python API finden Sie unter Vertex AI SDK für Python API.

Weitere Informationen zu Pipelineparametern finden Sie in der Referenzdokumentation zu Google Cloud-Pipeline-Komponenten.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PIPELINEJOB_DISPLAYNAME : Anzeigename für pipelineJob.
  • PROJECT_ID : Google Cloud-Projekt, das die Pipelinekomponenten ausführt.
  • LOCATION: Die Region, in der die Pipelinekomponenten ausgeführt werden. us-central1 wird unterstützt.
  • OUTPUT_DIR : Cloud Storage-URI zum Speichern der Bewertungsausgabe.
  • EVALUATION_DATASET : BigQuery-Tabelle oder eine durch Kommas getrennte Liste von Cloud Storage-Pfaden zu einem JSONL-Dataset, das Bewertungsbeispiele enthält.
  • TASK : Bewertungsaufgabe, die [summarization, question_answering] sein kann.
  • ID_COLUMNS : Spalten, die zwischen eindeutigen Bewertungsbeispielen unterscheiden.
  • AUTORATER_PROMPT_PARAMETERS : Parameter der Autorater-Prompts, die Spalten oder Vorlagen zugeordnet sind. Die erwarteten Parameter sind: inference_instruction (Details zur Ausführung einer Aufgabe) und inference_context (Inhalte, auf die bei der Ausführung der Aufgabe verwiesen wird). Zum Beispiel verwendet {'inference_context': {'column': 'my_prompt'}} die Spalte „my_prompt“ des Bewertungs-Datasets für den Kontext des Autoraters.
  • RESPONSE_COLUMN_A : Entweder der Name einer Spalte im Bewertungs-Dataset, das vordefinierte Vorhersagen enthält, oder der Name der Spalte in der Modell-A-Ausgabe, die Vorhersagen enthält. Wenn kein Wert angegeben ist, wird versucht, den richtigen Spaltennamen für die Modellausgabe abzuleiten.
  • RESPONSE_COLUMN_B : Entweder der Name einer Spalte im Bewertungs-Dataset, das vordefinierte Vorhersagen enthält, oder der Name der Spalte in der Ausgabe von Modell B mit Vorhersagen. Wenn kein Wert angegeben ist, wird versucht, den richtigen Spaltennamen für die Modellausgabe abzuleiten.
  • MODEL_A (optional): Ein voll qualifizierter Name für die Modellressource (projects/{project}/locations/{location}/models/{model}@{version}) oder der Ressourcenname des Publisher-Modells (publishers/{publisher}/models/{model}). Wenn Antworten von Modell A angegeben werden, sollte dieser Parameter nicht angegeben werden.
  • MODEL_B (optional): Ein voll qualifizierter Name für die Modellressource (projects/{project}/locations/{location}/models/{model}@{version}) oder der Ressourcenname des Publisher-Modells (publishers/{publisher}/models/{model}). Wenn Antworten von Modell B angegeben werden, sollte dieser Parameter nicht angegeben werden.
  • MODEL_A_PROMPT_PARAMETERS (Optional): Die Prompt-Vorlagenparameter von Modell A, die Spalten oder Vorlagen zugeordnet sind. Wenn Antworten von Modell A vordefiniert sind, sollte dieser Parameter nicht angegeben werden. Beispiel: {'prompt': {'column': 'my_prompt'}} verwendet die Spalte my_prompt des Bewertungs-Datasets für den Prompt-Parameter prompt.
  • MODEL_B_PROMPT_PARAMETERS (Optional): Die Parameter der Prompt-Vorlagen von Modell B, die Spalten oder Vorlagen zugeordnet sind. Wenn Antworten von Modell B vordefiniert sind, sollte dieser Parameter nicht angegeben werden. Beispiel: {'prompt': {'column': 'my_prompt'}} verwendet die Spalte my_prompt des Bewertungs-Datasets für den Prompt-Parameter prompt.
import os
from google.cloud import aiplatform
parameters = {
    'evaluation_dataset': 'EVALUATION_DATASET',
    'id_columns': ['ID_COLUMNS'],
    'task': 'TASK',
    'autorater_prompt_parameters': AUTORATER_PROMPT_PARAMETERS,
    'response_column_a': 'RESPONSE_COLUMN_A',
    'response_column_b': 'RESPONSE_COLUMN_B',
    'model_a': 'MODEL_A',
    'model_a_prompt_parameters': MODEL_A_PROMPT_PARAMETERS,
    'model_b': 'MODEL_B',
    'model_b_prompt_parameters': MODEL_B_PROMPT_PARAMETERS,
}
aiplatform.init(project='PROJECT_ID', location='LOCATION', staging_bucket='gs://OUTPUT_DIR')
aiplatform.PipelineJob(
    display_name='PIPELINEJOB_DISPLAYNAME',
    pipeline_root=os.path.join('gs://OUTPUT_DIR', 'PIPELINEJOB_DISPLAYNAME'),
    template_path=(
      'https://us-kfp.pkg.dev/ml-pipeline/google-cloud-registry/autosxs-template/default'),
    parameter_values=parameters,
).run()

Console

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

  1. Beginnen Sie mit einem Google-Grundlagenmodell oder verwenden Sie ein Modell, das bereits in Ihrer Vertex AI-Modell-Registry vorhanden ist:

    • So bewerten Sie ein Google-Grundlagenmodell:

      1. Rufen Sie Vertex AI Model Garden auf und wählen Sie ein Modell aus, das die paarweise Bewertung unterstützt, z. B. text-bison.

        Zu Model Garden

      2. Klicken Sie auf Evaluate (Bewerten).

      3. Klicken Sie im angezeigten Pop-up-Fenster auf Auswählen, um eine Modellversion auszuwählen.

      4. Im Bereich Modell speichern werden Sie möglicherweise aufgefordert, eine Kopie des Modells in Vertex AI Model Registry zu speichern, falls Sie noch keine Kopie haben. Geben Sie einen Modellnamen ein und klicken Sie auf Speichern.

      5. Die Seite Bewertung erstellen wird angezeigt. Wählen Sie im Schritt Methode bewerten die Option Dieses Modell anhand eines anderen Modells bewerten aus.

      6. Klicken Sie auf Weiter.

    • So bewerten Sie ein vorhandenes Modell in der Vertex AI Model Registry:

      1. Rufen Sie die Seite Vertex AI Model Registry auf:

        Zur Vertex AI Model Registry

      2. Klicken Sie auf den Namen des Modells, das bewertet werden soll. Achten Sie darauf, dass der Modelltyp paarweise Evaluierungen unterstützt. Beispiel: text-bison.

      3. Klicken Sie auf dem Tab Bewerten auf SxS.

      4. Klicken Sie auf Create SxS Evaluation (SxS-Bewertung erstellen).

  2. Geben Sie für jeden Schritt auf der Seite zur Bewertungserstellung die erforderlichen Informationen ein und klicken Sie auf Weiter:

    1. Wählen Sie im Schritt Bewertungs-Dataset ein Bewertungsziel und ein Modell aus, das mit dem ausgewählten Modell verglichen werden soll. Wählen Sie ein Bewertungs-Dataset aus und geben Sie die id-Spalten (Antwortspalten) ein.

    2. Geben Sie im Schritt Modelleinstellungen an, ob Sie die Modellantworten bereits in Ihrem Dataset verwenden möchten oder ob Sie Vertex AI Batch Prediction verwenden möchten, um die Antworten zu generieren. Geben Sie die Antwortspalten für beide Modelle an. Für die Option Vertex AI Batch Prediction können Sie Ihre Inferenzmodell-Prompt-Parameter angeben.

    3. Geben Sie im Schritt Autorater-Einstellungen Ihre Autorater-Prompt-Parameter und einen Ausgabespeicherort für die Bewertungen ein.

  3. Klicken Sie auf Bewertung starten.

Bewertungsergebnisse ansehen

Sie finden die Bewertungsergebnisse in Vertex AI Pipelines. Untersuchen Sie dazu die folgenden Artefakte, die von der AutoSxS-Pipeline erstellt werden:

Bewertungen

AutoSxS gibt Bewertungen (Messwerte auf Beispielebene) aus, die Nutzern helfen, die Modellleistung auf Beispielebene zu verstehen. Die Bewertungen umfassen folgende Informationen:

  • Inferenz-Prompts
  • Modellantworten
  • Entscheidungen des Autoraters
  • Erläuterungen zur Bewertung
  • Konfidenzwerte

Ursprünge können mit den folgenden Spalten im JSONL-Format oder in eine BigQuery-Tabelle geschrieben werden:

Spalte Beschreibung
ID-Spalten Spalten, die zwischen eindeutigen Bewertungsbeispielen unterscheiden.
inference_instruction Anleitung zum Generieren von Modellantworten.
inference_context Kontext, der zum Generieren von Modellantworten verwendet wird.
response_a Antwort von Modell A unter Berücksichtigung der Inferenzanweisung und des Kontexts.
response_b Antwort von Modell B unter Angabe der Inferenzanweisung und des Kontexts.
choice Das Modell mit der besseren Antwort. Mögliche Werte sind Model A, Model B und Error. Error bedeutet, dass ein Fehler verhindert hat, dass das Autoscaling ermitteln konnte, ob die Antwort von Modell A oder die von Modell B am besten war.
confidence Ein Wert zwischen 0 und 1, der angibt, wie sicher der Autorater bei seiner Wahl war.
explanation Der Grund des Autoraters für seine Wahl.

Zusammengefasste Messwerte

AutoSxS berechnet zusammengefasste Messwerte (Gewinnrate) mithilfe der Bewertungstabelle. Wenn keine Daten mit menschlichen Präferenzen bereitgestellt werden, werden die folgenden aggregierten Messwerte generiert:

Messwert Beschreibung
AutoRater-Modell A – Gewinnrate Prozentsatz der Zeit, in der der Autorater entschied, dass Modell A die bessere Antwort war.
AutoRater-Modell B – Gewinnrate Prozentsatz der Zeit, in der der Autorater entschied, dass Modell B die bessere Antwort war.

Um die Gewinnrate besser zu verstehen, sehen Sie sich die zeilenbasierten Ergebnisse und die Erläuterungen des Autoraters an, um festzustellen, ob die Ergebnisse und Erläuterungen mit Ihren Erwartungen übereinstimmen.

Messwerte zur Ausrichtung mit menschlichen Präferenzen

Wenn Daten mit menschlichen Präferenzen bereitgestellt werden, gibt AutoSxS die folgenden Messwerte aus:

Messwert Beschreibung
AutoRater-Modell A – Gewinnrate Prozentsatz der Zeit, in der der Autorater entschied, dass Modell A die bessere Antwort war.
AutoRater-Modell B – Gewinnrate Prozentsatz der Zeit, in der der Autorater entschied, dass Modell B die bessere Antwort war.
Gewinnrate Modell A mit menschlichen Präferenzen Prozentsatz der Zeit, in der Menschen entschieden haben, dass Modell A die bessere Antwort hatte.
Gewinnrate Modell B mit menschlichen Präferenzen Prozentsatz der Zeit, in der Menschen entschieden haben, dass Modell B die bessere Antwort hatte.
TP Anzahl der Beispiele, bei denen sowohl der Autorater als auch die menschlichen Präferenzen Modell A als die bessere Antwort ansahen.
FP Anzahl der Beispiele, bei denen der Autorater Modell A als bessere Antwort auswählte, die menschliche Präferenz aber Modell B als bessere Antwort ansah.
TN Anzahl der Beispiele, bei denen sowohl der Autorater als auch die menschliche Präferenz das Modell B als die bessere Antwort ansahen.
FN Anzahl der Beispiele, bei denen der Autorater Modell B als bessere Antwort gewählt hat, die menschliche Präferenz aber Modell A als bessere Antwort ansah.
Genauigkeit Prozentsatz der Zeit, in der der Autoscaler mit menschlichen Beurteilern vereinbart hat.
Precision Prozentsatz der Zeit, in der sowohl der Autorater als auch die Menschen fanden, dass Modell A eine bessere Antwort hätte, an allen Fällen, in denen der Autorater fand, dass Modell A eine bessere Antwort hatte.
Recall Prozentsatz der Zeit, in der sowohl der Autorater als auch die Menschen dachten, dass Modell A eine bessere Antwort hätte, an allen Fällen, in denen Modell A eine bessere Antwort hatte.
F1 Harmonischer Mittelwert von Precision und Recall.
Cohens Kappa Messung der Übereinstimmung zwischen dem Autorater und den menschlichen Beurteilern, bei dem die Wahrscheinlichkeit einer zufälligen Vereinbarung berücksichtigt wird. Cohen schlägt die folgende Interpretation vor:
-1.0 – 0.0Vereinbarung, die der zufälligen Wahrscheinlichkeit entspricht oder schlechter ist
0.0 – 0.2Geringe Übereinstimmung
0.2 – 0.4Ausgewogene Übereinstimmung
0.4 – 0.6Moderate Übereinstimmung
0.6 – 0.8Wesentliche Übereinstimmung
0.8 – 1.0Fast perfekte Übereinstimmung
1.0Perfekte Übereinstimmung

AutoSxS-Anwendungsfälle

Sie lernen die Verwendung von AutoSxS mit drei Anwendungsfallszenarien kennen.

Modelle vergleichen

Bewerten Sie ein abgestimmtes Erstanbietermodell (1p) anhand eines 1p-Referenzmodells.

Sie können angeben, dass die Inferenz für beide Modelle gleichzeitig ausgeführt wird.

Abbildung 2: Beide Inferenzmodelle werden ausgeführt

In diesem Codebeispiel wird ein abgestimmtes Modell aus Vertex Model Registry anhand eines Referenzmodells aus derselben Registry bewertet.

# Evaluation dataset schema:
#   my_question: str
#   my_context: str
parameters = {
    'evaluation_dataset': DATASET,
    'id_columns': ['my_context'],
    'task': 'question_answering',
    'autorater_prompt_parameters': {
      'inference_instruction': {'column': 'my_question'},
      'inference_context': {'column': 'my_context'},
  },
    'model_a': 'publishers/google/models/text-bison@001',
    'model_a_prompt_parameters': {QUESTION: {'template': '{{my_question}}\nCONTEXT: {{my_context}}'}},
  'response_column_a': 'content',
    'model_b': 'projects/abc/locations/abc/models/tuned_bison',
    'model_b_prompt_parameters': {'prompt': {'template': '{{my_context}}\n{{my_question}}'}},
  'response_column_b': 'content',
}

Vorhersagen vergleichen

Bewerten Sie ein abgestimmtes Drittanbietermodell (3p) mit einem Referenz-3p-Modell.

Sie können Inferenz überspringen, indem Sie Modellantworten direkt bereitstellen.

Abbildung 3: Nur ein Inferenzmodell wird ausgeführt

In diesem Codebeispiel wird ein abgestimmtes 3P-Modell anhand eines 3p-Referenzmodells bewertet.

# Evaluation dataset schema:
#   my_question: str
#   my_context: str
#   response_b: str

parameters = {
    'evaluation_dataset': DATASET,
    'id_columns': ['my_context'],
    'task': 'question_answering',
    'autorater_prompt_parameters':
        'inference_instruction': {'column': 'my_question'},
        'inference_context': {'column': 'my_context'},
    },
    'response_column_a': 'content',
    'response_column_b': 'response_b',
}

Ausrichtung prüfen

Alle unterstützten Aufgaben wurden mit Daten von menschlichen Beurteilern verglichen, um zu gewährleisten, dass die Antworten der Autorater auf menschliche Präferenzen ausgerichtet sind. Wenn Sie ein Benchmarking von AutoSxS für Ihre Anwendungsfälle durchführen möchten, stellen Sie AutoSxS die Daten mit menschlichen Präferenzen direkt zur Verfügung, sodass AutoSxS aggregierte Ausrichtungsstatistiken ausgibt.

Sie können beide Ausgaben (Vorhersageergebnisse) für den Autorater angeben, um die Ausrichtung anhand eines Datasets für menschliche Präferenzen zu prüfen. Sie können auch Ihre Inferenzergebnisse bereitstellen.

Abbildung 4: Ausgaben aus beiden Modellen für den Autorater

Mit diesem Codebeispiel wird sichergestellt, dass die Ergebnisse und Erläuterungen des Autoraters Ihren Erwartungen entsprechen.

# Evaluation dataset schema:
#  my_question: str
#  my_context: str
#   response_a: str
#   response_b: str
#   actual: str
parameters = {
    'evaluation_dataset': DATASET,
    'id_columns': ['my_context'],
    'task': 'question_answering',
    'autorater_prompt_parameters': {
      'inference_instruction': {'column': 'my_question'},
      'inference_context': {'column': 'my_context'},
  },
  'response_column_a': 'response_a',
  'response_column_b': 'response_b',
  'human_preference_column': 'actual',
}

Nächste Schritte