モデルベースの指標の場合、Gen AI Evaluation Service は、判定モデルとして構成され、プロンプトが設定された Gemini などの基盤モデルを使用してモデルを評価します。判定モデルの詳細については、高度な判定モデルのカスタマイズ シリーズで、判定モデルの評価と構成に使用できる追加のツールについて説明しています。
基本的な評価ワークフローについては、Gen AI Evaluation Service のクイックスタートをご覧ください。高度な判定モデルのカスタマイズ シリーズは、次のページから構成されています。
- 判定モデルを評価する(現在のページ)
- プロンプトによる判定モデルのカスタマイズ
- 判定モデルを構成する
概要
大規模言語モデル(LLM)の評価に人間の判断を使用すると、費用と時間がかかる可能性があります。判定モデルを使用すると、LLM をよりスケーラブルに評価できます。Gen AI Evaluation Service は、デフォルトで構成済みの Gemini 2.0 Flash モデルを判定モデルとして使用し、カスタマイズ可能なプロンプトを使用して、さまざまなユースケースでモデルを評価します。
以降のセクションでは、理想的なユースケースに合わせてカスタマイズした判定モデルを評価する方法について説明します。
データセットを準備する
モデルベースの指標を評価するには、人間の評価を正解として含む評価データセットを準備します。目標は、モデルベースの指標のスコアと人間の評価を比較し、モデルベースの指標がユースケースに最適な品質を備えているかどうかを確認することです。
PointwiseMetric
の場合は、モデルベースの指標によって生成された{metric_name}/score
結果のグラウンド トゥルースとして、データセット内の{metric_name}/human_rating
列を準備します。PairwiseMetric
の場合は、モデルベースの指標によって生成された{metric_name}/pairwise_choice
結果のグラウンド トゥルースとして、データセット内の{metric_name}/human_pairwise_choice
列を準備します。
次のデータセット スキーマを使用します。
モデルベースの指標 | 人間の評価列 |
---|---|
PointwiseMetric |
{metric_name}/human_rating |
PairwiseMetric |
{metric_name}/human_pairwise_choice |
利用可能な指標
2 つのスコア(0 と 1 など)のみを返す PointwiseMetric
と、2 つの優先度タイプ(モデル A またはモデル B)のみを持つ PairwiseMetric
の場合、次の指標を使用できます。
指標 | 計算 |
---|---|
2 クラスのバランス精度 | \( (1/2)*(True Positive Rate + True Negative Rate) \) |
2 クラスのバランス F1 スコア | \( ∑_{i=0,1} (cnt_i/sum) * f1(class_i) \) |
混同行列 | confusion_matrix フィールドと confusion_matrix_labels フィールドを使用して、真陽性率(TPR)、真陰性率(TNR)、偽陽性率(FPR)、偽陰性率(FNR)などの指標を計算します。たとえば、次の結果が得られます。 confusion_matrix = [[20, 31, 15], [10, 11, 3], [ 3, 2, 2]] confusion_matrix_labels = ['BASELINE', 'CANDIDATE', 'TIE'] BASELINE | CANDIDATE | TIE BASELINE. 20 31 15 CANDIDATE. 10 11 3 TIE. 3 2 2 | |
2 つ以上のスコア(1 ~ 5 など)を返す PointwiseMetric
と、2 つ以上の優先度タイプ(モデル A、モデル B、引き分け)を持つ PairwiseMetric
の場合、次の指標を使用できます。
指標 | 計算 |
---|---|
複数クラスのバランス精度 | \( (1/n) *∑_{i=1...n}(recall(class_i)) \) |
複数クラスのバランス F1 スコア | \( ∑_{i=1...n} (cnt_i/sum) * f1(class_i) \) |
ここで
\( f1 = 2 * precision * recall / (precision + recall) \)
\( precision = True Positives / (True Positives + False Positives) \)
\( recall = True Positives / (True Positives + False Negatives) \)
\( n \) : クラスの数
\( cnt_i \) : グラウンド トゥルース データ内の \( class_i \) の数
\( sum \): グラウンド トゥルース データ内の要素の数
他の指標を計算するには、オープンソース ライブラリを使用できます。
モデルベースの指標を評価する
次の例では、流暢さのカスタム定義を使用してモデルベースの指標を更新し、指標の品質を評価します。
from vertexai.preview.evaluation import {
AutoraterConfig,
PairwiseMetric,
}
from vertexai.preview.evaluation.autorater_utils import evaluate_autorater
# Step 1: Prepare the evaluation dataset with the human rating data column.
human_rated_dataset = pd.DataFrame({
"prompt": [PROMPT_1, PROMPT_2],
"response": [RESPONSE_1, RESPONSE_2],
"baseline_model_response": [BASELINE_MODEL_RESPONSE_1, BASELINE_MODEL_RESPONSE_2],
"pairwise_fluency/human_pairwise_choice": ["model_A", "model_B"]
})
# Step 2: Get the results from model-based metric
pairwise_fluency = PairwiseMetric(
metric="pairwise_fluency",
metric_prompt_template="please evaluate pairwise fluency..."
)
eval_result = EvalTask(
dataset=human_rated_dataset,
metrics=[pairwise_fluency],
).evaluate()
# Step 3: Calibrate model-based metric result and human preferences.
# eval_result contains human evaluation result from human_rated_dataset.
evaluate_autorater_result = evaluate_autorater(
evaluate_autorater_input=eval_result.metrics_table,
eval_metrics=[pairwise_fluency]
)