Abweichung und Drift der Featureattribution überwachen

Auf dieser Seite wird beschrieben, wie Sie Vertex AI-Modellmonitoring mit Vertex Explainable AI verwenden, um Abweichungen und Drifts für die Feature-Attributionen von kategorialen und numerischen Eingabefeatures zu erkennen.

Übersicht über das Monitoring der Feature-Attribution

Feature-Attributionen geben an, wie viel jedes Feature in Ihrem Modell zu den Vorhersagen für die jeweilige Instanz beigetragen hat. Wenn Sie Vorhersagen anfordern, erhalten Sie entsprechende vorhergesagte Werte für Ihr Modell. Wenn Sie Erläuterungen anfordern, erhalten Sie die Vorhersagen zusammen mit Informationen zur Feature-Attribution.

Die Attributionswerte sind proportional zum Beitrag des Features zur Vorhersage eines Modells. Sie sind normalerweise signiert und geben an, ob ein Feature die Vorhersage nach oben oder unten verschiebt. Attributionen für alle Features müssen insgesamt den Vorhersagewert des Modells ergeben.

Durch das Monitoring der Feature-Attributionen verfolgt das Model Monitoring Änderungen in den Beiträgen eines Features zu den Vorhersagen eines Modells im Laufe der Zeit. Eine Änderung des Attributionswerts in einem Schlüsselfeature weist häufig darauf hin, dass sich das Feature so geändert hat, dass sich dies auf die Genauigkeit der Vorhersagen des Modells auswirken kann.

Informationen darüber, wie ein Feature-Attributionswert berechnet wird, finden Sie unter Feature-Attributionsmethoden.

Abweichungen zwischen Training und Bereitstellung der Feature-Attribution und Vorhersage-Drift

Wenn Sie einen Monitoring-Job für ein Modell mit aktivierter Vertex Explainable AI erstellen, überwacht Model Monitoring Abweichungen oder Drift sowohl für die Feature-Verteilungen als auch die Feature-Attributionen. Informationen zu Abweichungen und Drift bei der Feature-Verteilung finden Sie unter Einführung in Vertex AI Model Monitoring.

Für Feature-Attributionen:

  • Abweichungen zwischen Training und Bereitstellung tritt auf, wenn der Attributionswert eines Features in der Produktion von dem Attributionswert des Features in den ursprünglichen Trainingsdaten abweicht.

  • Vorhersage-Drifts treten auf, wenn sich der Attributionswert eines Features in der Produktion im Laufe der Zeit erheblich ändert.

Sie können die Abweichungserkennung aktivieren, wenn Sie das ursprüngliche Trainings-Dataset für Ihr Modell angeben. Andernfalls sollten Sie die Drift-Erkennung aktivieren. Sie können sowohl die Abweichungs- als auch die Drifterkennung aktivieren.

Vorbereitung

Führen Sie die folgenden Schritte aus, um das Model Monitoring mit Vertex Explainable AI zu verwenden:

  1. Wenn Sie die Abweichungserkennung aktivieren, laden Sie Ihre Trainingsdaten oder die Ausgabe eines Batcherläuterungsjob für Ihr Trainings-Dataset in Cloud Storage oder BigQuery hoch. Rufen Sie den URI-Link zu den Daten ab. Für die Drifterkennung sind Trainingsdaten oder eine Erläuterungs-Baseline nicht erforderlich.

  2. Sie haben in Vertex AI ein verfügbares Modell, das entweder ein tabellarisches AutoML-Modell oder ein importiertes benutzerdefiniertes Trainingsmodell ist:

  3. Konfigurieren Sie das Modell so, dass beim Erstellen, Importieren oder Bereitstellen des Modells Vertex Explainable AI verwendet wird. Das Feld ExplanationSpec.ExplanationParameters muss für Ihr Modell ausgefüllt werden.

  4. Optional: Für benutzerdefiniert trainierte Modelle laden Sie das Analyseinstanzschema für Ihr Modell in Cloud Storage hoch. Für das Modell-Monitoring muss das Schema den Monitoring-Prozess starten und die Basisverteilung zur Verzerrungserkennung berechnen. Wenn Sie das Schema während der Joberstellung nicht angeben, verbleibt der Job im Status "Ausstehend", bis das Modellmonitoring das Schema aus den ersten 1.000 Vorhersageanfragen, die das Modell empfängt, automatisch parsen kann.

Erkennung von Abweichungen oder Drifts aktivieren

Erstellen Sie einen Monitoring-Job für die Modellbereitstellung, um die Erkennung von Abweichungen oder die Drifterkennung einzurichten:

Console

Erstellen Sie einen vorhandenen Endpunkt, um mithilfe der Google Cloud Console einen Monitoring-Job zur Modellbereitstellung zu erstellen:

  1. Rufen Sie in der Google Cloud Console die Seite Vertex AI-Endpunkte auf.

    Endpunkte aufrufen

  2. Klicken Sie auf Endpunkt erstellen.

  3. Geben Sie im Bereich Neuer Endpunkt einen Namen für den Endpunkt ein und legen Sie eine Region fest.

  4. Klicken Sie auf Weiter.

  5. Wählen Sie im Feld Modellname ein importiertes benutzerdefiniertes Trainingsmodell oder ein tabellarisches AutoML-Modell aus.

  6. Wählen Sie im Feld Version eine Version für Ihr Modell aus.

  7. Klicken Sie auf Weiter.

  8. Achten Sie darauf, dass im Bereich Modellmonitoring die Option Modell-Monitoring für diesen Endpunkt aktivieren aktiviert ist. Alle von Ihnen konfigurierten Monitoring-Einstellungen gelten für alle Modelle, die auf dem Endpunkt bereitgestellt werden.

  9. Geben Sie einen Anzeigenamen des Monitoring-Jobs ein.

  10. Geben Sie eine Länge des Monitoringfensters ein.

  11. Geben Sie unter Benachrichtigungs-E-Mails eine oder mehrere durch Kommas getrennte E-Mail-Adressen ein, um Benachrichtigungen zu erhalten, wenn ein Modell einen Benachrichtigungsgrenzwert überschreitet.

  12. (Optional) Wählen Sie für Benachrichtigungskanäle (Vorschau) Cloud Monitoring-Kanäle aus, um Benachrichtigungen zu erhalten, wenn ein Modell einen Benachrichtigungsgrenzwert überschreitet. Sie können vorhandene Cloud Monitoring-Kanäle auswählen oder neue erstellen. Klicken Sie dazu auf Benachrichtigungskanäle verwalten. Die Console unterstützt PagerDuty-, Slack- und Pub/Sub-Benachrichtigungskanäle.

  13. Geben Sie eine Abtastrate ein.

  14. Optional: Geben Sie das Eingabeschema für die Vorhersage und das Eingabeschema für die Analyse ein.

  15. Klicken Sie auf Weiter. Der Bereich Monitoring-Ziel wird mit Optionen zur Erkennung von Abweichungen oder Drifts geöffnet:

    Abweichungserkennung

    1. Wählen Sie Erkennung von Abweichungen zwischen Training und Bereitstellung aus.
    2. Geben Sie unter Trainingsdatenquelle eine Trainingsdatenquelle an.
    3. Geben Sie unter Zielspalte den Spaltennamen aus den Trainingsdaten ein, für die das Modell trainiert werden soll. Dieses Feld ist aus der Monitoringanalyse ausgeschlossen.
    4. Optional: Geben Sie unter Benachrichtigungsgrenzwerte Grenzwerte an, ab denen Benachrichtigungen ausgelöst werden sollen. Informationen zum Formatieren der Grenzwerte erhalten Sie, wenn Sie den Mauszeiger auf das Hilfesymbol bewegen.
    5. Klicken Sie auf Erstellen.

    Drifterkennung

    1. Wählen Sie die Erkennung des Vorhersage-Drifts aus.
    2. Optional: Geben Sie unter Benachrichtigungsgrenzwerte Grenzwerte an, ab denen Benachrichtigungen ausgelöst werden sollen. Informationen zum Formatieren der Grenzwerte erhalten Sie, wenn Sie den Mauszeiger auf das Hilfesymbol bewegen.
    3. Klicken Sie auf Erstellen.

gcloud

Wenn Sie einen Monitoring-Job für die Modellbereitstellung mit der gcloud CLI erstellen möchten, stellen Sie Ihr Modell zuerst auf einem Endpunkt bereit.

Die Konfiguration eines Monitoring-Jobs gilt für alle bereitgestellten Modelle unter einem Endpunkt.

Führen Sie den Befehl gcloud ai model-monitoring-jobs create aus:

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 \
  --target-field=TARGET_FIELD \
  --bigquery-uri=BIGQUERY_URI

wobei

  • PROJECT_ID ist die ID des Google Cloud-Projekts. Beispiel: my-project

  • REGION ist der Speicherort für Ihren Monitoring-Job. Beispiel: us-central1

  • MONITORING_JOB_NAME ist der Name Ihres Monitoring-Jobs. Beispiel: my-job

  • EMAIL_ADDRESS ist die E-Mail-Adresse, an die Sie Benachrichtigungen von Modell-Monitoring erhalten möchten. Beispiel: [email protected]

  • ENDPOINT_ID ist der Name des Endpunkts, unter dem Ihr Modell bereitgestellt wird. Beispiel: 1234567890987654321.

  • Optional: FEATURE_1=THRESHOLD_1 ist der Schwellenwert für Benachrichtigungen für jedes Feature, das Sie überwachen möchten. Wenn Sie beispielsweise Age=0.4 angeben, protokolliert Modell-Monitoring eine Benachrichtigung, wenn die [statistische Entfernung][stat-distance] zwischen den Eingabe- und Referenzverteilungen für das Feature Age 0,4 überschreitet.

  • Optional: SAMPLING_RATE ist der Anteil der eingehenden Vorhersageanfragen, die Sie protokollieren möchten. Beispiel: 0.5. Wenn nicht angegeben, protokolliert Model Monitoring alle Vorhersageanfragen.

  • Optional: MONITORING_FREQUENCY ist die Häufigkeit, mit der der Monitoringjob mit kürzlich protokollierten Eingaben ausgeführt werden soll. Die Mindestgranularität beträgt 1 Stunde. Der Standardwert ist 24 Stunden. Beispiel: 2.

  • (Nur für die Abweichungserkennung erforderlich) TARGET_FIELD ist das Feld, das vom Modell vorhergesagt wird. Dieses Feld ist aus der Monitoringanalyse ausgeschlossen. Beispiel: housing-price.

  • (Nur für die Abweichungserkennung erforderlich) BIGQUERY_URI ist der Link zum in BigQuery gespeicherten Trainings-Dataset im folgenden Format:

    bq://\PROJECT.\DATASET.\TABLE
    

    z. B. bq://\my-project.\housing-data.\san-francisco.

    Sie können das Flag bigquery-uri durch alternative Links zu Ihrem Trainings-Dataset ersetzen:

    • Verwenden Sie --data-format=csv --gcs-uris=gs://BUCKET_NAME/OBJECT_NAME für eine in einem Cloud Storage-Bucket gespeicherte CSV-Datei.

    • Verwenden Sie --data-format=tf-record --gcs-uris=gs://BUCKET_NAME/OBJECT_NAME für eine TFRecord-Datei, die in einem Cloud Storage-Bucket gespeichert ist.

    • Verwenden Sie --dataset=DATASET_ID für ein tabellarisches von AutoML verwaltetes Dataset, d.h. Dataset-ID.

Python SDK

Informationen zum vollständigen End-to-End-Model Monitoring API-Workflow finden Sie im Beispielnotebook.

REST API

  1. Stellen Sie das Modell auf einem Endpunkt bereit, falls noch nicht geschehen.

  2. Rufen Sie die bereitgestellte Modell-ID für Ihr Modell ab. Rufen Sie dazu die Endpunktinformationen ab. Beachten Sie den DEPLOYED_MODEL_ID. Dies ist der Wert von deployedModels.id in der Antwort.

  3. Erstellen Sie eine Anfrage für einen Model Monitoring-Job. In der folgenden Anleitung wird gezeigt, wie Sie einen einfachen Monitoringjob zur Drifterkennung mit Attributionen erstellen. Fügen Sie für die Abweichungserkennung das Objekt explanationBaseline in das Feld explanationConfig im JSON-Anfragetext ein und geben Sie Folgendes an:

    Weitere Informationen finden Sie in der Referenz zu Monitoring-Jobs.

    Ersetzen Sie diese Werte in den folgenden Anfragedaten:

    • PROJECT_ID ist die ID des Google Cloud-Projekts. Beispiel: my-project
    • LOCATION ist der Speicherort für Ihren Monitoring-Job. Beispiel: us-central1.
    • MONITORING_JOB_NAME ist der Name Ihres Monitoring-Jobs. Beispiel: my-job
    • PROJECT_NUMBER ist die Nummer Ihres Google Cloud-Projekts. Beispiel: 1234567890.
    • ENDPOINT_ID ist die ID des Endpunkts, für den das Modell bereitgestellt wird. Beispiel: 1234567890.
    • DEPLOYED_MODEL_ID ist Die ID für das bereitgestellte Modell.
    • FEATURE:VALUE ist der Schwellenwert für Benachrichtigungen für jedes Feature, das Sie überwachen möchten. Beispiel: "housing-latitude": {"value": 0.4} Eine Benachrichtigung wird protokolliert, wenn die statistische Entfernung zwischen der Eingabefeatureverteilung und der entsprechenden Baseline den angegebenen Grenzwert überschreitet. Standardmäßig wird jedes kategoriale und numerische Feature mit Grenzwerten von 0,3 überwacht.
    • EMAIL_ADDRESS ist die E-Mail-Adresse, an die Sie Benachrichtigungen von Model Monitoring erhalten möchten. Beispiel: [email protected].
    • NOTIFICATION_CHANNELS (nur in v1beta1): Eine Liste von Cloud Monitoring-Benachrichtigungskanälen, in denen Sie Benachrichtigungen von Model Monitoring erhalten möchten. Verwenden Sie die Ressourcennamen für die Benachrichtigungskanäle, die Sie durch Auflisten der Benachrichtigungskanäle in Ihrem Projekt abrufen können. Zum Beispiel: "projects/my-project/notificationChannels/1355376463305411567", "projects/my-project/notificationChannels/1355376463305411568".

    JSON-Text der Anfrage:

    {
      "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
                   }
                }
             },
            "explanationConfig": {
                "enableFeatureAttributes": true
            }
          }
      },
      "loggingSamplingStrategy": {
         "randomSampleConfig":  {
            "sampleRate":  0.5,
         },
      },
      "modelDeploymentMonitoringScheduleConfig": {
         "monitorInterval": {
            "seconds": 3600,
         },
      },
      "modelMonitoringAlertConfig": {
         "emailAlertConfig": {
            "userEmails": ["EMAIL_ADDRESS"],
         },
         "notificationChannels": [NOTIFICATION_CHANNELS]
      }
    }
    

    Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

    Sie sollten in etwa folgende JSON-Antwort erhalten:

    {
      "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"
        }
      ],
      ...
    }
    

Sobald der Monitoring-Job erstellt wurde, erfasst die Modellüberwachung eingehende Vorhersageanfragen in einer generierten BigQuery-Tabelle mit dem Namen PROJECT_ID.model_deployment_monitoring_ENDPOINT_ID.serving_predict. Wenn das Anfrage-/Antwort-Logging aktiviert ist, protokolliert die Modellüberwachung eingehende Anfragen in dersel