Judge-Modell konfigurieren

Modellbasierte Messwerte bieten verschiedene Ansätze, um Bewertungsmesswerte basierend auf Ihren Kriterien und Anwendungsfällen anzupassen und zu generieren. Auf dieser Seite wird beschrieben, wie Sie Ihr Judge-Modell für Ihren idealen Anwendungsfall konfigurieren.

Informationen zum grundlegenden Bewertungsworkflow finden Sie in der Kurzanleitung zum Gen AI Evaluation Service. Die Reihe zur erweiterten Anpassung von Judge-Modellen umfasst die folgenden Seiten:

  1. Judge-Modell bewerten
  2. Beurteilungsmodell konfigurieren (aktuelle Seite)

Übersicht

Sie haben die folgenden Optionen, um Ihr Judge-Modell für eine bessere Qualität zu konfigurieren:

  • Systemanweisungen: Das Judge-Modell kann eine Reihe von Anweisungen verarbeiten, bevor es Bewertungs-Prompts verarbeitet.
  • Konfigurationen des Bewertungsmodells:
    • Antworten umkehren: Kehren Sie die Antworten des Baseline-Modells und des Kandidatenmodells um, um die Verzerrung des Bewertungsmodells während der Bewertung zu reduzieren.
    • Multi-Sampling: Passen Sie an, wie oft das Judge-Modell für den Bewertungswert aufgerufen werden soll, um die Konsistenz zu verbessern.
    • Abgestimmtes Judge-Modell: Verwenden Sie ein abgestimmtes LLM als Judge-Modell.

Systemanweisungen

Gemini-Modelle können Systemanweisungen verarbeiten. Das sind Anweisungen, die sich darauf auswirken, wie das Modell Prompts verarbeitet. Sie können Systemanweisungen verwenden, wenn Sie Inhalte aus einem Modell initialisieren oder generieren, um das Verhalten auf Produktebene anzugeben, z. B. Rollen oder Personas, Kontextinformationen sowie den Stil und Ton der Erklärung. Das Bewertungsmodell gewichtet die Bedeutung von Systemanweisungen in der Regel höher als die von Eingabeaufforderungen.

Im folgenden Beispiel mit dem Vertex AI SDK wird system_instruction auf Messwertebene für PointwiseMetric hinzugefügt:

system_instruction = "You are an expert evaluator."
linguistic_acceptability = PointwiseMetric(
    metric="linguistic_acceptability",
    metric_prompt_template=linguistic_acceptability_metric_prompt_template,
    system_instruction=system_instruction,
)

eval_result = EvalTask(
    dataset=EVAL_DATASET,
    metrics=[linguistic_acceptability]
).evaluate()

Sie können denselben Ansatz mit PairwiseMetric verwenden.

Konfiguration des Bewertungsmodells

Sie können das Judge-Modell über autorater_config weiter anpassen:

  • Antworten umkehren: Kehren Sie die Antworten des Basismodells und des Kandidatenmodells um, um die Verzerrung des Bewertungsmodells während der Bewertung zu reduzieren.

  • Mehrfachstichproben: Passen Sie die Anzahl der Aufrufe des Judge-Modells für den Bewertungswert an, um die Konsistenz zu verbessern.

  • Abgestimmtes Judge-Modell: Verwenden Sie ein abgestimmtes LLM als Judge-Modell.

Antworten umdrehen

Für PairwiseMetrics nimmt der Gen AI Evaluation Service Antworten für das Baseline-Modell und das Kandidatenmodell entgegen. Das Bewertungsmodell beurteilt, welche Antwort besser zu den Kriterien in der metric_prompt_template passt. Das Judge-Modell kann jedoch in bestimmten Einstellungen auf das Baseline- oder Kandidatenmodell ausgerichtet sein.

Um Verzerrungen in den Bewertungsergebnissen zu reduzieren, können Sie das Umkehren von Antworten aktivieren. Dabei wird bei der Hälfte der Aufrufe des Bewertungsmodells die Antwort des Baseline-Modells und des Kandidatenmodells mithilfe des Vertex AI SDK umgekehrt:

from vertexai.preview.evaluation import AutoraterConfig

pairwise_relevance_prompt_template = """
    # Instruction
    …

    ### Response A
    {baseline_model_response}

    ### Response B
    {candidate_model_response}
"""

my_pairwise_metric = PairwiseMetric(
    metric="my_pairwise_metric",
    metric_prompt_template=pairwise_relevance_prompt_template,
    candidate_response_field_name = "candidate_model_response",
    baseline_response_field_name = "baseline_model_response"
)


# Define an AutoraterConfig with flip_enabled
my_autorater_config = AutoraterConfig(flip_enabled=True)

# Define an EvalTask with autorater_config
flip_enabled_eval_result = EvalTask(
    dataset=EVAL_DATASET,
    metrics=[my_pairwise_metric],
    autorater_config=my_autorater_config,
).evaluate()

Multisampling

Bei der Bewertung kann das Bewertungsmodell eine gewisse Zufälligkeit in seinen Antworten aufweisen. Zusätzliches Sampling kann dazu beitragen, die inhärente Zufälligkeit des Judge-Modells zu reduzieren und konsistentere Ergebnisse zu erzielen.

Eine Erhöhung der Stichproben erhöht jedoch auch die Latenz für die Verarbeitung der Anfrage. Sie können den Wert für die Stichprobenanzahl mit AutoraterConfig auf eine Ganzzahl zwischen 1 und 32 aktualisieren. Wir empfehlen, den Standardwert sampling_count von 4 zu verwenden, um die beiden Faktoren Zufälligkeit und Latenz auszugleichen.

Mit dem Vertex AI SDK können Sie die Anzahl der Stichproben angeben, die für jede Anfrage ausgeführt werden:

from vertexai.preview.evaluation import AutoraterConfig

# Define customized sampling count in AutoraterConfig
autorater_config = AutoraterConfig(sampling_count=6)

# Run evaluation with the sampling count.
eval_result = EvalTask(
    dataset=EVAL_DATASET,
    metrics=[METRICS],
    autorater_config=autorater_config
).evaluate()

Abgestimmtes Judge-Modell

Wenn Sie gute Abstimmungsdaten für Ihren Bewertungsanwendungsfall haben, können Sie das Vertex AI SDK verwenden, um ein Gemini-Modell als Judge-Modell abzustimmen und das abgestimmte Modell für die Bewertung zu verwenden. Sie können ein abgestimmtes Modell als Judge-Modell über AutoraterConfig angeben:

from vertexai.preview.evaluation import {
   AutoraterConfig,
   PairwiseMetric,
   tune_autorater,
   evaluate_autorater,
}

# Tune a model to be the judge model. The tune_autorater helper function returns an AutoraterConfig with the judge model set as the tuned model.
autorater_config: AutoRaterConfig = tune_autorater(
    base_model="gemini-2.0-flash",
    train_dataset=f"{BUCKET_URI}/train/sft_train_samples.jsonl",
    validation_dataset=f"{BUCKET_URI}/val/sft_val_samples.jsonl",
    tuned_model_display_name=tuned_model_display_name,
)

# Alternatively, you can set up the judge model with an existing tuned model endpoint
autorater_config = AutoraterConfig(autorater_model=TUNED_MODEL)

# Use the tuned judge model
eval_result = EvalTask(
    dataset=EVAL_DATASET,
    metrics=[METRICS],
    autorater_config=autorater_config,
).evaluate()

Nächste Schritte