对于基于模型的指标,Gen AI Evaluation Service 会使用已配置并提示为评判模型的基础模型(例如 Gemini)来评估您的模型。如果您想详细了解评判模型,请参阅“高级评判模型自定义系列”,其中介绍了可用于评估和配置评判模型的更多工具。
如需了解基本的评估工作流,请参阅 Gen AI Evaluation Service 快速入门。“高级评判模型自定义系列”包含以下页面:
- 评估评判模型(当前页面)
- 评判模型自定义之提示工程
- 配置评判模型
概览
使用人工评判员来评估大语言模型 (LLM) 可能成本很高且非常耗时。而使用评判模型则是一种扩缩能力更强的 LLM 评估方法。 Gen AI Evaluation Service 默认使用经过配置的 Gemini 2.0 Flash 模型作为评判模型,并提供可自定义的提示,以便您针对各种应用场景评估模型。
以下部分介绍如何针对理想的应用场景评估自定义评判模型。
准备数据集
如要评估基于模型的指标,您需要准备一个包含人工评分作为标准答案的评估数据集。目标是将通过基于模型的指标得到的评分与人工评分进行对比,以此判断基于模型的指标是否能提供适合您应用场景的理想质量。
对于
PointwiseMetric
,请准备数据集中的{metric_name}/human_rating
列,作为基于模型的指标生成的{metric_name}/score
结果的标准答案。对于
PairwiseMetric
,请准备数据集中的{metric_name}/human_pairwise_choice
列,作为基于模型的指标生成的{metric_name}/pairwise_choice
结果的标准答案。
使用以下数据集架构:
基于模型的指标 | 人工评分列 |
---|---|
PointwiseMetric |
{metric_name}/human_rating |
PairwiseMetric |
{metric_name}/human_pairwise_choice |
可用指标
对于仅返回 2 种得分(例如 0 和 1)的 PointwiseMetric
以及仅具有 2 种偏好类型(模型 A 或模型 B)的 PairwiseMetric
,有以下指标可用:
指标 | 计算 |
---|---|
二元分类平衡准确率 | \( (1/2)*(True Positive Rate + True Negative Rate) \) |
二元分类平衡 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]
)