Exécuter le pipeline AutoSxS pour effectuer une évaluation par paire basée sur un modèle

Cette page explique comment effectuer une évaluation basée sur un modèle par paire à l'aide d'AutoSxS, un outil qui s'exécute via le service de pipeline d'évaluation. Nous vous expliquons comment utiliser AutoSxS via l'API Vertex AI, le SDK Vertex AI pour Python ou la console Google Cloud.

AutoSxS

AutoSxS (Automatic side-to-side) est un outil d'évaluation basé sur un modèle par paire qui s'exécute via le service de pipeline d'évaluation. AutoSxS peut être utilisé pour évaluer les performances des modèles d'IA générative dans Vertex AI Model Registry ou des prédictions prégénérées, ce qui lui permet d'accepter des modèles de fondation de Vertex AI, des modèles d'IA générative ajustés et des modèles de langage tiers. AutoSxS utilise un outil d'évaluation automatique pour choisir le modèle qui répond le mieux à une requête. Il est disponible à la demande et évalue les modèles de langage en offrant des performances comparables à celles des évaluateurs humains.

L'outil d'évaluation automatique

De manière générale, le schéma montre comment AutoSxS compare les prédictions des modèles A et B à celles d'un troisième modèle, l'outil d'évaluation automatique.

Présentation du fonctionnement d'AutoSxS

Les modèles A et B reçoivent des requêtes de commande d'entrée, et chaque modèle génère des réponses envoyées à l'évaluateur. Tout comme un évaluateur humain, un évaluateur est un modèle de  langage qui évalue la qualité des réponses du modèle en fonction d'une requête d'inférence d'origine. Avec AutoSxS, l'outil d'évaluation automatique compare la qualité de deux réponses des modèles en fonction de leurs instructions d'inférence, à l'aide d'un ensemble de critères. Les critères permettent de déterminer quel modèle a enregistré les meilleures performances en comparant les résultats du modèle A à ceux du modèle B. L'outil d'évaluation automatique génère les préférences de réponse sous forme de métriques agrégées et génère des explications sur les préférences et des scores de confiance pour chaque exemple. Pour en savoir plus, consultez le tableau des jugements.

Modèles compatibles

AutoSxS est compatible avec l'évaluation de n'importe quel modèle lorsque des prédictions prégénérées sont fournies. AutoSxS permet également de générer automatiquement des réponses pour tout modèle du registre de modèles Vertex AI compatible avec la prédiction par lot sur Vertex AI.

Si votre modèle de texte n'est pas compatible avec le registre de modèles Vertex AI, AutoSxS accepte également les prédictions prégénérées stockées au format JSONL dans Cloud Storage ou une table BigQuery. Pour en savoir plus sur les tarifs, consultez la section Génération de texte.

Tâches et critères disponibles

AutoSxS est compatible avec l'évaluation des modèles pour les tâches de synthèse et de questions-réponses. Les critères d'évaluation sont prédéfinis pour chaque tâche, ce qui rend l'évaluation du langage plus objectif et améliore la qualité de la réponse.

Les critères sont listés par tâche.

Synthèse

La tâche summarization a une limite de jetons de 4 096 entrées.

La liste des critères d'évaluation pour summarization est la suivante :

Critères
1. Suit les instructions Dans quelle mesure la réponse du modèle démontre-elle la compréhension de l'instruction de la requête ?
2. Grounded La réponse n'inclut-elle que les informations du contexte d'inférence et les instructions d'inférence ?
3. Complet Dans quelle mesure le modèle capture-t-il les détails clés ?
4. Aperçu Le résumé est-il détaillé ? Inclut-il un langage recherché ? Est-il trop long ?

Question réponse

La tâche question_answering a une limite de jetons de 4 096 entrées.

La liste des critères d'évaluation pour question_answering est la suivante :

Critères
1. Répond entièrement à la question La réponse répond entièrement à la question.
2. Grounded La réponse n'inclut-elle que les informations du contexte de l'instruction et les instructions d'inférence ?
3. Pertinence Le contenu de la réponse est-il lié à la question ?
4. Complet Dans quelle mesure le modèle capture-t-il les détails clés de la question ?

Préparer l'ensemble de données d'évaluation pour AutoSxS

Cette section détaille les données que vous devez fournir dans votre ensemble de données d'évaluation AutoSxS et les bonnes pratiques pour la création de l'ensemble de données. Les exemples doivent refléter les entrées réelles que vos modèles peuvent rencontrer en production et mieux différencier le comportement de vos modèles opérationnels.

Format de l'ensemble de données

AutoSxS accepte un seul ensemble de données d'évaluation avec un schéma flexible. L'ensemble de données peut être une table BigQuery ou stocké en tant que JSON Lines dans Cloud Storage.

Chaque ligne de l'ensemble de données d'évaluation représente un seul exemple, et les colonnes sont l'un des éléments suivants :

  • Colonnes d'identifiants : permettent d'identifier chaque exemple unique.
  • Colonnes de données : permettent de remplir des modèles de requête. Consultez la section Paramètres de requête.
  • Prédictions prégénérées : prédictions effectuées par le même modèle à l'aide de la même requête. L'utilisation de prédictions prégénérées permet d'économiser du temps et des ressources.
  • Préférences humaines de vérité terrain : permet de comparer AutoSxS avec vos données de vérité terrain de préférence lorsque les prédictions pré-générées sont fournies pour les deux modèles.

Voici un exemple d'ensemble de données d'évaluation dans lequel context et question sont des colonnes de données, et où model_b_response contient des prédictions prégénérées.

context question model_b_response
Certains peuvent penser que l'acier est le matériau le plus dur, ou le titane, mais le diamant est en fait le matériau le plus dur. Quel est le matériau le plus dur ? Le diamant est le matériau le plus dur. Il est plus dur que l'acier ou le titane.

Pour en savoir plus sur l'appel d'AutoSxS, consultez la page Évaluer le modèle. Pour en savoir plus sur la longueur des jetons, consultez la section Tâches et critères compatibles. Pour importer vos données dans Cloud Storage, consultez la page Importer un ensemble de données d'évaluation dans Cloud Storage.

Paramètres de requête

De nombreux modèles de langage utilisent des paramètres de requête comme entrées au lieu d'une seule chaîne de requête. Par exemple, chat-bison prend plusieurs paramètres de requête (messages, exemples, contexte) qui constituent des parties de la requête. Cependant, text-bison ne dispose que d'un seul paramètre de requête, appelé requête, qui contient la requête complète.

Nous décrivons comment spécifier de manière flexible les paramètres de requête de modèle au moment de l'inférence et de l'évaluation. AutoSxS vous permet d'appeler des modèles de langage avec différentes entrées attendues à l'aide de paramètres de requête modélisés.

Inférence

Si l'un des modèles ne dispose pas de prédictions prégénérées, AutoSxS utilise la prédiction par lot Vertex AI pour générer des réponses. Les paramètres de requête de chaque modèle doivent être spécifiés.

Dans AutoSxS, vous pouvez fournir une seule colonne de l'ensemble de données d'évaluation en tant que paramètre de requête.

{'some_parameter': {'column': 'my_column'}}

Vous pouvez également définir des modèles en utilisant les colonnes de l'ensemble de données d'évaluation sous forme de variables pour spécifier les paramètres de requête :

{'some_parameter': {'template': 'Summarize the following: {{ my_column }}.'}}

Lorsqu'ils fournissent des paramètres de requête de modèle pour l'inférence, les utilisateurs peuvent utiliser le mot clé default_instruction protégé en tant qu'argument de modèle, qui est remplacé par l'instruction d'inférence par défaut pour la tâche donnée :

model_prompt_parameters = {
        'prompt': {'template': '{{ default_instruction }}: {{ context }}'},
}

Si vous générez des prédictions, indiquez les paramètres de requête du modèle et une colonne de sortie. Consultez les exemples suivants :

Gemini

Pour les modèles Gemini, les clés des paramètres d'invite du modèle sont contents (obligatoire) et system_instruction (facultatif), qui correspondent au schéma du corps de requête Gemini.

model_a_prompt_parameters={
    'contents': {
        'column': 'context'
    },
    'system_instruction': {'template': '{{ default_instruction }}'},
},

text-bison

Par exemple, text-bison utilise "invite de commande" pour l'entrée et "contenu" pour la sortie. Procédez comme suit :

  1. Identifier les entrées et les sorties requises par les modèles évalués.
  2. Définissez les entrées en tant que paramètres de requête de modèle.
  3. Transmettez le résultat à la colonne de réponse.
model_a_prompt_parameters={
    'prompt': {
        'template': {
            'Answer the following question from the point of view of a college professor: {{ context }}\n{{ question }}'
        },
    },
},
response_column_a='content',  # Column in Model A response.
response_column_b='model_b_response',  # Column in eval dataset.

Évaluation

De la même façon que vous devez fournir des paramètres de requête pour l'inférence, vous devez également fournir des paramètres de requête pour l'évaluation. L'outil d'évaluation automatique nécessite les paramètres de requête suivants :

Paramètre de requête de l'outil d'évaluation automatique Configurable par l'utilisateur ? Description Exemple
Instructions pour l'outil d'évaluation automatique Non Instructions calibrées décrivant les critères que l'outil d'évaluation automatique doit utiliser pour évaluer les réponses données. Choisissez la réponse qui répond à la question et suivez au mieux les instructions.
Instruction d'inférence Oui Description de la tâche que chaque modèle candidat doit effectuer. Répondez avec précision à la question suivante : quel est le matériau le plus dur ?
Contexte d'inférence Oui Contexte supplémentaire pour la tâche en cours d'exécution. Alors que le titane et le diamant sont tous deux plus durs que le cuivre, le diamond a une note de dureté de 98, tandis que celle du titane est de 36. Une note élevée signifie une dureté plus élevée.
Réponses No1 Paire de réponses à évaluer, une pour chaque modèle candidat. Diamant

1 Vous ne pouvez configurer le paramètre de requête que via des réponses prégénérées.

Exemple de code utilisant les paramètres :

autorater_prompt_parameters={
    'inference_instruction': {
        'template': 'Answer the following question from the point of view of a college professor: {{ question }}.'
    },
    'inference_context': {
        'column': 'context'
    }
}

Les modèles A et B peuvent comporter des instructions d'inférence et un contexte différents, que les mêmes informations soient fournies ou non. Cela signifie que l'outil d'évaluation automatique utilise une instruction d'inférence distincte, mais une seule instruction contextuelle.

Exemple d'ensemble de données d'évaluation

Cette section fournit un exemple d'ensemble de données d'évaluation de tâches de questions-réponses, y compris des prédictions prégénérées pour le modèle B. Dans cet exemple, AutoSxS n'effectue l'inférence que pour le modèle A. Nous fournissons une colonne id pour différencier les exemples associés à la même question et au même contexte.

{
 "id": 1,
 "question": "What is the hardest material?",
  "context": "Some might think that steel is the hardest material, or even titanium. However, diamond is actually the hardest material.",
  "model_b_response": "Diamond is the hardest material. It is harder than steel or titanium."
}
{
  "id": 2,
  "question": "What is the highest mountain in the world?",
  "context": "K2 and Everest are the two tallest mountains, with K2 being just over 28k feet and Everest being 29k feet tall.",
  "model_b_response": "Mount Everest is the tallest mountain, with a height of 29k feet."
}
{
  "id": 3,
  "question": "Who directed The Godfather?",
  "context": "Mario Puzo and Francis Ford Coppola co-wrote the screenplay for The Godfather, and the latter directed it as well.",
  "model_b_response": "Francis Ford Coppola directed The Godfather."
}
{
  "id": 4,
  "question": "Who directed The Godfather?",
  "context": "Mario Puzo and Francis Ford Coppola co-wrote the screenplay for The Godfather, and the latter directed it as well.",
  "model_b_response": "John Smith."
}

Bonnes pratiques

Suivez ces bonnes pratiques lorsque vous définissez votre ensemble de données d'évaluation :

  • Fournissez des exemples représentant les types d'entrées que vos modèles traitent en production.
  • Votre ensemble de données doit inclure au moins un exemple d'évaluation. Nous vous recommandons d'utiliser environ 100 exemples pour garantir des métriques agrégées de haute qualité. Le taux d'amélioration de la qualité agrégée tend à diminuer lorsque plus de 400 exemples sont fournis.
  • Pour obtenir des instructions sur l'écriture de requêtes de commande, consultez la page Concevoir des requêtes de commande de texte.
  • Si vous utilisez des prédictions prégénérées pour l'un des modèles, incluez les prédictions prégénérées dans une colonne de votre ensemble de données d'évaluation. Les prédictions prégénérées sont utiles, car elles vous permettent de comparer les résultats de modèles qui ne se trouvent pas dans Vertex Model Registry et de réutiliser les réponses.

Évaluer des modèles

Vous pouvez évaluer des modèles à l'aide de l'API REST, du SDK Vertex AI pour Python ou de la console Google Cloud.

Utilisez cette syntaxe pour spécifier le chemin d'accès à votre modèle :

  • Modèle éditeur : publishers/PUBLISHER/models/MODEL Exemple : publishers/google/models/text-bison
  • Modèle ajusté : projects/PROJECT_NUMBER/locations/LOCATION/models/MODEL@VERSION Exemple : projects/123456789012/locations/us-central1/models/1234567890123456789

REST

Pour créer un job d'évaluation de modèle, envoyez une requête POST avec la méthode pipelineJobs.

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • PIPELINEJOB_DISPLAYNAME : nom à afficher pour pipelineJob.
  • PROJECT_ID : projet Google Cloud qui exécute les composants du pipeline.
  • LOCATION : région d'exécution des composants de pipeline. us-central1 est accepté.
  • OUTPUT_DIR : URI Cloud Storage où stocker le résultat de l'évaluation.
  • EVALUATION_DATASET : table BigQuery ou liste d'éléments séparés par une virgule des chemins d'accès Cloud Storage vers un ensemble de données JSONL contenant des exemples d'évaluation.
  • TASK : tâche d'évaluation, qui peut être [summarization, question_answering].
  • ID_COLUMNS : colonnes qui distinguent des exemples d'évaluation uniques.
  • AUTORATER_PROMPT_PARAMETERS : paramètres de requête de l'outil d'évaluation automatique mappés à des colonnes ou à des modèles. Les paramètres attendus sont les suivants : inference_instruction (détails sur l'exécution d'une tâche) et inference_context (contenu à référencer pour effectuer la tâche). Par exemple, {'inference_context': {'column': 'my_prompt'}} utilise la colonne "my_prompt" de l'ensemble de données d'évaluation pour le contexte de l'outil d'évaluation automatique.
  • RESPONSE_COLUMN_A : nom de la colonne dans l'ensemble de données d'évaluation contenant des prédictions prédéfinies, ou nom de la colonne dans le résultat du modèle A contenant les prédictions. Si aucune valeur n'est fournie, le nom de la colonne de sortie du modèle correct sera tenté d'être inféré.
  • RESPONSE_COLUMN_B : nom de la colonne dans l'ensemble de données d'évaluation contenant des prédictions prédéfinies ou nom de la colonne dans le résultat du modèle B contenant les prédictions. Si aucune valeur n'est fournie, le nom de la colonne de sortie du modèle correct sera tenté d'être inféré.
  • MODEL_A (facultatif) : nom complet de la ressource de modèle (projects/{project}/locations/{location}/models/{model}@{version}) ou nom de ressource du modèle éditeur (publishers/{publisher}/models/{model}). Si des réponses du modèle A sont spécifiées, ce paramètre ne doit pas être fourni.
  • MODEL_B (facultatif) : nom complet de la ressource de modèle (projects/{project}/locations/{location}/models/{model}@{version}) ou nom de ressource du modèle éditeur (publishers/{publisher}/models/{model}). Si des réponses du modèle B sont spécifiées, ce paramètre ne doit pas être fourni.
  • MODEL_A_PROMPT_PARAMETERS (facultatif) : paramètres de modèle de requête du modèle A mappés à des colonnes ou à des modèles. Si des réponses du modèle A sont prédéfinies, ce paramètre ne doit pas être fourni. Exemple : {'prompt': {'column': 'my_prompt'}} utilise la colonne my_prompt de l'ensemble de données d'évaluation pour le paramètre de requête nommé prompt.
  • MODEL_B_PROMPT_PARAMETERS (facultatif) : paramètres de modèle de requête de commande du modèle B mappés à des colonnes ou à des modèles. Si des réponses du modèle B sont prédéfinies, ce paramètre ne doit pas être fourni. Exemple : {'prompt': {'column': 'my_prompt'}} utilise la colonne my_prompt de l'ensemble de données d'évaluation pour le paramètre de requête nommé prompt.
  • JUDGMENTS_FORMAT (facultatif) : format dans lequel écrire les jugements. Peut être jsonl (par défaut), json ou bigquery.
  • BIGQUERY_DESTINATION_PREFIX : table BigQuery dans laquelle écrire les jugements si le format spécifié est bigquery.

Corps JSON de la requête

  {
    "displayName": "PIPELINEJOB_DISPLAYNAME",
    "runtimeConfig": {
        "gcsOutputDirectory": "gs://OUTPUT_DIR",
        "parameterValues": {
            "evaluation_dataset": "EVALUATION_DATASET",
            "id_columns": ["ID_COLUMNS"],
            "task": "TASK",
            "autorater_prompt_parameters": AUTORATER_PROMPT_PARAMETERS,
            "response_column_a": "RESPONSE_COLUMN_A",
            "response_column_b": "RESPONSE_COLUMN_B",
            "model_a": "MODEL_A",
            "model_a_prompt_parameters": MODEL_A_PROMPT_PARAMETERS,
            "model_b": "MODEL_B",
            "model_b_prompt_parameters": MODEL_B_PROMPT_PARAMETERS,
            "judgments_format": "JUDGMENTS_FORMAT",
            "bigquery_destination_prefix":BIGQUERY_DESTINATION_PREFIX,
        },
    },
    "templateUri": "https://us-kfp.pkg.dev/ml-pipeline/google-cloud-registry/autosxs-template/default"
  }

Utilisez curl pour envoyer votre requête.

curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/pipelineJobs"

Réponse

  "state": "PIPELINE_STATE_PENDING",
  "labels": {
    "vertex-ai-pipelines-run-billing-id": "1234567890123456789"
  },
  "runtimeConfig": {
    "gcsOutputDirectory": "gs://my-evaluation-bucket/output",
    "parameterValues": {
      "evaluation_dataset": "gs://my-evaluation-bucket/output/data.json",
      "id_columns": [
        "context"
      ],
      "task": "question_answering",
      "autorater_prompt_parameters": {
        "inference_instruction": {
          "template": "Answer the following question: {{ question }} }."
        },
        "inference_context": {
          "column": "context"
        }
      },
      "response_column_a": "",
      "response_column_b": "response_b",
      "model_a": "publishers/google/models/text-bison@002",
      "model_a_prompt_parameters": {
        "prompt": {
          "template": "Answer the following question from the point of view of a college professor: {{ question }}\n{{ context }} }"
        }
      },
      "model_b": "",
      "model_b_prompt_parameters": {}
    }
  },
  "serviceAccount": "123456789012-compute@developer.gserviceaccount.com",
  "templateUri": "https://us-kfp.pkg.dev/ml-pipeline/google-cloud-registry/autosxs-template/default",
  "templateMetadata": {
    "version": "sha256:7366b784205551ed28f2c076e841c0dbeec4111b6df16743fc5605daa2da8f8a"
  }
}

SDK Vertex AI pour Python

Pour savoir comment installer ou mettre à jour le SDK Vertex AI pour Python, consultez la section Installer le SDK Vertex AI pour Python. Pour plus d'informations sur l'API Python, consultez la page SDK Vertex AI pour l'API Python.

Pour plus d'informations sur les paramètres du pipeline, consultez la documentation de référence sur les composants du pipeline Google Cloud.

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • PIPELINEJOB_DISPLAYNAME : nom à afficher pour pipelineJob.
  • PROJECT_ID : projet Google Cloud qui exécute les composants du pipeline.
  • LOCATION : région d'exécution des composants de pipeline. us-central1 est accepté.
  • OUTPUT_DIR : URI Cloud Storage où stocker le résultat de l'évaluation.
  • EVALUATION_DATASET : table BigQuery ou liste d'éléments séparés par une virgule des chemins d'accès Cloud Storage vers un ensemble de données JSONL contenant des exemples d'évaluation.
  • TASK : tâche d'évaluation, qui peut être [summarization, question_answering].
  • ID_COLUMNS : colonnes qui distinguent des exemples d'évaluation uniques.
  • AUTORATER_PROMPT_PARAMETERS : paramètres de requête de l'outil d'évaluation automatique mappés à des colonnes ou à des modèles. Les paramètres attendus sont les suivants : inference_instruction (détails sur l'exécution d'une tâche) et inference_context (contenu à référencer pour effectuer la tâche). Par exemple, {'inference_context': {'column': 'my_prompt'}} utilise la colonne "my_prompt" de l'ensemble de données d'évaluation pour le contexte de l'outil d'évaluation automatique.
  • RESPONSE_COLUMN_A : nom de la colonne dans l'ensemble de données d'évaluation contenant des prédictions prédéfinies, ou nom de la colonne dans le résultat du modèle A contenant les prédictions. Si aucune valeur n'est fournie, le nom de la colonne de sortie du modèle correct sera tenté d'être inféré.
  • RESPONSE_COLUMN_B : nom de la colonne dans l'ensemble de données d'évaluation contenant des prédictions prédéfinies ou nom de la colonne dans le résultat du modèle B contenant les prédictions. Si aucune valeur n'est fournie, le nom de la colonne de sortie du modèle correct sera tenté d'être inféré.
  • MODEL_A (facultatif) : nom complet de la ressource de modèle (projects/{project}/locations/{location}/models/{model}@{version}) ou nom de ressource du modèle éditeur (publishers/{publisher}/models/{model}). Si des réponses du modèle A sont spécifiées, ce paramètre ne doit pas être fourni.
  • MODEL_B (facultatif) : nom complet de la ressource de modèle (projects/{project}/locations/{location}/models/{model}@{version}) ou nom de ressource du modèle éditeur (publishers/{publisher}/models/{model}). Si des réponses du modèle B sont spécifiées, ce paramètre ne doit pas être fourni.
  • MODEL_A_PROMPT_PARAMETERS (facultatif) : paramètres de modèle de requête du modèle A mappés à des colonnes ou à des modèles. Si des réponses du modèle A sont prédéfinies, ce paramètre ne doit pas être fourni. Exemple : {'prompt': {'column': 'my_prompt'}} utilise la colonne my_prompt de l'ensemble de données d'évaluation pour le paramètre de requête nommé prompt.
  • MODEL_B_PROMPT_PARAMETERS (facultatif) : paramètres de modèle de requête de commande du modèle B mappés à des colonnes ou à des modèles. Si des réponses du modèle B sont prédéfinies, ce paramètre ne doit pas être fourni. Exemple : {'prompt': {'column': 'my_prompt'}} utilise la colonne my_prompt de l'ensemble de données d'évaluation pour le paramètre de requête nommé prompt.
  • JUDGMENTS_FORMAT (facultatif) : format dans lequel écrire les jugements. Peut être jsonl (par défaut), json ou bigquery.
  • BIGQUERY_DESTINATION_PREFIX : table BigQuery dans laquelle écrire les jugements si le format spécifié est bigquery.
import os
from google.cloud import aiplatform
parameters = {
    'evaluation_dataset': 'EVALUATION_DATASET',
    'id_columns': ['ID_COLUMNS'],
    'task': 'TASK',
    'autorater_prompt_parameters': AUTORATER_PROMPT_PARAMETERS,
    'response_column_a': 'RESPONSE_COLUMN_A',
    'response_column_b': 'RESPONSE_COLUMN_B',
    'model_a': 'MODEL_A',
    'model_a_prompt_parameters': MODEL_A_PROMPT_PARAMETERS,
    'model_b': 'MODEL_B',
    'model_b_prompt_parameters': MODEL_B_PROMPT_PARAMETERS,
    'judgments_format': 'JUDGMENTS_FORMAT',
    'bigquery_destination_prefix':
    BIGQUERY_DESTINATION_PREFIX,
}
aiplatform.init(project='PROJECT_ID', location='LOCATION', staging_bucket='gs://OUTPUT_DIR')
aiplatform.PipelineJob(
    display_name='PIPELINEJOB_DISPLAYNAME',
    pipeline_root=os.path.join('gs://OUTPUT_DIR', 'PIPELINEJOB_DISPLAYNAME'),
    template_path=(
      'https://us-kfp.pkg.dev/ml-pipeline/google-cloud-registry/autosxs-template/default'),
    parameter_values=parameters,
).run()

Console

Pour créer un job d'évaluation de modèle par paire à l'aide de la console Google Cloud, procédez comme suit :

  1. Commencez avec un modèle de fondation Google ou utilisez un modèle qui existe déjà dans votre registre de modèles Vertex AI:

    • Pour évaluer un modèle de fondation Google, procédez comme suit:

      1. Accédez au Model Garden de Vertex AI et sélectionnez un modèle compatible avec l'évaluation par paire, tel que text-bison.

        Accéder à la page "Jardin de modèles"

      2. Cliquez sur Évaluer.

      3. Dans le menu qui s'affiche, cliquez sur Sélectionner pour sélectionner une version du modèle.

      4. Un volet Enregistrer le modèle peut vous demander d'enregistrer une copie du modèle dans Vertex AI Model Registry si vous n'en avez pas déjà une. Saisissez un nom de modèle, puis cliquez sur Continuer.

      5. La page Créer une évaluation s'affiche. Pour l'étape Méthode d'évaluation, sélectionnez Évaluer ce modèle par rapport à un autre modèle.

      6. Cliquez sur Continuer.

    • Pour évaluer un modèle existant dans Vertex AI Model Registry, procédez comme suit:

      1. Accédez à la page Vertex AI Model Registry.

        Accéder à Vertex AI Model Registry

      2. Cliquez sur le nom du modèle que vous souhaitez évaluer. Assurez-vous que le type de modèle est compatible avec l'évaluation par paires. Par exemple, text-bison.

      3. Dans l'onglet Évaluation, cliquez sur SxS.

      4. Cliquez sur Créer une évaluation SxS.

  2. Pour chaque étape de la page de création d'évaluation, saisissez les informations requises, puis cliquez sur Continuer:

    1. Pour l'étape Ensemble de données d'évaluation, sélectionnez un objectif d'évaluation et un modèle à comparer au modèle sélectionné. Sélectionnez un ensemble de données d'évaluation et saisissez les colonnes d'ID (colonnes de réponse).

    2. À l'étape Paramètres du modèle, indiquez si vous souhaitez utiliser les réponses du modèle déjà présentes dans votre ensemble de données ou si vous souhaitez utiliser Vertex AI Batch Prediction pour générer les réponses. Spécifiez les colonnes de réponse pour les deux modèles. Pour l'option de prédiction par lot Vertex AI, vous pouvez spécifier les paramètres d'invite du modèle d'inférence.

    3. Pour l'étape Paramètres de l'autoscaler, saisissez les paramètres d'invite de l'autoscaler et un emplacement de sortie pour les évaluations.

  3. Cliquez sur Démarrer l'évaluation.

Afficher les résultats de l'évaluation

Vous pouvez trouver les résultats de l'évaluation dans Vertex AI Pipelines en inspectant les artefacts suivants générés par le pipeline AutoSxS :

Jugements

AutoSxS génère des jugements (métriques au niveau de l'exemple) qui aident les utilisateurs à comprendre les performances du modèle au niveau de l'exemple. Les jugements comprennent les informations suivantes :

  • Requêtes de commande d'inférence
  • Réponses du modèle
  • Décisions de l'outil d'évaluation automatique
  • Explication des évaluations
  • Scores de confiance

Les décisions peuvent être écrites dans Cloud Storage au format JSONL ou dans une table BigQuery à l'aide des colonnes suivantes :

Colonne Description
Colonnes des identifiants Colonnes qui distinguent des exemples d'évaluation uniques.
inference_instruction Instruction utilisée pour générer les réponses du modèle.
inference_context Contexte utilisé pour générer des réponses du modèle.
response_a Réponse du modèle A, selon les instructions d'inférence et le contexte.
response_b Réponse du modèle B, selon les instructions d'inférence et le contexte.
choice Modèle avec la meilleure réponse. Les valeurs possibles sont Model A, Model B ou Error. Error signifie qu'une erreur a empêché l'outil d'évaluation automatique de déterminer si la réponse du modèle A ou celle du modèle B était la meilleure.
confidence Un score compris entre 0 et 1, qui indique le degré de confiance de l'outil d'évaluation automatique quant à son choix.
explanation Raison du choix de l'outil d'évaluation automatique.

Métriques agrégées

AutoSxS calcule les métriques agrégées (taux de réussite) à l'aide de la table des jugements. Si aucune donnée de préférence humaine n'est fournie, les métriques agrégées suivantes sont générées :

Métrique Description
Taux de réussite du modèle A de l'outil d'évaluation automatique Pourcentage de fois où l'outil d'évaluation automatique a décidé que le modèle A avait la meilleure réponse.
Taux de réussite du modèle B de l'outil d'évaluation automatique Pourcentage de fois où l'outil d'évaluation automatique a décidé que le modèle B avait la meilleure réponse.

Pour mieux comprendre le taux de réussite, examinez les résultats basés sur les lignes et les explications de l'outil d'évaluation automatique pour déterminer si les résultats et les explications correspondent à vos attentes.

Métriques d'alignement de préférences humaines

Si des données de préférence humaines sont fournies, AutoSxS génère les métriques suivantes :

Métrique Description
Taux de réussite du modèle A de l'outil d'évaluation automatique Pourcentage de fois où l'outil d'évaluation automatique a décidé que le modèle A avait la meilleure réponse.
Taux de réussite du modèle B de l'outil d'évaluation automatique Pourcentage de fois où l'outil d'évaluation automatique a décidé que le modèle B avait la meilleure réponse.
Taux de réussite du modèle A de préférence humaine Pourcentage de temps où des humains ont décidé que le modèle A avait la meilleure réponse.
Taux de réussite du modèle B de préférence humaine Pourcentage de temps où des humains ont décidé que le modèle B avait la meilleure réponse.
TP Nombre d'exemples où l'outil d'évaluation automatique et les préférences humaines ont considéré que le modèle A avait la meilleure réponse.
FP Nombre d'exemples où l'outil d'évaluation automatique a choisi le modèle A comme ayant la meilleure réponse, mais la préférence humaine a considéré que le modèle B avait la meilleure réponse.
TN Nombre d'exemples où l'outil d'évaluation automatique et les préférences humaines ont considéré que le modèle B avait la meilleure réponse..
FN Nombre d'exemples où l'outil d'évaluation automatique a choisi le modèle B comme ayant la meilleure réponse, mais la préférence humaine a considéré que le modèle A avait la meilleure réponse.
Précision Pourcentage de temps où l'outil d'évaluation automatique a été d'accord avec les évaluateurs humains.
Précision Pourcentage de temps où l'outil d'évaluation automatique et les évaluateurs humains ont considéré que le modèle A avait une meilleure réponse, parmi tous les cas où l'outil d'évaluation automatique a considéré que le modèle A avait une meilleure réponse.
Rappel Pourcentage de temps où l'outil d'évaluation automatique et les évaluateurs humains ont considéré que le modèle A avait une meilleure réponse, parmi tous les cas où les évaluateurs humains ont considéré que le modèle A avait une meilleure réponse.
F1 Moyenne harmonique de la précision et du rappel.
Kappa de Cohen Mesure de l'accord entre l'outil d'évaluation automatique et les évaluateurs humains, qui prend en compte la probabilité d'acceptation aléatoire. Cohen suggère l'interprétation suivante :
-1.00.0Accord inférieur ou égal à la probabilité aléatoire
0.00.2Accord léger
0.20.4Accord équitable
0.40.6Accord modéré
0.60.8Accord important
0.81.0Accord presque parfait
1.0Accord parfait

Cas d'utilisation d'AutoSxS

Vous pouvez découvrir comment utiliser AutoSxS à l'aide de trois scénarios d'utilisation.

Comparer des modèles

Évaluez un modèle propriétaire réglé (1p) par rapport à un modèle propriétaire de référence.

Vous pouvez spécifier que l'inférence s'exécute simultanément sur les deux modèles.

Figure 2. Les deux modèles d'inférence s'exécutent

Cet exemple de code évalue un modèle ajusté à partir de Vertex Model Registry par rapport à un modèle de référence du même registre.

# Evaluation dataset schema:
#   my_question: str
#   my_context: str
parameters = {
    'evaluation_dataset': DATASET,
    'id_columns': ['my_context'],
    'task': 'question_answering',
    'autorater_prompt_parameters': {
      'inference_instruction': {'column': 'my_question'},
      'inference_context': {'column': 'my_context'},
  },
    'model_a': 'publishers/google/models/text-bison@002',
    'model_a_prompt_parameters': {QUESTION: {'template': '{{my_question}}\nCONTEXT: {{my_context}}'}},
  'response_column_a': 'content',
    'model_b': 'projects/abc/locations/abc/models/tuned_bison',
    'model_b_prompt_parameters': {'prompt': {'template': '{{my_context}}\n{{my_question}}'}},
  'response_column_b': 'content',
}

Comparer les prédictions

Évaluez un modèle tiers réglé (3p) par rapport à un modèle tiers de référence 3p.

Vous pouvez ignorer l'inférence en fournissant directement des réponses du modèle.

Figure 3 : Un seul modèle d'inférence s'exécute

Cet exemple de code évalue un modèle 3p réglé par rapport à un modèle de référence 3p.

# Evaluation dataset schema:
#   my_question: str
#   my_context: str
#   response_b: str

parameters = {
    'evaluation_dataset': DATASET,
    'id_columns': ['my_context'],
    'task': 'question_answering',
    'autorater_prompt_parameters':
        'inference_instruction': {'column': 'my_question'},
        'inference_context': {'column': 'my_context'},
    },
    'response_column_a': 'content',
    'response_column_b': 'response_b',
}

Vérifier l'alignement

Toutes les tâches compatibles ont été comparées à l'aide de données d'un évaluateur humain afin de garantir que les réponses de l'outil d'évaluation automatique sont alignées sur les préférences humaines. Si vous souhaitez effectuer une analyse comparative d'AutoSxS pour vos cas d'utilisation, fournissez des données de préférences humaines directement à AutoSxS, qui génère des statistiques agrégées d'alignement.

Pour vérifier l'alignement par rapport à un ensemble de données de préférence humaine, vous pouvez spécifier les deux sorties (résultats de prédiction) à l'outil d'évaluation automatique. Vous pouvez également fournir vos résultats d'inférence.

Figure 4 : Sortie des deux modèles fournis à l'outil d'évaluation automatique

Cet exemple de code vérifie que les résultats et les explications de l'outil d'évaluation automatique sont conformes à vos attentes.

# Evaluation dataset schema:
#  my_question: str
#  my_context: str
#   response_a: str
#   response_b: str
#   actual: str
parameters = {
    'evaluation_dataset': DATASET,
    'id_columns': ['my_context'],
    'task': 'question_answering',
    'autorater_prompt_parameters': {
      'inference_instruction': {'column': 'my_question'},
      'inference_context': {'column': 'my_context'},
  },
  'response_column_a': 'response_a',
  'response_column_b': 'response_b',
  'human_preference_column': 'actual',
}

Étape suivante