Exécuter une évaluation

Vous pouvez utiliser le module d'évaluation de l'IA générative du SDK Vertex AI pour Python pour évaluer par programmation vos modèles et applications de langage génératif avec l'API Gen AI Evaluation Service. Cette page vous explique comment exécuter des évaluations avec le SDK Vertex AI.

Avant de commencer

Installez le SDK Vertex AI

Pour installer le module d'évaluation de l'IA générative à partir du SDK Vertex AI pour Python, exécutez la commande suivante :

!pip install -q google-cloud-aiplatform[evaluation]

Pour en savoir plus, consultez la section Installer le SDK Vertex AI pour Python.

Authentifier le SDK Vertex AI

Après avoir installé le SDK Vertex AI pour Python, vous devez vous authentifier. Les rubriques suivantes expliquent comment s'authentifier auprès du SDK Vertex AI si vous travaillez en local et dans Colaboratory :

  • Si vous développez en local, configurez les identifiants par défaut de l'application dans votre environnement local:

    1. Installez Google Cloud CLI, puis initialisez-la en exécutant la commande suivante :

      gcloud init
      
    2. Créez des identifiants d'authentification locaux pour votre compte Google :

      gcloud auth application-default login
      

      Un écran de connexion s'affiche. Une fois que vous êtes connecté, vos identifiants sont stockés dans le fichier d'identifiants local utilisé par ADC. Pour en savoir plus sur l'utilisation des ADC dans un environnement local, consultez la page Environnement de développement local.

  • Si vous travaillez dans Colaboratory, exécutez la commande suivante dans une cellule Colab pour vous authentifier :

    from google.colab import auth
    auth.authenticate_user()
    

    Cette commande ouvre une fenêtre dans laquelle vous pouvez terminer l'authentification.

Comprendre les comptes de service

Le compte de service est utilisé par le service d'évaluation de l'IA générative pour obtenir des prédictions auprès du service de prédiction en ligne pour les métriques d'évaluation basées sur un modèle. Ce compte de service est automatiquement provisionné lors de la première requête adressée au service d'évaluation Gen AI Evaluation Service.

Nom Description Adresse e-mail Rôle
Agent de service d'évaluation rapide Vertex AI Compte de service utilisé pour obtenir des prédictions pour l'évaluation basée sur un modèle. service-PROJECT_NUMBER@gcp-sa-vertex-eval.iam.gserviceaccount.com roles/aiplatform.rapidevalServiceAgent

Les autorisations associées à l'agent de service d'évaluation rapide sont les suivantes:

Rôle Autorisations
Agent de service d'évaluation rapide Vertex AI (roles/aiplatform.rapidevalServiceAgent) aiplatform.endpoints.predict

Exécuter votre évaluation

Utilisez la classe EvalTask pour exécuter des évaluations dans les cas d'utilisation suivants :

Classe EvalTask

La classe EvalTask vous aide à évaluer des modèles et des applications en fonction de tâches spécifiques. Pour effectuer des comparaisons équitables entre les modèles génératifs, vous devez généralement évaluer à plusieurs reprises de nombreux modèles et modèles de requêtes sur un ensemble de données d'évaluation fixe à l'aide de métriques spécifiques. Il est également important d'évaluer plusieurs métriques simultanément dans une seule exécution d'évaluation.

EvalTask s'intègre également aux tests Vertex AI Experiments pour vous aider à suivre les configurations et les résultats de chaque exécution d'évaluation. Vertex AI Experiments vous aide à gérer et à interpréter les résultats d'évaluation, ce qui vous permet de prendre des décisions éclairées.

L'exemple suivant montre comment instancier la classe EvalTask et exécuter une évaluation :

from vertexai.evaluation import (
  EvalTask,
  PairwiseMetric,
  PairwiseMetricPromptTemplate,
  PointwiseMetric,
  PointwiseMetricPromptTemplate,
  MetricPromptTemplateExamples
)

eval_task = EvalTask(
  dataset=DATASET,
  metrics=[METRIC1, METRIC2, METRIC3],
  experiment=EXPERIMENT_NAME,
)

eval_result = eval_task.evaluate(
  model=MODEL,
  prompt_template=PROMPT_TEMPLATE,
  experiment_run=EXPERIMENT_RUN, 
)

Exécuter l'évaluation avec des métriques basées sur un modèle

Pour les métriques basées sur un modèle, utilisez les classes PointwiseMetric et PairwiseMetric pour définir des métriques adaptées à vos critères spécifiques. Exécutez des évaluations à l'aide des options suivantes :

Utiliser des exemples de métriques basées sur un modèle

Vous pouvez utiliser directement la constante intégrée Metric Prompt Template Examples dans le SDK Vertex AI. Vous pouvez également les modifier et les intégrer dans l'interface de définition de métriques en forme libre.

Pour obtenir la liste complète des exemples de modèles de requête de métrique couvrant la plupart des cas d'utilisation clés, consultez la page Modèles de requête de métrique.

L'exemple du SDK Vertex AI suivant montre comment utiliser la classe MetricPromptTemplateExamples pour définir vos métriques :

# View all the available examples of model-based metrics
MetricPromptTemplateExamples.list_example_metric_names()

# Display the metric prompt template of a specific example metric 
print(MetricPromptTemplateExamples.get_prompt_template('fluency'))

# Use the pre-defined model-based metrics directly
eval_task = EvalTask(
  dataset=EVAL_DATASET, 
  metrics=[MetricPromptTemplateExamples.Pointwise.FLUENCY], 
)

eval_result = eval_task.evaluate( 
  model=MODEL,
)

Utiliser une interface modélisée de métrique basée sur un modèle

Personnalisez vos métriques en remplissant des champs tels que Criteria et Rating Rubrics à l'aide des classes PointwiseMetricPromptTemplate et PairwiseMetricPromptTemplate du SDK Vertex AI. Une valeur par défaut est attribuée à certains champs, tels que Instruction, si vous ne fournissez aucune entrée.

Vous pouvez éventuellement spécifier input_variables, qui est une liste de champs de saisie utilisés par le modèle de requête de métrique pour générer des résultats d'évaluation basés sur un modèle. Par défaut, la colonne response du modèle est incluse pour les métriques par point, et les colonnes response et baseline_model_response du modèle candidat sont incluses pour les métriques par paire.

Pour en savoir plus, consultez la section "Structurer un modèle de requête de métrique" dans Modèles de requête de métrique.

# Define a pointwise metric with two custom criteria
pointwise_metric_prompt_template = PointwiseMetricPromptTemplate(
  criteria={
    "fluency": "Sentences flow smoothly and are easy to read, avoiding awkward phrasing or run-on sentences. Ideas and sentences connect logically, using transitions effectively where needed.", 
    "entertaining": "Short, amusing text that incorporates emojis, exclamations and questions to convey quick and spontaneous communication and diversion.",
  },
  rating_rubric={
    "1": "The response performs well on both criteria.",
    "0": "The response is somewhat aligned with both criteria",
    "-1": "The response falls short on both criteria",
  },
  input_variables=["prompt"],
)

custom_text_quality = PointwiseMetric(
   metric="custom_text_quality",
   metric_prompt_template=pointwise_metric_prompt_template,
)

# Display the serialized metric prompt template  
print(custom_text_quality.metric_prompt_template)

# Run evaluation using the defined metric
eval_task = EvalTask(
  dataset=EVAL_DATASET, 
  metrics=[custom_text_quality],
)
eval_result = eval_task.evaluate( 
  model=MODEL, 
)

Utiliser l'interface du SDK de forme libre de métrique basée sur un modèle

Pour personnaliser plus facilement le modèle de requête de métrique, vous pouvez définir une métrique directement à l'aide de l'interface de forme libre, qui accepte une entrée sous forme de chaîne directe.

# Define a pointwise multi-turn chat quality metric 
pointwise_chat_quality_metric_prompt = """Evaluate the AI's contribution to a meaningful conversation, considering coherence, fluency, groundedness, and conciseness.
 Review the chat history for context. Rate the response on a 1-5 scale, with explanations for each criterion and its overall impact.

# Conversation History
{history}

# Current User Prompt
{prompt}

# AI-generated Response
{response}
"""

freeform_multi_turn_chat_quality_metric = PointwiseMetric(
  metric="multi_turn_chat_quality_metric",
  metric_prompt_template=pointwise_chat_quality_metric_prompt,
)

# Run evaluation using the defined metric
eval_task = EvalTask(
  dataset=EVAL_DATASET, 
  metrics=[freeform_multi_turn_chat_quality_metric], 
)
eval_result = eval_task.evaluate( 
  model=MODEL,
)

Exécuter l'évaluation avec des métriques basées sur le calcul

Vous pouvez utiliser des métriques basées sur le calcul de façon autonome ou avec des métriques basées sur un modèle.

# Combine computation-based metrics "ROUGE" and "BLEU" with model-based metrics
eval_task = EvalTask(
  dataset=EVAL_DATASET, 
  metrics=["rouge_l_sum", "bleu", custom_text_quality],
)
eval_result = eval_task.evaluate( 
  model=MODEL,
)

Personnalisation supplémentaire des métriques

Si vous devez personnaliser davantage vos métriques, par exemple en choisissant un autre modèle d'évaluation pour les métriques basées sur un modèle, ou en définissant une nouvelle métrique basée sur le calcul, vous pouvez utiliser la classe CustomMetric dans le SDK Vertex AI. Pour en savoir plus, consultez les notebooks suivants :

Étape suivante