Configurer un modèle de juge

Les métriques basées sur un modèle offrent différentes approches pour personnaliser et vous aider à générer des métriques d'évaluation en fonction de vos critères et de vos cas d'utilisation. Cette page explique comment configurer votre modèle de juge pour votre cas d'utilisation idéal.

Pour connaître 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 du modèle de juge comprend les pages suivantes :

  1. Évaluer un modèle de juge
  2. Configurer un modèle de juge (page actuelle)

Présentation

Vous disposez des options suivantes pour configurer votre modèle de juge afin d'améliorer la qualité :

  • Instructions système : le modèle de juge peut traiter un ensemble d'instructions avant de traiter les prompts d'évaluation.
  • Configurations du modèle juge :
    • 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 de jugement lors de l'évaluation.
    • Échantillonnage multiple : ajustez le nombre de fois où le modèle de juge 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 accepter des instructions système, qui sont un ensemble d'instructions ayant un impact sur la façon dont le modèle traite les prompts. Vous pouvez utiliser des instructions système lors de l'initialisation ou de la génération de contenu à partir d'un modèle pour spécifier un comportement au niveau du produit, comme des rôles ou des personas, des 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.

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 juge

Vous pouvez personnaliser davantage le modèle de juge via 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 de jugement lors de l'évaluation.

  • Échantillonnage multiple : ajustez le nombre d'appels au modèle d'évaluation 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 Gen AI Evaluation Service prend en compte 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 du 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 d'évaluation, vous pouvez activer l'inversion des réponses. Dans ce cas, 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()

Multi-échantillonnage

Lors de l'évaluation, le modèle d'évaluation peut présenter un certain caractère aléatoire dans ses réponses. Un échantillonnage supplémentaire peut aider à éliminer le caractère aléatoire inhérent au modèle de juge et à obtenir des résultats plus cohérents.

Cependant, l'augmentation de l'échantillonnage augmente également la latence de traitement de la requête. Vous pouvez modifier la valeur du nombre d'échantillonnages à l'aide de AutoraterConfig pour la définir sur un entier compris entre 1 et 32. Nous vous recommandons d'utiliser la valeur sampling_count par défaut de 4 pour équilibrer les deux facteurs de hasard et de latence.

Le SDK Vertex AI vous permet de 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 de juge et utiliser le modèle réglé pour l'évaluation. Vous pouvez spécifier un modèle réglé 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()

Étapes suivantes