ジャッジモデルを構成する

モデルベースの指標には、カスタマイズするためのさまざまなアプローチが用意されています。これにより、基準とユースケースに基づいて評価指標を生成できます。このページでは、理想的なユースケースに合わせて審査モデルを構成する方法について説明します。

基本的な評価ワークフローについては、Gen AI Evaluation Service のクイックスタートをご覧ください。高度な判定モデルのカスタマイズ シリーズには、次のページが含まれています。

  1. 審査員モデルを評価する
  2. 審査員モデルのカスタマイズのプロンプト
  3. 審査モデルを構成する(現在のページ)

概要

品質を向上させるために、次のオプションを使用して審査モデルを構成できます。

  • システム指示: 評価プロンプトを処理する前に、一連の指示を処理できます。
  • ジャッジモデルの構成:

システム指示

Gemini モデルは、システム指示を受け取ることができます。これは、モデルがプロンプトを処理する方法に影響を与える一連の指示です。モデルからコンテンツを初期化または生成するときにシステム指示を使用すると、ロールやペルソナ、コンテキスト情報、説明のスタイルやトーンなどのプロダクト レベルの動作を指定できます。通常、判定モデルは入力プロンプトよりもシステム指示の重要度を高く評価します。

システム指示をサポートするモデルの一覧については、サポートされているモデルをご覧ください。

次の Vertex AI SDK の例では、PointwiseMetric の指標レベルで system_instruction を追加します。

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()

PairwiseMetric でも同じ方法を使用できます。

審査モデルの構成

autorater_config を使用して、審査モデルをさらにカスタマイズできます。

レスポンスのフリップ

PairwiseMetrics の場合、Gen AI Evaluation Service はベースライン モデルと候補モデルのレスポンスを受け取ります。判定モデルは、metric_prompt_template の基準により適合するレスポンスを評価します。ただし、特定の環境では、判定モデルがベースライン モデルまたは候補モデルに偏る可能性があります。

評価結果のバイアスを減らすには、レスポンス フリップを有効にします。これにより、ジャッジモデルへの呼び出しの半分で、Vertex AI SDK を使用してベースライン モデルと候補モデルのレスポンスがフリップされます。

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()

マルチサンプリング

評価を行う際、判定モデルのレスポンスにランダム性が現れることがあります。追加のサンプリングは、ジャッジモデルの固有のランダム性を打ち消し、より一貫した結果につながる可能性があります。

ただし、サンプリングを増やすと、リクエストの完了までのレイテンシも増加します。AutoraterConfig を使用して、サンプリング数の値を 1 ~ 32 の整数に更新できます。ランダム性とレイテンシの 2 つの要素のバランスを取るために、デフォルトの sampling_count 値 4 を使用することをおすすめします。

Vertex AI SDK を使用して、リクエストごとに実行されるサンプル数を指定できます。

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()

チューニング済み判定モデル

評価ユースケースに適したチューニング データがある場合は、Vertex AI SDK を使用して Gemini モデルを審査モデルとしてチューニングし、チューニング済みモデルを評価に使用できます。AutoraterConfig を使用して、チューニングされたモデルを審査モデルとして指定できます。

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()

次のステップ