Vous pouvez évaluer les performances des modèles de fondation et de vos modèles d'IA générative réglés sur Vertex AI. Les modèles sont évalués avec un ensemble de métriques sur un ensemble de données d'évaluation que vous fournissez. Cette page explique le fonctionnement de l'évaluation des modèles basée sur le calcul via le service de pipeline d'évaluation, comment créer et formater l'ensemble de données d'évaluation, et comment effectuer l'évaluation à l'aide de la console Google Cloud, de l'API Vertex AI. ou le SDK Vertex AI pour Python.
Fonctionnement de l'évaluation des modèles basée sur le calcul
Pour évaluer les performances d'un modèle, vous devez d'abord créer un ensemble de données d'évaluation contenant des paires constituées d'une requête et d'une vérité terrain. Pour chaque paire, la requête est l'entrée que vous souhaitez évaluer et la vérité terrain est la réponse idéale pour cette requête. Lors de l'évaluation, l'invite de chaque paire de l'ensemble de données d'évaluation est transmise au modèle pour produire un résultat. Les résultats générés par le modèle et la vérité terrain de l'ensemble de données d'évaluation sont utilisés pour calculer les métriques d'évaluation.
Le type de métriques utilisées pour l'évaluation dépend de la tâche que vous évaluez. Le tableau suivant présente les tâches compatibles et les métriques utilisées pour évaluer chaque tâche :
Tâche | Métrique |
---|---|
Classification | Micro-F1, Macro-F1, F1 par classe |
Synthèse | ROUGE-L |
Systèmes de questions-réponses | Mot clé exact |
Génération de texte | BLEU, ROUGE-L |
Modèles compatibles
L'évaluation des modèles est compatible avec les versions de base et réglées de text-bison
.
Préparer l'ensemble de données d'évaluation
L'ensemble de données d'évaluation utilisé pour l'évaluation du modèle inclut des paires d'invites et de vérités terrain qui s'alignent avec la tâche que vous souhaitez évaluer. Votre ensemble de données doit inclure au moins une paire d'invites et de vérité terrain, et au moins 10 paires pour les métriques pertinentes. Plus vous fournissez d'exemples, plus les résultats sont pertinents.
Format de l'ensemble de données
Votre ensemble de données d'évaluation doit être au format JSON Lines (JSONL), chaque ligne contenant une seule paire constituée d'une requête et d'une vérité terrain, respectivement spécifiées dans les champs input_text
et output_text
. Le champ input_text
contient la requête que vous souhaitez évaluer et le champ output_text
contient la réponse idéale pour cette requête.
La longueur maximale de jeton pour input_text
est de 8 192, et la longueur maximale de jeton pour output_text
est de 1 024.
Importer l'ensemble de données d'évaluation dans Cloud Storage
Vous pouvez créer un bucket Cloud Storage ou utiliser un bucket existant pour stocker votre fichier d'ensemble de données. Le bucket doit se trouver dans la même région que le modèle.
Une fois votre bucket prêt, importez-y le fichier d'ensemble de données.
Évaluer des modèles
Vous pouvez évaluer des modèles à l'aide de l'API REST ou de la console Google Cloud.
Autorisations requises pour cette tâche
Pour effectuer cette tâche, vous devez attribuer des rôles Identity and Access Management (IAM) à chacun des comptes de service suivants :
Compte de service | Principal par défaut | Description | Rôles |
---|---|---|---|
Agent de service Vertex AI | service-PROJECT_NUMBER@gcp-sa-aiplatform.iam.gserviceaccount.com |
L'agent de service Vertex AI est automatiquement provisionné pour votre projet et se voit attribuer un rôle prédéfini. Toutefois, si une règle d'administration modifie les autorisations par défaut de l'agent de service Vertex AI, vous devez attribuer manuellement le rôle à l'agent de service. | Agent de service Vertex AI (roles/aiplatform.serviceAgent ) |
Compte de service de pipelines Vertex AI | PROJECT_NUMBER-compute@developer.gserviceaccount.com |
Le compte de service qui exécute le pipeline Par défaut, le compte de service utilisé est le compte de service Compute Engine par défaut. Vous pouvez éventuellement utiliser un compte de service personnalisé au lieu du compte de service par défaut. |
Selon vos sources de données d'entrée et de sortie, vous devrez peut-être également attribuer des rôles supplémentaires au compte de service Vertex AI Pipelines :
Source de données | Rôle | Où attribuer le rôle |
---|---|---|
Table BigQuery standard | Éditeur de données BigQuery | Projet exécutant le pipeline |
Lecteur de données BigQuery | Projet auquel la table appartient | |
Vue BigQuery d'une table BigQuery standard | Éditeur de données BigQuery | Projet exécutant le pipeline |
Lecteur de données BigQuery | Projet auquel la vue appartient | |
Lecteur de données BigQuery | Projet auquel la table appartient | |
Table externe BigQuery, qui comporte un fichier Cloud Storage source | Éditeur de données BigQuery | Projet exécutant le pipeline |
Lecteur de données BigQuery | Projet auquel la table externe appartient | |
Lecteur des objets Storage | Projet auquel appartient le fichier source | |
Vue BigQuery d'une table externe BigQuery contenant un fichier Cloud Storage source | Éditeur de données BigQuery | Projet exécutant le pipeline |
Lecteur de données BigQuery | Projet auquel la vue appartient | |
Lecteur de données BigQuery | Projet auquel la table externe appartient | |
Lecteur des objets Storage | Projet auquel appartient le fichier source | |
Fichier Cloud Storage | Lecteur de données BigQuery | Projet exécutant le pipeline |
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 :
PROJECT_ID : projet Google Cloud qui exécute les composants du pipeline.PIPELINEJOB_DISPLAYNAME : nom à afficher pour le pipelineJob.LOCATION : région d'exécution des composants de pipeline. Pour le moment, seule la régionus-central1
est compatible.DATASET_URI : URI Cloud Storage de votre ensemble de données de référence. Vous pouvez spécifier un ou plusieurs URI. Ce paramètre prend en charge les caractères génériques. Pour en savoir plus sur ce paramètre, consultez la page InputConfig.OUTPUT_DIR : URI Cloud Storage où stocker le résultat de l'évaluation.MODEL_NAME : spécifiez un modèle de diffuseur ou une ressource de modèle réglée comme suit :- Modèle de diffuseur :
publishers/google/models/MODEL@MODEL_VERSION
Exemple :
publishers/google/models/text-bison@002
- Modèle réglé :
projects/PROJECT_NUMBER/locations/LOCATION/models/ENDPOINT_ID
Exemple :
projects/123456789012/locations/us-central1/models/1234567890123456789
Le job d'évaluation n'a aucune incidence sur les déploiements existants du modèle ou des ressources associées.
- Modèle de diffuseur :
EVALUATION_TASK : tâche sur laquelle vous souhaitez évaluer le modèle. Le job d'évaluation calcule un ensemble de métriques pertinentes pour cette tâche spécifique. Les valeurs acceptées incluent les suivantes :summarization
question-answering
text-generation
classification
INSTANCES_FORMAT : format de votre ensemble de données. Pour le moment, seul le formatjsonl
est pris en charge. Pour en savoir plus sur ce paramètre, consultez la page InputConfig.PREDICTIONS_FORMAT : format de sortie de l'évaluation. Pour le moment, seul le formatjsonl
est pris en charge. Pour en savoir plus sur ce paramètre, consultez la section InputConfig.MACHINE_TYPE : (facultatif) Type de machine pour l'exécution du job d'évaluation. La valeur par défaut este2-highmem-16
. Pour obtenir la liste des types de machines compatibles, consultez la page Types de machines.SERVICE_ACCOUNT : (facultatif) compte de service à utiliser pour exécuter le job d'évaluation. Pour savoir comment créer un compte de service personnalisé, consultez la page Configurer un compte de service avec des autorisations précises. Si le champ n'est pas spécifié, l'agent de service de code personnalisé Vertex AI est utilisé.NETWORK : (facultatif) nom complet du réseau Compute Engine auquel appairer le job d'évaluation. Le format du nom du réseau estprojects/PROJECT_NUMBER/global/networks/NETWORK_NAME
. Si vous spécifiez ce champ, vous devez disposer d'un appairage de réseau VPC pour Vertex AI. Si le champ n'est pas spécifié, la tâche d'évaluation n'est appairée à aucun réseau.KEY_NAME : (facultatif) Le nom de la clé de chiffrement gérée par le client (CMEK). Le cas échéant, les ressources créées par le job d'évaluation sont chiffrées à l'aide de la clé de chiffrement fournie. Le format à utiliser pour le nom de la clé estprojects/PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY
. La clé doit se trouver dans la même région que le job d'évaluation.
Méthode HTTP et URL :
POST https://LOCATION -aiplatform.googleapis.com/v1/projects/PROJECT_ID /locations/LOCATION /pipelineJobs
Corps JSON de la requête :
{ "displayName": "PIPELINEJOB_DISPLAYNAME ", "runtimeConfig": { "gcsOutputDirectory": "gs://OUTPUT_DIR ", "parameterValues": { "project": "PROJECT_ID ", "location": "LOCATION ", "batch_predict_gcs_source_uris": ["gs://DATASET_URI "], "batch_predict_gcs_destination_output_uri": "gs://OUTPUT_DIR ", "model_name": "MODEL_NAME ", "evaluation_task": "EVALUATION_TASK ", "batch_predict_instances_format": "INSTANCES_FORMAT ", "batch_predict_predictions_format: "PREDICTIONS_FORMAT ", "machine_type": "MACHINE_TYPE ", "service_account": "SERVICE_ACCOUNT ", "network": "NETWORK ", "encryption_spec_key_name": "KEY_NAME " } }, "templateUri": "https://us-kfp.pkg.dev/vertex-evaluation/pipeline-templates/evaluation-llm-text-generation-pipeline/1.0.1" }
Pour envoyer votre requête, choisissez l'une des options suivantes :
Enregistrez le corps de la requête dans un fichier nommé request.json
, puis exécutez la commande suivante :
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"
Enregistrez le corps de la requête dans un fichier nommé request.json
, puis exécutez la commande suivante :
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION -aiplatform.googleapis.com/v1/projects/PROJECT_ID /locations/LOCATION /pipelineJobs" | Select-Object -Expand Content
Vous devriez recevoir une réponse JSON semblable à la suivante. Notez que pipelineSpec
a été tronqué pour économiser de l'espace.
Réponse
...... ..... "state": "PIPELINE_STATE_PENDING", "labels": { "vertex-ai-pipelines-run-billing-id": "1234567890123456789" }, "runtimeConfig": { "gcsOutputDirectory": "gs://my-evaluation-bucket/output", "parameterValues": { "project": "my-project", "location": "us-central1", "batch_predict_gcs_source_uris": [ "gs://my-evaluation-bucket/reference-datasets/eval_data.jsonl" ], "batch_predict_gcs_destination_output_uri": "gs://my-evaluation-bucket/output", "model_name": "publishers/google/models/text-bison@002" } }, "serviceAccount": "123456789012-compute@developer.gserviceaccount.com", "templateUri": "https://us-kfp.pkg.dev/vertex-evaluation/pipeline-templates/evaluation-llm-text-generation-pipeline/1.0.1", "templateMetadata": { "version": "sha256:d4c0d665533f6b360eb474111aa5e00f000fb8eac298d367e831f3520b21cb1a" } }
Exemple de commande curl
PROJECT_ID=myproject
REGION=us-central1
MODEL_NAME=publishers/google/models/text-bison@002
TEST_DATASET_URI=gs://my-gcs-bucket-uri/dataset.jsonl
OUTPUT_DIR=gs://my-gcs-bucket-uri/output
curl \
-X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
"https://${REGION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${REGION}/pipelineJobs" -d \
$'{
"displayName": "evaluation-llm-text-generation-pipeline",
"runtimeConfig": {
"gcsOutputDirectory": "'${OUTPUT_DIR}'",
"parameterValues": {
"project": "'${PROJECT_ID}'",
"location": "'${REGION}'",
"batch_predict_gcs_source_uris": ["'${TEST_DATASET_URI}'"],
"batch_predict_gcs_destination_output_uri": "'${OUTPUT_DIR}'",
"model_name": "'${MODEL_NAME}'",
}
},
"templateUri": "https://us-kfp.pkg.dev/vertex-evaluation/pipeline-templates/evaluation-llm-text-generation-pipeline/1.0.1"
}'
Pour savoir comment installer ou mettre à jour le SDK Vertex AI pour Python, consultez la section Installer le SDK Vertex AI pour Python. Pour en savoir plus, consultez la documentation de référence de l'API Python.
Pour créer un job d'évaluation de modèle à l'aide de la console Google Cloud, procédez comme suit :
- Dans la console Google Cloud, accédez à la page Registre de modèles de Vertex AI.
- Cliquez sur le nom du modèle que vous souhaitez évaluer.
- Dans l'onglet Évaluer, cliquez sur Créer une évaluation et configurez comme suit :
- Objectif : Sélectionner la tâche à évaluer.
- Colonne ou champ cible : (classification uniquement) saisissez la colonne cible pour la prédiction. Exemple :
ground_truth
. - Chemin d'accès source : saisissez ou sélectionnez l'URI de votre ensemble de données d'évaluation.
- Format de sortie : saisissez le format de sortie de l'évaluation.
Pour le moment, seul le format
jsonl
est pris en charge. - Chemin d'accès Cloud Storage : saisissez ou sélectionnez l'URI où stocker le résultat de l'évaluation.
- Noms de classe : (classification uniquement) saisissez la liste des noms de classe possibles.
- Nombre de nœuds de calcul : saisissez le nombre de nœuds de calcul pour exécuter le job d'évaluation.
- Type de machine : sélectionnez un type de machine à utiliser pour exécuter le job d'évaluation.
- Cliquez sur Démarrer l'évaluation.
Afficher les résultats de l'évaluation
Vous pouvez trouver les résultats de l'évaluation dans le répertoire de sortie Cloud Storage que vous avez spécifié lors de la création de la tâche d'évaluation. Le fichier se nomme evaluation_metrics.json
.
Pour les modèles ajustés, vous pouvez également afficher les résultats d'évaluation dans la console Google Cloud:
Dans la section "Vertex AI" de la console Google Cloud, accédez à la page Vertex AI Model Registry.
Cliquez sur le nom du modèle pour afficher ses métriques d'évaluation.
Dans l'onglet Évaluation, cliquez sur le nom de l'exécution d'évaluation que vous souhaitez afficher.
Étapes suivantes
- Essayez un exemple de notebook d'évaluation.
- Apprenez-en plus sur l'évaluation de l'IA générative.
- Apprenez-en plus sur l'évaluation en ligne à l'aide d'une évaluation rapide.
- Apprenez-en plus sur l'évaluation par paire basée sur un modèle avec le pipeline AutoSxS.
- Découvrez comment régler un modèle de fondation.