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.
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 :
- 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égion
us-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 format
jsonl
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 format
jsonl
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 est
e2-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 est
projects/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é est
projects/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 :
curl
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"
PowerShell
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.
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"
}'
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 en savoir plus, consultez la documentation de référence de l'API Python.
Console
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.