モデルベースの指標には、基準とユースケースに基づいて評価指標を生成するためのさまざまなカスタマイズ方法が用意されています。このページでは、理想的なユースケースに合わせてジャッジモデルを構成する方法��ついて説明します。
基本的な評価ワークフローについては、Gen AI Evaluation Service のクイックスタートをご覧ください。高度なジャッジモデルのカスタマイズシリーズには、次のページが含まれます。
- ジャッジモデルを評価する
- ジャッジモデルのカスタマイズに関するプロンプト
- ジャッジモデルを構成する(現在のページ)
概要
品質を向上させるためにジャッジモデルを構成するには、次のオプションがあります。
- システム指示: ジャッジモデルは、評価プロンプトを処理する前に一連の指示を処理できます。
- モデル構成を評価する:
- レスポンスの反転: ベースライン モデルと候補モデルのレスポンスを反転して、評価中の判定モデルのバイアスを取り除きます。
- マルチサンプリング: 評価スコアのために判定モデルを呼び出す回数を調整して、一貫性を高めます。
- チューニング済みの判定モデル: チューニング済みの LLM を判定モデルとして使用します。
システム指示
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
を使用して、ジャッジモデルをさらにカスタマイズできます。
レスポンスの反転: ベースライン モデルと候補モデルのレスポンスを反転して、評価中の判定モデルのバイアスを取り除きます。
マルチサンプリング: 評価スコアのために判定モデルを呼び出す回数を調整して、一貫性を高めます。
チューニング済みの判定モデル: チューニング済みの LLM を判定モデルとして使用します。
レスポンスの切り替え
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()