Cette page explique comment créer, gérer et interpréter les résultats des tâches de surveillance des modèles pour les modèles déployés sur des points de terminaison de prédiction en ligne. Vertex AI Model Monitoring accepte la détection des écarts et des dérives de caractéristiques pour les caractéristiques d'entrée catégorielles et numériques.
Lorsqu'un modèle est déployé en production avec la surveillance des modèles activée, ses requêtes de prédiction entrantes sont enregistrées dans une table BigQuery de votre projet Google Cloud. Les valeurs des caractéristiques d'entrée contenues dans les requêtes consignées sont ensuite analysées pour identifier les écarts ou les dérives.
Vous pouvez activer la détection de décalage si vous fournissez l'ensemble de données d'entraînement d'origine pour votre modèle. Sinon, vous devez activer la détection de dérive. Pour plus d'informations, consultez la page Présentation de Vertex AI Model Monitoring.
Prérequis
Pour utiliser la surveillance des modèles, procédez comme suit :
Vous devez disposer d'un modèle disponible dans Vertex AI, soit un modèle tabulaire AutoML, soit un modèle tabulaire importé d'entraînement personnalisé.
- Si vous utilisez un point de terminaison existant, assurez-vous que tous les modèles déployés sous le point de terminaison sont des types d'entraînement AutoML tabulaires ou personnalisés.
Si vous activez la détection des écarts, importez vos données d'entraînement dans Cloud Storage ou BigQuery et obtenez le lien URI vers les données. Les données d'entraînement ne sont pas obligatoires pour la détection des dérives.
Facultatif : pour les modèles à entraînement personnalisé, importez le schéma d'instance d'analyse de votre modèle dans Cloud Storage. Model Monitoring nécessite que le schéma lance le processus de surveillance et calcule la distribution de référence pour la détection des écarts. Si vous ne fournissez pas le schéma lors de la création du job, celui-ci reste en attente jusqu'à ce que Model Monitoring puisse analyser automatiquement le schéma à partir des 1 000 premières requêtes de prédiction reçues par le modèle.
Créer une tâche de surveillance de modèle
Pour configurer la détection de décalage ou de dérive, créez une tâche de surveillance du déploiement de modèle :
Console
Pour créer un job de surveillance de déploiement de modèle à l'aide de la console Google Cloud, créez un point de terminaison :
Dans la console Google Cloud, accédez à la page Points de terminaison Vertex AI.
Cliquez sur Créer un point de terminaison.
Dans le volet Nouveau point de terminaison, nommez votre point de terminaison et définissez une région.
Cliquez sur Continuer.
Dans le champ Nom du modèle, sélectionnez un modèle AutoML d'entraînement personnalisé ou tabulaire importé.
Dans le champ Version, sélectionnez une version pour votre modèle.
Cliquez sur Continuer.
Dans le volet Surveillance des modèles, assurez-vous que l'option Activer la surveillance des modèles pour ce point de terminaison est activée. Les paramètres de surveillance que vous configurez s'appliquent à tous les modèles déployés sur le point de terminaison.
Saisissez un nom à afficher pour la tâche Monitoring.
Saisissez la durée de la période de surveillance.
Dans le champ E-mails de notification, saisissez une ou plusieurs adresses e-mail afin de recevoir des alertes lorsqu'un modèle dépasse un seuil d'alerte.
(Facultatif) Pour les Canaux de notification, ajoutez des canaux Cloud Monitoring afin de recevoir des alertes lorsqu'un modèle dépasse un seuil d'alerte. Vous pouvez sélectionner des canaux Cloud Monitoring existants ou en créer un en cliquant sur Gérer les canaux de notification. La console est compatible avec les canaux de notification PagerDuty, Slack et Pub/Sub.
Saisissez un taux d'échantillonnage.
(Facultatif) Spécifiez le schéma d'entrée de prédiction et le schéma d'entrée d'analyse.
Cliquez sur Continuer. Le volet Objectif de Monitoring s'ouvre, avec des options de détection de décalages ou de dérives :
Détection des décalages
- Sélectionnez Détection du décalage entraînement/inférence.
- Sous Source de données d'entraînement, indiquez une source de données d'entraînement.
- Sous Colonne cible, saisissez le nom de la colonne des données d'entraînement que le modèle est entraîné à prédire. Ce champ est exclu de l'analyse de surveillance.
- Facultatif : Sous Seuils d'alerte, spécifiez les seuils auxquels les alertes doivent être déclenchées. Pour en savoir plus sur le format des seuils, maintenez le pointeur de la souris sur l'icône d'aide .
- Cliquez sur Créer.
Détection des dérives
- Sélectionnez Détection de la dérive de prédiction.
- Facultatif : Sous Seuils d'alerte, spécifiez les seuils auxquels les alertes doivent être déclenchées. Pour en savoir plus sur le format des seuils, maintenez le pointeur de la souris sur l'icône d'aide .
- Cliquez sur Créer.
gcloud
Pour créer un job de surveillance de déploiement de modèle à l'aide de la gcloud CLI, commencez par déployer votre modèle sur un point de terminaison.
Une configuration de job de surveillance s'applique à tous les modèles déployés sous un point de terminaison.
Exécutez la commande gcloud ai model-monitoring-jobs create
.
gcloud ai model-monitoring-jobs create \ --project=PROJECT_ID \ --region=REGION \ --display-name=MONITORING_JOB_NAME \ --emails=EMAIL_ADDRESS_1,EMAIL_ADDRESS_2 \ --endpoint=ENDPOINT_ID \ [--feature-thresholds=FEATURE_1=THRESHOLD_1, FEATURE_2=THRESHOLD_2] \ [--prediction-sampling-rate=SAMPLING_RATE] \ [--monitoring-frequency=MONITORING_FREQUENCY] \ [--analysis-instance-schema=ANALYSIS_INSTANCE_SCHEMA] \ --target-field=TARGET_FIELD \ --bigquery-uri=BIGQUERY_URI
où :
PROJECT_ID est l'ID du projet Google Cloud. Exemple :
my-project
.REGION est l'emplacement de votre job de surveillance. Exemple :
us-central1
.MONITORING_JOB_NAME est le nom de votre job de surveillance. Exemple :
my-job
.EMAIL_ADDRESS est l'adresse e-mail à laquelle vous souhaitez recevoir des alertes de la surveillance de modèles. Exemple :
example@example.com
.ENDPOINT_ID est l'ID du point de terminaison sous lequel votre modèle est déployé. Par exemple,
1234567890987654321
.Facultatif : FEATURE_1=THRESHOLD_1 est le seuil d'alerte pour chaque caractéristique que vous souhaitez surveiller. Par exemple, si vous spécifiez
Age=0.4
, Model Monitoring enregistre une alerte lorsque la distance statistique entre la distribution d'entrée et la distribution de référence de la caractéristiqueAge
dépasse 0,4. Par défaut, chaque caractéristique catégorielle et numérique est surveillée, avec des valeurs de seuil de 0,3.Facultatif : SAMPLING_RATE est la fraction des requêtes de prédiction entrantes que vous souhaitez consigner. Par exemple,
0.5
. Si ce n'est pas spécifié, la surveillance des modèles consigne toutes les requêtes de prédiction.Facultatif : MONITORING_FREQUENCY correspond à la fréquence à laquelle vous souhaitez que le job de surveillance s'exécute sur les entrées récemment consignées. La précision minimale est d'une heure. La valeur par défaut est 24 heures. Par exemple,
2
.Facultatif : ANALYSIS_INSTANCE_SCHEMA est l'URI Cloud Storage du fichier de schéma qui décrit le format de vos données d'entrée. Exemple :
gs://test-bucket/schema.yaml
.(Obligatoire uniquement pour la détection des écarts) TARGET_FIELD est le champ de prédiction du modèle. Ce champ est exclu de l'analyse de surveillance. Exemple :
housing-price
(Obligatoire uniquement pour la détection des décalages) BIGQUERY_URI est le lien vers l'ensemble de données d'entraînement stocké dans BigQuery, au format suivant :
bq://\PROJECT.\DATASET.\TABLE
Par exemple,
bq://\my-project.\housing-data.\san-francisco
.Vous pouvez remplacer l'option
bigquery-uri
par d'autres liens vers votre ensemble de données d'entraînement :Pour un fichier CSV stocké dans un bucket Cloud Storage, utilisez
--data-format=csv --gcs-uris=gs://BUCKET_NAME/OBJECT_NAME
.Pour un fichier TFRecord stocké dans un bucket Cloud Storage, utilisez
--data-format=tf-record --gcs-uris=gs://BUCKET_NAME/OBJECT_NAME
.Pour un ensemble de données tabulaires géré par AutoML, utilisez
--dataset=DATASET_ID
.
SDK Python
Pour en savoir plus sur le workflow complet de l'API Model Monitoring, consultez l'exemple de notebook.
API REST
Si vous ne l'avez pas déjà fait, déployez votre modèle sur un point de terminaison. Lors de l'étape Obtenir l'ID du point de terminaison dans les instructions de déploiement du modèle, notez la valeur
deployedModels.id
dans la réponse JSON pour une utilisation ultérieure :Créez une requête de job de surveillance de modèle. Les instructions ci-dessous montrent comment créer une tâche de surveillance de base pour la détection de dérive. Pour personnaliser la requête JSON, consultez la documentation de référence de la tâche Monitoring.
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- PROJECT_ID est l'ID du projet Google Cloud. Exemple :
my-project
. - LOCATION est l'emplacement de votre job de surveillance. Exemple :
us-central1
. - MONITORING_JOB_NAME est le nom de votre job de surveillance. Exemple :
my-job
. - PROJECT_NUMBER est le numéro de votre projet Google Cloud. Exemple :
1234567890
. - ENDPOINT_ID est l'ID du point de terminaison sur lequel votre modèle est déployé. Exemple :
1234567890
. - DEPLOYED_MODEL_ID est l'ID du modèle déployé.
- FEATURE :VALUE est le seuil d'alerte pour chaque fonctionnalité que vous souhaitez surveiller. Par exemple, si vous spécifiez
"Age": {"value": 0.4}
, Model Monitoring enregistre une alerte lorsque la distance statistique entre la distribution d'entrée et la distribution de référence de la caractéristiqueAge
dépasse 0,4. Par défaut, chaque caractéristique catégorielle et numérique est surveillée, avec des valeurs de seuil de 0,3. - EMAIL_ADDRESS est l'adresse e-mail à laquelle vous souhaitez recevoir des alertes de la surveillance de modèles. Exemple :
example@example.com
. - NOTIFICATION_CHANNELS : liste des canaux de notification Cloud Monitoring dans lesquels vous souhaitez recevoir des alertes de la surveillance de modèles. Utilisez les noms de ressources des canaux de notification, que vous pouvez récupérer en répertoriant les canaux de notification de votre projet. Exemple :
"projects/my-project/notificationChannels/1355376463305411567", "projects/my-project/notificationChannels/1355376463305411568"
. - Facultatif : ANALYSIS_INSTANCE_SCHEMA est l'URI Cloud Storage du fichier de schéma qui décrit le format de vos données d'entrée. Exemple :
gs://test-bucket/schema.yaml
.
Corps JSON de la requête :
{ "displayName":"MONITORING_JOB_NAME", "endpoint":"projects/PROJECT_NUMBER/locations/LOCATION/endpoints/ENDPOINT_ID", "modelDeploymentMonitoringObjectiveConfigs": { "deployedModelId": "DEPLOYED_MODEL_ID", "objectiveConfig": { "predictionDriftDetectionConfig": { "driftThresholds": { "FEATURE_1": { "value": VALUE_1 }, "FEATURE_2": { "value": VALUE_2 } } }, }, }, "loggingSamplingStrategy": { "randomSampleConfig": { "sampleRate": 0.5, }, }, "modelDeploymentMonitoringScheduleConfig": { "monitorInterval": { "seconds": 3600, }, }, "modelMonitoringAlertConfig": { "emailAlertConfig": { "userEmails": ["EMAIL_ADDRESS"], }, "notificationChannels": [NOTIFICATION_CHANNELS] }, "analysisInstanceSchemaUri": ANALYSIS_INSTANCE_SCHEMA }
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/modelDeploymentMonitoringJobs/MONITORING_JOB_NUMBER", ... "state": "JOB_STATE_PENDING", "scheduleState": "OFFLINE", ... "bigqueryTables": [ { "logSource": "SERVING", "logType": "PREDICT", "bigqueryTablePath": "bq://PROJECT_ID.model_deployment_monitoring_8451189418714202112.serving_predict" } ], ... }
- PROJECT_ID est l'ID du projet Google Cloud. Exemple :
Une fois le job de surveillance créé, Model Monitoring enregistre les requêtes de prédiction entrantes dans une table BigQuery générée nommée PROJECT_ID.model_deployment_monitoring_ENDPOINT_ID.serving_predict
.
Si la journalisation des requêtes et réponses est activée, Model Monitoring enregistre les requêtes entrantes dans la même table BigQuery que celle utilisée pour la journalisation des requêtes et réponses.
(Facultatif) Configurer des alertes pour la tâche de surveillance de modèles
Vous pouvez surveiller et déboguer votre tâche de surveillance de modèles via des alertes. La surveillance de modèles vous informe automatiquement des mises à jour des tâches par e-mail, mais vous pouvez également configurer des alertes via Cloud Logging et les canaux de notification Cloud Monitoring.
Pour les événements suivants, la surveillance de modèle envoie une notification par e-mail à chaque adresse e-mail que vous avez spécifiée lors de la création du job de surveillance du modèle :
- chaque fois que la détection des décalages ou des dérives est configurée ;
- Chaque fois qu'une configuration de tâche de surveillance de modèle existante est mise à jour
- Chaque fois qu'une exécution de pipeline de surveillance planifiée échoue
Cloud Logging
Pour activer les journaux pour les exécutions programmées de pipeline de surveillance, définissez le champ enableMonitoringPipelineLogs
dans votre configuration modelDeploymentMonitoringJobs
sur true
. Les journaux de débogage sont écrits dans Cloud Logging lorsque la tâche de surveillance est configurée et à chaque intervalle de surveillance.
Les journaux de débogage sont écrits dans Cloud Logging avec le nom de journal : model_monitoring
. Exemple :
logName="projects/model-monitoring-demo/logs/aiplatform.googleapis.com%2Fmodel_monitoring" resource.labels.model_deployment_monitoring_job=6680511704087920640
Voici un exemple d'entrée de journal de progression de tâche :
{ "insertId": "e2032791-acb9-4d0f-ac73-89a38788ccf3@a1", "jsonPayload": { "@type": "type.googleapis.com/google.cloud.aiplatform.logging.ModelMonitoringPipelineLogEntry", "statusCode": { "message": "Scheduled model monitoring pipeline finished successfully for job projects/677687165274/locations/us-central1/modelDeploymentMonitoringJobs/6680511704087920640" }, "modelDeploymentMonitoringJob": "projects/677687165274/locations/us-central1/modelDeploymentMonitoringJobs/6680511704087920640" }, "resource": { "type": "aiplatform.googleapis.com/ModelDeploymentMonitoringJob", "labels": { "model_deployment_monitoring_job": "6680511704087920640", "location": "us-central1", "resource_container": "projects/677687165274" } }, "timestamp": "2022-02-04T15:33:54.778883Z", "severity": "INFO", "logName": "projects/model-monitoring-demo/logs/staging-aiplatform.sandbox.googleapis.com%2Fmodel_monitoring", "receiveTimestamp": "2022-02-04T15:33:56.343298321Z" }
Canaux de notification
Chaque fois qu'une exécution de pipeline de surveillance planifiée échoue, la surveillance de modèle envoie une notification aux canaux de notification Cloud Monitoring que vous avez spécifiés lors de la création du job de surveillance de modèle.
Configurer des alertes pour les anomalies de fonctionnalités
La surveillance de modèles détecte une anomalie lorsque le seuil défini pour une caractéristique est dépassé. La surveillance de modèles vous informe automatiquement des anomalies détectées par e-mail, mais vous pouvez également configurer des alertes via Cloud Logging et les canaux de notification Cloud Monitoring.
À chaque intervalle de surveillance, si le seuil d'au moins une caractéristique dépasse le seuil, la surveillance de modèle envoie une alerte par e-mail à chaque adresse e-mail que vous avez spécifiée lors de la création du job de surveillance de modèle. Le message contient les éléments suivants :
- L'heure d'exécution de la tâche de surveillance
- Nom de la caractéristique qui présente un écart ou une dérive
- Le seuil d'alerte et la mesure de distance statistique enregistrée
Cloud Logging
Pour activer les alertes Cloud Logging, définissez le champ enableLogging
de votre configuration ModelMonitoringAlertConfig
sur true
.
À chaque intervalle de surveillance, un journal des anomalies est écrit dans Cloud Logging si la distribution d'au moins une caractéristique dépasse le seuil de cette fonctionnalité. Vous pouvez transférer les journaux vers n'importe quel service compatible avec Cloud Logging, tel que Pub/Sub.
Les anomalies sont écrites dans Cloud Logging avec le nom de journal : model_monitoring_anomaly
. Exemple :
logName="projects/model-monitoring-demo/logs/aiplatform.googleapis.com%2Fmodel_monitoring_anomaly" resource.labels.model_deployment_monitoring_job=6680511704087920640
Voici un exemple d'entrée de journal d'anomalies :
{ "insertId": "b0e9c0e9-0979-4aff-a5d3-4c0912469f9a@a1", "jsonPayload": { "anomalyObjective": "RAW_FEATURE_SKEW", "endTime": "2022-02-03T19:00:00Z", "featureAnomalies": [ { "featureDisplayName": "age", "deviation": 0.9, "threshold": 0.7 }, { "featureDisplayName": "education", "deviation": 0.6, "threshold": 0.3 } ], "totalAnomaliesCount": 2, "@type": "type.googleapis.com/google.cloud.aiplatform.logging.ModelMonitoringAnomaliesLogEntry", "startTime": "2022-02-03T18:00:00Z", "modelDeploymentMonitoringJob": "projects/677687165274/locations/us-central1/modelDeploymentMonitoringJobs/6680511704087920640", "deployedModelId": "1645828169292316672" }, "resource": { "type": "aiplatform.googleapis.com/ModelDeploymentMonitoringJob", "labels": { "model_deployment_monitoring_job": "6680511704087920640", "location": "us-central1", "resource_container": "projects/677687165274" } }, "timestamp": "2022-02-03T19:00:00Z", "severity": "WARNING", "logName": "projects/model-monitoring-demo/logs/staging-aiplatform.sandbox.googleapis.com%2Fmodel_monitoring_anomaly", "receiveTimestamp": "2022-02-03T19:59:52.121398388Z" }
Canaux de notification
À chaque intervalle de surveillance, si le seuil d'au moins une caractéristique dépasse le seuil, la surveillance de modèle envoie une alerte aux canaux de notification Cloud Monitoring que vous avez spécifiés lors de la création du job de surveillance de modèle. Cette alerte inclut des informations sur le job de surveillance de modèle qui a déclenché l'alerte.
Mettre à jour une tâche de surveillance de modèle
Vous pouvez afficher, mettre à jour, suspendre et supprimer une tâche de surveillance de modèle. Vous devez la suspendre pour pouvoir la supprimer.
Console
La mise en pause et la suppression ne sont pas possibles en passant par la console Google Cloud. Utilisez plutôt gcloud CLI.
Pour mettre à jour les paramètres d'un job de surveillance de modèles, procédez comme suit :
Dans Google Cloud Console, accédez à la page Vertex AI Endpoints.
Cliquez sur le nom du point de terminaison que vous souhaitez modifier.
Cliquez sur Modifier les paramètres.
Dans le volet Modifier le point de terminaison, sélectionnez Objectifs du modèle ou Surveillance des modèles.
Mettez à jour les champs que vous souhaitez modifier.
Cliquez sur Update (Mettre à jour).
Pour afficher les métriques, les alertes et les propriétés de surveillance d'un modèle, procédez comme suit :
Dans Google Cloud Console, accédez à la page Vertex AI Endpoints.
Cliquez sur le nom du point de terminaison.
Dans la colonne Surveillance du modèle que vous souhaitez afficher, cliquez sur Activé.
gcloud
Exécutez la commande suivante :
gcloud ai model-monitoring-jobs COMMAND MONITORING_JOB_ID \ --PARAMETER=VALUE --project=PROJECT_ID --region=LOCATION
où :
COMMAND est la commande que vous souhaitez exécuter sur la tâche de surveillance. Par exemple,
update
,pause
,resume
, oudelete
. Pour en savoir plus, consultez la documentation de référence de gcloud CLI.MONITORING_JOB_ID est l'ID de votre tâche de surveillance. Exemple :
123456789
. Vous pouvez trouver cet ID en récupérant les informations du point de terminaison ou en affichant les propriétés de la surveillance d'un modèle dans la console Google Cloud. L'ID est inclus dans le nom de la ressource de job de surveillance au formatprojects/PROJECT_NUMBER/locations/LOCATION/modelDeploymentMonitoringJobs/MONITORING_JOB_ID
.(facultatif) PARAMETER=VALUE est le paramètre que vous souhaitez mettre à jour. Cette option n'est requise que lorsque vous utilisez la commande
update
. Exemple :monitoring-frequency=2
. Pour obtenir la liste des paramètres que vous pouvez mettre à jour, consultez la documentation de référence de gcloud CLI.PROJECT_ID est l'ID du projet Google Cloud. Exemple :
my-project
.LOCATION est l'emplacement de votre job de surveillance. Exemple :
us-central1
.
API REST
Suspendre un job
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- PROJECT_NUMBER : numéro de votre projet Google Cloud. Exemple :
1234567890
. - LOCATION : emplacement de votre job de surveillance. Exemple :
us-central1
. - MONITORING_JOB_ID : ID de votre job de surveillance. Exemple :
0987654321
.
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
{}
Supprimer une offre d'emploi
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- PROJECT_NUMBER : numéro de votre projet Google Cloud. Exemple :
my-project
. - LOCATION : emplacement de votre job de surveillance. Exemple :
us-central1
. - MONITORING_JOB_ID : ID de votre job de surveillance. Exemple :
0987654321
.
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/MONITORING_JOB_ID", ... "done": true, ... }
Analyser les données d'écarts et de dérives
Vous pouvez utiliser la console Google Cloud pour visualiser les distributions de chaque caractéristique surveillée et découvrir quelles modifications ont entraîné un écart ou une dérive. Vous pouvez afficher la distribution des valeurs des caractéristiques sous forme d'histogramme.
Console
Pour accéder aux histogrammes de distribution de caractéristiques dans la console Google Cloud, accédez à la page Endpoints.
Sur la page Points de terminaison, cliquez sur le point de terminaison que vous souhaitez analyser.
La page d'informations du point de terminaison sélectionné contient la liste de tous les modèles déployés sur ce point de terminaison. Cliquez sur le nom d'un modèle à analyser.
La page d'informations du modèle répertorie les caractéristiques d'entrée du modèle, ainsi que des informations pertinentes telles que le seuil d'alerte de chaque caractéristique et le nombre d'alertes précédentes pour la caractéristique.
Pour analyser une caractéristique, cliquez sur son nom. Une page affiche les histogrammes de distribution des caractéristiques pour cette caractéristique.
Pour chaque caractéristique surveillée, vous pouvez afficher les distributions des 50 tâches de surveillance les plus récentes dans la console Google Cloud. Pour la détection des écarts, la distribution des données d'entraînement s'affiche juste à côté de la distribution des données d'entrée :
Visualiser la distribution des données sous forme d'histogrammes vous permet de vous concentrer rapidement sur les modifications survenues dans les données. Vous pouvez ensuite décider d'ajuster votre pipeline de génération de caractéristiques ou de réentraîner le modèle.
Étape suivante
- Utilisez Model Monitoring en suivant la documentation de l'API.
- Utilisez l'API Model Monitoring en suivant la documentation de gcloud CLI.
- Essayez l'exemple de notebook dans Colab ou affichez-le sur GitHub.
- Découvrez comment Model Monitoring calcule les décalages entraînement/inférence et les dérives de prédiction.