AutoSxS

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

AutoSxS

Automatisches 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 Ableitungsanweisung?
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 die Modellaufforderung 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 ausgeführte 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 das Autoscaling 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 oder des Vertex AI SDK für Python 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 : Region, in der die Pipelinekomponenten ausgeführt werden sollen. 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 eindeutige Bewertungsbeispiele 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 Autoscalings.
  • 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 : Region, in der die Pipelinekomponenten ausgeführt werden sollen. 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 eindeutige Bewertungsbeispiele 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 Autoscalings.
  • 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()

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 Autorates
  • 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 eindeutige Bewertungsbeispiele 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 für seine Wahl des Autoraters.

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 Autoscaling 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 Autoscalings 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