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 Ihr Modell so, dass Vertex Explainable AI beim Erstellen, Importieren oder Bereitstellen des Modells 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) Fügen Sie für Benachrichtigungskanäle (Vorschau) Cloud Monitoring-Kanäle hinzu, 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

Dabei gilt:

  • 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: example@example.com

  • 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 die DEPLOYED_MODEL_ID, also den deployedModels.id-Wert in der Antwort.

  3. Erstellen Sie eine Anfrage für einen Model Monitoring-Job. In der folgenden Anleitung wird gezeigt, wie Sie einen einfachen Monitoring-Job 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 für Ihr Google Cloud-Projekt. Beispiel: 1234567890.
    • ENDPOINT_ID ist die ID des Endpunkts, auf dem Ihr 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: example@example.com.
    • NOTIFICATION_CHANNELS: Eine Liste der Cloud Monitoring-Benachrichtigungskanäle, 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. 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 derselben BigQuery-Tabelle, die für das Anfrage-/Antwort-Logging verwendet wird.

Unter Model Monitoring verwenden finden Sie Anleitungen zum Ausführen der folgenden optionalen Aufgaben:

  • Model Monitoring-Job aktualisieren

  • Benachrichtigungen für den Model Monitoring-Job konfigurieren

  • Benachrichtigungen für Anomalien konfigurieren

Daten von Feature-Attributtionsabweichungen und Drifts analysieren

In der Google Cloud Console können Sie die Feature-Attributionen jedes überwachten Features visualisieren und erfahren, welche Änderungen zu einer Abweichung oder Drift geführt haben. Weitere Informationen zum Analysieren von Daten der Feature-Verteilung finden Sie unter Abweichungs- und Driftdaten analysieren.

Kurzübersicht mit einem Beispiel für die Featureattribution bei Vorhersagedaten und die Featureattribution von Trainingsdaten für die Abweichungserkennung

In einem stabilen System für maschinelles Lernen bleibt die relative Bedeutung von Features im Allgemeinen relativ stabil. Wenn eine wichtige Feature weniger wichtig wird, kann das ein Zeichen dafür sein, dass sich an diesem Feature etwas geändert hat. Häufige Ursachen für Drift oder Abweichung bei der Featurewichtigkeit:

  • Änderungen der Datenquelle.
  • Änderungen des Datenschemas und des Loggings.
  • Änderungen bei Endnutzer-Zusammensetzung oder -Verhalten (z. B. aufgrund von saisonalen Änderungen oder Ausreißerereignissen).
  • Vorgelagerte Änderungen an Features, die von einem anderen ML-Modell generiert wurden. Dazu einige Beispiele:
    • Modellaktualisierungen, die zu einer Erhöhung oder Verringerung der Abdeckung führen (insgesamt oder für einen einzelnen Klassifizierungswert).
    • Eine Leistungsänderung des Modells (die die Bedeutung des Features ändert).
    • Aktualisierungen der Datenpipeline, was zu einer Verringerung der Gesamtabdeckung führen kann.

Berücksichtigen Sie außerdem bei der Analyse der Abweichungs- und Drift-Daten einer Feature-Attribution Folgendes:

  • Verfolgen Sie die wichtigsten Features. Eine große Änderung der Attribution für ein Feature bedeutet, dass sich der Beitrag des Features zur Vorhersage geändert hat. Da die Vorhersage der Summe der Featurebeiträge entspricht, weist ein großer Attributionsdrift der wichtigsten Features in der Regel auf einen großen Drift in den Modellvorhersagen hin.

  • Alle Funktionsdarstellungen überwachen. Featureattributionen sind immer numerisch, unabhängig vom zugrunde liegenden Featuretyp. Aufgrund ihrer additiven Natur können Attributionen auch zu einem mehrdimensionalen Feature (z. B. Einbettungen) auf einen einzelnen numerischen Wert reduziert werden, indem die Attributionen über mehrere Dimensionen hinweg addiert werden. Auf diese Weise können Sie für alle Featuretypen standardmäßige univariative Drift-Methoden verwenden.

  • Berücksichtigen Sie Featureinteraktionen. Die Attribution eines Features berücksichtigt den Beitrag des Features zur Vorhersage, sowohl einzeln als auch in seiner Interaktionen mit anderen Features. Wenn sich die Interaktionen eines Features mit anderen Features ändern, ändern sich die Verteilungen der Attributionen zu einem Feature, auch wenn die Randverteilung des Features gleich bleibt.

  • Featuregruppen überwachen: Da Attributionen additiv sind, können Sie Attributionen verwandter Features addieren, um die Attribution einer Featuregruppe zu erhalten. Bei einem Darlehensmodell können Sie beispielsweise die Attribution zu allen Kredittyp-Features kombinieren (z. B. "grade", "sub_grade", "purpose") und eine einzige Kreditattribution erhalten. Diese Attribution auf Gruppenebene kann dann verfolgt werden, um Änderungen in der Featuregruppe zu erkennen.

Nächste Schritte