Les métriques basées sur un modèle offrent différentes approches pour personnaliser et générer des métriques d'évaluation en fonction de vos critères et cas d'utilisation. Cette page explique comment configurer votre modèle de juge pour votre cas d'utilisation idéal.
Pour le workflow d'évaluation de base, consultez le guide de démarrage rapide de Gen AI Evaluation Service. La série sur la personnalisation avancée des modèles de juges comprend les pages suivantes :
- Évaluer un modèle de juge
- Personnalisation du modèle de juge à l'aide de requêtes
- Configurer un modèle de juge (page actuelle)
Présentation
Vous disposez des options suivantes pour configurer votre modèle de juge et améliorer la qualité :
- Instructions système : le modèle évaluateur peut traiter un ensemble d'instructions avant de traiter les requêtes d'évaluation.
- Évaluer les configurations de modèle :
- Inversion des réponses : inversez les réponses du modèle de référence et du modèle candidat pour réduire le biais du modèle évaluateur lors de l'évaluation.
- Échantillonnage multiple : ajustez le nombre de fois où le modèle d'évaluation est appelé pour le score d'évaluation afin d'améliorer la cohérence.
- Modèle de juge réglé : utilisez un LLM réglé comme modèle de juge.
Instructions système
Les modèles Gemini peuvent recevoir des instructions système, qui sont un ensemble d'instructions qui ont un impact sur la façon dont le modèle traite les requêtes. Vous pouvez utiliser des instructions système lorsque vous initialisez ou générez du contenu à partir d'un modèle pour spécifier le comportement au niveau du produit, comme les rôles ou les personas, les informations contextuelles, ainsi que le style et le ton des explications. Le modèle d'évaluation accorde généralement plus d'importance aux instructions système qu'aux requêtes d'entrée.
Pour obtenir la liste des modèles compatibles avec les instructions système, consultez Modèles compatibles.
L'exemple suivant utilisant le SDK Vertex AI ajoute system_instruction
au niveau de la métrique pour PointwiseMetric
:
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()
Vous pouvez utiliser la même approche avec PairwiseMetric
.
Configuration du modèle de jugement
Vous pouvez personnaliser davantage le modèle de juge à l'aide de autorater_config
:
Inversion des réponses : inversez les réponses du modèle de référence et du modèle candidat pour réduire le biais du modèle évaluateur lors de l'évaluation.
Échantillonnage multiple : ajustez le nombre de fois où le modèle d'évaluation est appelé pour le score d'évaluation afin d'améliorer la cohérence.
Modèle de juge réglé : utilisez un LLM réglé comme modèle de juge.
Inversion de la réponse
Pour PairwiseMetrics
, le service d'évaluation de l'IA générative reçoit les réponses du modèle de référence et du modèle candidat. Le modèle d'évaluation détermine quelle réponse correspond le mieux aux critères de metric_prompt_template
. Toutefois, le modèle de juge peut être biaisé en faveur du modèle de référence ou du modèle candidat dans certains paramètres.
Pour réduire les biais dans les résultats de l'évaluation, vous pouvez activer l'inversion des réponses. La moitié des appels au modèle d'évaluation inverse la réponse du modèle de référence et du modèle candidat à l'aide du SDK Vertex AI :
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()
Échantillonnage multiple
Lors de l'évaluation, le modèle d'évaluation peut afficher une certaine aléatoire dans ses réponses. Un échantillonnage supplémentaire peut aider à annuler le caractère aléatoire inhérent au modèle de juge et à obtenir des résultats plus cohérents.
Toutefois, l'augmentation de l'échantillonnage augmente également la latence pour traiter la demande. Vous pouvez mettre à jour la valeur du nombre d'échantillons à l'aide de AutoraterConfig
en saisissant un nombre entier compris entre 1 et 32. Nous vous recommandons d'utiliser la valeur par défaut sampling_count
de 4 pour équilibrer les deux facteurs d'aléatoire et de latence.
À l'aide du SDK Vertex AI, vous pouvez spécifier le nombre d'échantillons exécutés pour chaque requête :
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()
Modèle de juge réglé
Si vous disposez de bonnes données de réglage pour votre cas d'utilisation d'évaluation, vous pouvez utiliser le SDK Vertex AI pour régler un modèle Gemini en tant que modèle évaluateur et utiliser le modèle réglé pour l'évaluation. Vous pouvez spécifier un modèle ajusté comme modèle de juge via 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()