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