Évaluation rapide

Vous pouvez utiliser le SDK Vertex AI pour Python pour évaluer vos modèles de langage génératifs de manière automatisée.

Installez le SDK Vertex AI

Pour installer l'évaluation rapide à partir du SDK Vertex AI pour Python, exécutez la commande suivante :

pip install --upgrade google-cloud-aiplatform[rapid_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.

Créer une tâche d'évaluation

L'évaluation étant principalement basée sur les tâches avec les modèles d'IA générative, l'évaluation en ligne introduit l'abstraction des tâches d'évaluation pour faciliter les cas d'utilisation de l'évaluation. Pour obtenir des comparaisons équitables pour les modèles génératifs, vous pouvez généralement exécuter régulièrement des évaluations de modèles et des modèles de requêtes sur un ensemble de données d'évaluation et ses métriques associées. La classe EvalTask est conçue pour prendre en charge ce nouveau paradigme d'évaluation. En outre, EvalTask vous permet d'intégrer parfaitement Vertex AI Experiments, ce qui peut vous aider à suivre les paramètres et les résultats de chaque exécution d'évaluation. Vertex AI Experiments peut vous aider à gérer et à interpréter les résultats d'évaluation, ce qui vous permet de prendre des mesures plus rapidement. L'exemple suivant montre comment créer une instance de la classe EvalTask et exécuter une évaluation:

from vertexai.preview.evaluation import EvalTask

eval_task = EvalTask(
  dataset=DATASET,
  metrics=["bleu", "rouge_l_sum"],
  experiment=EXPERIMENT_NAME
)

Le paramètre metrics accepte une liste de métriques, ce qui permet l'évaluation simultanée de plusieurs métriques dans un seul appel d'évaluation.

Préparation des ensembles de données d'évaluation

Les ensembles de données sont transmis à une instance EvalTask en tant que DataFrame pandas, où chaque ligne représente un exemple d'évaluation distinct (appelé instance), et chaque colonne représente un paramètre d'entrée de métrique. Reportez-vous aux metrics pour connaître les entrées attendues par chaque métrique. Nous fournissons plusieurs exemples pour créer l'ensemble de données d'évaluation pour différentes tâches d'évaluation.

Évaluation des résumés

Créez un ensemble de données pour la synthèse par point avec les métriques suivantes:

  • summarization_quality
  • groundedness
  • fulfillment
  • summarization_helpfulness
  • summarization_verbosity

Compte tenu des paramètres d'entrée requis pour ces métriques, vous devez inclure les colonnes suivantes dans l'ensemble de données d'évaluation :

  • instruction
  • context
  • response

Dans cet exemple, nous avons deux instances de résumé. Créez les champs instruction et context en tant qu'entrées, qui sont requises par les évaluations des tâches de synthèse:

instructions = [
  # example 1
  "Summarize the text in one sentence.",
  # example 2
  "Summarize the text such that a five-year-old can understand.",
]

contexts = [
  # example 1
  """As part of a comprehensive initiative to tackle urban congestion and foster
sustainable urban living, a major city has revealed ambitious plans for an
extensive overhaul of its public transportation system. The project aims not
only to improve the efficiency and reliability of public transit but also to
reduce the city\'s carbon footprint and promote eco-friendly commuting options.
City officials anticipate that this strategic investment will enhance
accessibility for residents and visitors alike, ushering in a new era of
efficient, environmentally conscious urban transportation.""",
# example 2
  """A team of archaeologists has unearthed ancient artifacts shedding light on a
previously unknown civilization. The findings challenge existing historical
narratives and provide valuable insights into human history.""",
]

Si votre réponse LLM (la synthèse) est prête et que vous souhaitez effectuer une évaluation BYOP (Bring Your Own Prediction), vous pouvez créer votre entrée de réponse comme suit :

responses = [
  # example 1
  "A major city is revamping its public transportation system to fight congestion, reduce emissions, and make getting around greener and easier.",
  # example 2
  "Some people who dig for old things found some very special tools and objects that tell us about people who lived a long, long time ago! What they found is like a new puzzle piece that helps us understand how people used to live.",
]

Avec ces entrées, nous sommes prêts à construire notre ensemble de données d'évaluation et EvalTask.

eval_dataset = pd.DataFrame(
  {
    "instruction": instructions,
    "context":  contexts,
    "response":  responses,
  }
)

eval_task = EvalTask(
  dataset=eval_dataset,
  metrics=[
    'summarization_quality',
    'groundedness',
    'fulfillment',
    'summarization_helpfulness',
    'summarization_verbosity'
  ],
  experiment=EXPERIMENT_NAME
)

Évaluation de la génération de texte d'ordre général

Certaines métriques basées sur un modèle, telles que coherence, fluency et safety, n'ont besoin que de la réponse du modèle pour évaluer la qualité :

eval_dataset = pd.DataFrame({
  "response": ["""The old lighthouse, perched precariously on the windswept cliff,
had borne witness to countless storms. Its once-bright beam, now dimmed by time
and the relentless sea spray, still flickered with stubborn defiance."""]
})

  eval_task = EvalTask(
  dataset=eval_dataset,
  metrics=["coherence", "fluency", "safety"],
  experiment=EXPERIMENT_NAME
)

Évaluation basée sur le calcul

Toutefois, les métriques basées sur le calcul, telles que la correspondance exacte, le bleu et le rouge, comparent une réponse à une référence et requièrent donc à la fois des champs de réponse et de référence dans l'ensemble de données d'évaluation :

eval_dataset = pd.DataFrame({
  "response": ["The Roman Senate was filled with exuberance due to Pompey's defeat in Asia."],
  "reference": ["The Roman Senate was filled with exuberance due to successes against Catiline."],
})

eval_task = EvalTask(
  dataset=eval_dataset,
  metrics=["exact_match", "bleu", "rouge"],
  experiment=EXPERIMENT_NAME
)

Évaluation de l'utilisation des outils

Pour évaluer l'utilisation des outils, il vous suffit d'inclure la réponse et la référence dans l'ensemble de données d'évaluation.

eval_dataset = pd.DataFrame({
  "response": ["""{
    "content": "",
    "tool_calls":[{
      "name":"get_movie_info",
      "arguments": {"movie":"Mission Impossible", "time": "today 7:30PM"}
    }]
  }"""],
  "reference": ["""{
    "content": "",
    "tool_calls":[{
      "name":"book_tickets",
      "arguments":{"movie":"Mission Impossible", "time": "today 7:30PM"}
      }]
  }"""],
})

eval_task = EvalTask(
  dataset=eval_dataset,
  metrics=["tool_call_valid", "tool_name_match", "tool_parameter_key_match",
"tool_parameter_kv_match"],
  experiment=EXPERIMENT_NAME
)

Afficher les résultats de l'évaluation

Une fois que vous avez défini votre tâche d'évaluation, exécutez-la pour obtenir les résultats de l'évaluation, comme suit:

eval_result: EvalResult = eval_task.evaluate(
  model=MODEL,
  prompt_template=PROMPT_TEMPLATE
)

La classe EvalResult représente le résultat d'une exécution d'évaluation, qui inclut des métriques récapitulatives et une table de métriques avec une instance d'ensemble de données d'évaluation et les métriques par instance correspondantes. Définissez la classe comme suit:

@dataclasses.dataclass
class EvalResult:
  """Evaluation result.

  Attributes:
    summary_metrics: the summary evaluation metrics for an evaluation run.
    metrics_table: a table containing eval inputs, ground truth, and
      metrics per row.
  """
  summary_metrics: Dict[str, float]
  metrics_table: Optional[pd.DataFrame] = None

À l'aide de fonctions d'assistance, les résultats de l'évaluation peuvent être affichés dans le notebook Colab.

Qualité du résumé

Visualisations

Vous pouvez représenter des métriques récapitulatives dans un graphique en radar ou à barres à des fins de visualisation et de comparaison entre les résultats de différentes exécutions d'évaluation. Cette visualisation peut être utile pour évaluer différents modèles et différents modèles de requête.

Graphique en radar

Métriques des graphiques à barres

API d'évaluation rapide

Pour en savoir plus sur l'API d'évaluation rapide, consultez la page sur l'API d'évaluation rapide.

Comprendre les comptes de service

Les comptes de service permettent au service d'évaluation en ligne d'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 en ligne.

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-ENV-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

Étapes suivantes