Dieses Dokument ist das dritte einer Reihe, in der erläutert wird, wie Sie Modelle für maschinelles Lernen (ML) überwachen, die in AI Platform Prediction zur Datenverzerrung bereitgestellt werden. Der Schwerpunkt dieses Leitfadens liegt auf den Konzepten und Implementierungsmethoden für die Erkennung von Abweichungen zwischen Training und Bereitstellung mithilfe von TensorFlow Data Validation (TFDV).
Dieser Leitfaden richtet sich an Data Scientists und ML-Entwickler, die überwachen möchten, wie sich Datenänderungen im Laufe der Zeit ändern und ob es Abweichungen bei der Datenverzerrung oder Anomalien gibt. Dabei wird davon ausgegangen, dass Sie mit Google Cloud, BigQuery und Jupyter-Notebooks vertraut sind.
Die Reihe besteht aus folgenden Führungslinien:
- Logging-Anfragen mit AI Platform Prediction protokollieren
- Logs in BigQuery analysieren
- Abweichungen zwischen Training-Server und TensorFlow-Datenvalidierung analysieren (dieses Dokument)
- Erkennung von Trainingsservern automatisieren
- Trainings-Server-Verzerrung mit Neuerkennungserkennung identifizieren
Der Code für den in diesem Dokument beschriebenen Prozess ist in Jupyter-Notebooks integriert. Die Notebooks befinden sich in einem GitHub-Repository.
Daten- und Konzeptabweichungen verstehen
Die Überwachung der Vorhersageleistung eines ML-Modells in der Produktion hat sich bei MLOps als wichtiger Bereich erwiesen. Im Folgenden sind zwei häufige Ursachen für Abbrüche bei der Vorhersageleistung eines Modells im Zeitverlauf dargestellt:
- Eine Abweichung zwischen Trainingsdaten und Bereitstellungsdaten steigt. Dieses Problem wird als Datenabweichung bezeichnet.
- Die Interpretation der Beziehung zwischen den Eingabe-Predictors und der Zielfunktion entwickelt sich. Dieses Problem wird als Konzeptabweichung bezeichnet.
Bei der Übertragung von Daten fließen die Produktionsdaten, die ein Modell für die Bewertung erhalten, von dem Dataset ab, mit dem das Modell trainiert, optimiert und bewertet wurde. Die Diskrepanzen zwischen Trainingsdaten und Bereitstellungsdaten können in der Regel als Schemaverzerrungen oder Verteilungsabweichungen klassifiziert werden:
Eine Schemaverzerrung tritt auf, wenn Trainingsdaten und Bereitstellungsdaten nicht dasselbe Schema haben. Die Schemaverzerrung wird häufig durch Fehler oder Änderungen im vorgelagerten Prozess verursacht, durch die die Bereitstellungsdaten generiert werden. Schemaabweichungen zwischen Trainings- und Bereitstellungsdaten können Folgendes umfassen:
- Uneinheitliche Merkmale – zum Beispiel wird ein neues Feature zu den Bereitstellungsdaten hinzugefügt.
- Inkonsistente Featuretypen: Beispielsweise ist ein numerisches Feature, das in den Trainingsdaten eine Ganzzahl war, eine echte Zahl in den Bereitstellungsdaten.
- Inkonsistente Funktionsdomains: Beispielsweise ändert sich ein Wert in einem kategorialen Merkmal oder es gibt eine Änderung des Bereichs von numerischen Features.
Verteilungsabweichung tritt auf, wenn die Verteilung von Merkmalswerten für Trainingsdaten erheblich von den Bereitstellungsdaten abweicht. Diese Verzerrung kann auftreten, wenn Sie das falsche Trainings-Dataset für reale Daten auswählen. Diese Verzerrung tritt manchmal auch auf, wenn sich neue Trends und Muster aufgrund der Änderungen in der Dynamik der Umgebung ergeben. Das können beispielsweise Preise für Immobilien oder Änderungen bei der Beliebtheit von Modeartikeln sein.
Konzeptabweichung bedeutet, dass sich Ihre Interpretation der Daten geändert hat. Oftmals impliziert die Annahme, dass die Zuordnung von Eingabemerkmalen zu Labels, die während des Trainings verwendet werden, nicht mehr gültig ist oder dass eine neuartige Klasse oder eine Reihe von Labelwerten angezeigt wurde. Konzeptabweichung ist häufig das Ergebnis einer Änderung des Prozesses, den Sie modellieren möchten. Es ist auch eine Weiterentwicklung dieses Prozesses möglich.
Dieses Dokument konzentriert sich auf das Data-Drift-Szenario. Dabei geht es insbesondere darum, Schemaabweichungen und Funktionsverteilungen zwischen den Trainingsdaten und den Bereitstellungsdaten zu erkennen.
Architektur
Das folgende Diagramm zeigt die in diesem Dokument beschriebene Umgebung:
In dieser Architektur protokolliert das Anfrage-/Antwort-Logging von AI Platform Prediction eine Stichprobe von Onlineanfragen in einer BigQuery-Tabelle. Sie können diese Daten anschließend parsen, beschreibende Statistiken berechnen und Datenverzerrung und Datenabweichungen zeigen, indem Sie von Vertex AI Workbench verwaltete Notebooks und TFDV verwenden.
Auslieferungsdaten erfassen
Ein früheres Dokument in dieser Reihe, Logging-Anfragen mithilfe von AI Platform Prediction, zeigt, wie Sie mit AI Platform Prediction ein Keras-Modell für Onlinevorhersagen bereitstellen. Außerdem erfahren Sie, wie Sie die Anfrage-Antwort-Protokollierung aktivieren, die eine Stichprobe von Online-Vorhersageanforderungen und -antworten in einer BigQuery-Tabelle protokolliert.
Die protokollierten Anfrageinstanzen und Antwortvorhersagen werden in einem Rohformat gespeichert. Das vorhergehende Dokument dieser Reihe zeigt, wie Sie diese Rohdatenlogs parsen und eine strukturierte Ansicht zum Analysieren von Eingabemerkmalen und Ausgabevorhersagen erstellen. Außerdem wird in diesem Dokument die Verwendung von Looker Studio zur Visualisierung der Änderungen verschiedener Featurewerte über die Zeit beschrieben. Mithilfe der Visualisierung lassen sich auch Ausreißer in den Daten erkennen, die zu Vorhersageabweichungen führen können.
Abweichungen bei der Auslieferung von Daten erkennen
Es ist schwierig, mögliche Verzerrungen und Anomalien in Ihren Daten einfach anhand der Visualisierung zu identifizieren. Das ist besonders schwierig, wenn Sie viele große Eingabefeatures haben. Daher benötigen Sie einen skalierbaren und automatisierten Ansatz in der Produktion, um potenzielle Probleme proaktiv in den Bereitstellungsdaten aufzuzeigen.
In diesem Dokument wird beschrieben, wie Sie mit TFVD Datensenken erkennen, analysieren und visualisieren. TFDV analysiert die Bereitstellungsdatenlogs anhand des erwarteten Schemas und anhand der Statistiken, die aus den Trainingsdaten generiert wurden, um Anomalien zu ermitteln und Abweichungen zwischen Training und Bereitstellung zu erkennen. Wie im vorherigen Architekturdiagramm gezeigt, verwenden Sie von Nutzern verwaltete Notebooks zur interaktiven Verwendung von TFDG-Tools.
TFDV zur Erkennung von Abweichungen zwischen Training und Bereitstellung verwenden
Das folgende Diagramm veranschaulicht den Workflow für die Verwendung von TFDV zur Erkennung und Analyse von Abweichungen in Anfrage-/Antwort-Logs von BigQuery.
Der Workflow besteht aus folgenden Phasen:
- Baseline-Statistiken und ein Referenzschema aus den Trainingsdaten generieren Sie können dann die Baseline und das Referenzschema verwenden, um die Bereitstellungsdaten zu validieren.
- Serving-Datenverzerrung erkennen Dieser Prozess erzeugt die Statistik für die Bereitstellung von Daten und ermittelt etwaige Anomalien, die bei der Validierung der Bereitstellungsdaten anhand des Referenzschemas festgestellt werden.
- Validierungsausgabe analysieren und visualisieren Die erstellten Anomalien werden dann visualisiert und analysiert und die Statistiken werden grafisch dargestellt, um Verteilungsveränderungen darzustellen.
Ziele
- Baseline-Statistiken und ein Referenzschema generieren
- Erkennung von Serverabweichungen
- Validierungsausgaben analysieren und visualisieren
Kosten
In diesem Dokument verwenden Sie die folgenden kostenpflichtigen Komponenten von Google Cloud:
Mit dem Preisrechner können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung vornehmen.
Hinweis
Bevor Sie beginnen, müssen Sie Teil 1 und Teil 2 dieser Reihe absolvieren.
Nach Abschluss dieser Schritte haben Sie Folgendes:
- Eine von Nutzern verwaltete Vertex AI Workbench-Notebookinstanz, die TensorFlow 2.3 verwendet.
- Einen Klon des GitHub-Repositorys mit dem Jupyter-Notebook, das Sie für diese Anleitung benötigen.
- Eine BigQuery-Tabelle mit Anfrage-Antwort-Logs und einer Ansicht, die die Rohdaten- und Antwortdaten parst.
Das Jupyter-Notebook für dieses Szenario
Für diesen Workflow wird ein End-to-End-Prozess in einem Jupyter Notebook im GitHub-Repository codiert, das mit diesem Dokument verknüpft ist. Die Schritte im Notebook basieren auf dem Dataset Covertype aus dem UCI Machine Learning Repository. Dies ist dasselbe Dataset, das in der Vergangenheit für Beispieldaten in Dokumenten dieser Reihe verwendet wurden.
Notebook-Einstellungen konfigurieren
In diesem Abschnitt bereiten Sie die Python-Umgebung vor und legen Variablen fest, die Sie zum Ausführen des Codes für das Szenario benötigen.
Wenn Sie die Instanz für vom Nutzer verwaltete Notebooks aus Teil 1 noch nicht geöffnet haben, gehen Sie so vor:
Rufen Sie in der Google Cloud Console die Seite Notebooks auf.
Wählen Sie auf dem Tab Nutzerverwaltete Notebooks das Notebook aus und klicken Sie auf Jupyterlab öffnen. Die JupyterLab-Umgebung wird im Browser geöffnet.
Öffnen Sie im Dateibrowser die Datei
mlops-on-gcp
und rufen Sie das Verzeichnisskew-detection
auf.
03-covertype-drift-detection_tfdv.ipynb
Notebook öffnen.Führen Sie im Notebook unter Einrichtung die Zelle Pakete und Abhängigkeiten installieren aus, um die erforderlichen Python-Pakete zu installieren und die Umgebungsvariablen zu konfigurieren.
Legen Sie unter Einstellungen der Google Cloud-Umgebung konfigurieren die folgenden Variablen fest:
PROJECT_ID
: Die ID des Google Cloud-Projekts, in dem das BigQuery-Dataset für die Anfrage-Antwort-Daten protokolliert wird.BUCKET
: Der Name des Cloud Storage-Buckets, in dem generierte Artefakte gespeichert werden.BQ_DATASET_NAME
: Der Name des BigQuery-Datasets, in dem die Anfrage-Antwort-Logs gespeichert sind.BQ_VIEW_NAME
: Der Name der BigQuery-Ansicht, die Sie in Teil 2 der Reihe erstellt haben.MODEL_NAME
: Der Name des Modells, das für AI Platform Prediction bereitgestellt wird.VERSION_NAME
: Der Versionsname des Modells, das in AI Platform Prediction bereitgestellt wird. Die Version hat das Format vN; zum Beispielv1
.
Führen Sie die verbleibenden Zellen unter Einrichtung aus, um die Konfiguration der Umgebung abzuschließen:
- GCP-Konto authentifizieren
- Bibliotheken importieren
- Lokalen Arbeitsbereich erstellen
Baseline-Statistiken und ein Referenzschema generieren
Führen Sie die Aufgaben im ersten Abschnitt des Notebooks aus, damit die Trainingsdaten Baseline-Statistiken und das Schema generieren.
Laden Sie die Daten als CSV-Dateien herunter und verwenden Sie die Methode tfdv.generate_statistics_from_csv
, um die Referenzstatistik zu berechnen und diese in die Variable baseline_stats
einzufügen. Der Code verwendet die Methode tfdv.infer_schema
, um das Referenzschema der Trainingsdaten abzuleiten und in die Variable reference_schema
einzufügen.
Sie können das abgeleitete Schema, wie im folgenden Code-Snippet gezeigt, ändern:
baseline_stats = tfdv.generate_statistics_from_csv( data_location=TRAIN_DATA, stats_options=tfdv.StatsOptions(schema=reference_schema, sample_count=10000)) reference_schema = tfdv.infer_schema(baseline_stats) # Set Soil_Type to be categorical tfdv.set_domain(reference_schema, 'Soil_Type', schema_pb2.IntDomain( name='Soil_Type', is_categorical=True)) # Set Cover_Type to be categorical tfdv.set_domain(reference_schema, 'Cover_Type', schema_pb2.IntDomain( name='Cover_Type', is_categorical=True)) # Set max and min values for Elevation tfdv.set_domain(reference_schema, 'Elevation', tfdv.utils.schema_util.schema_pb2.IntDomain(min=1000, max=5000)) # Allow no missing values tfdv.get_feature(reference_schema, 'Slope').presence.min_fraction = 1.0 # Set distribution skew detector for Wilderness_Area tfdv.get_feature(reference_schema, 'Wilderness_Area').skew_comparator.infinity_norm.threshold = 0.05
Das generierte Referenzschema wird mithilfe der Methode tfdv.display_schema
angezeigt. Die Liste sieht in etwa so aus:
Abweichungen bei der Auslieferung von Daten erkennen
Im nächsten Abschnitt des Notebooks führen Sie Aufgaben aus, um Bereitstellungsdaten zu erkennen. Der Prozess besteht aus den folgenden Schritten:
- Die Daten zur Anfrage-Antwort werden aus der Ansicht
vw_covertype_classifier_logs_v1
in BigQuery gelesen. Die Ansicht enthält geparste Merkmalswerte und Vorhersagen, die in der Tabellecovertype_classifier_logs
protokolliert sind. Die Tabelle enthält Rohinstanzanfragen und Vorhersageantworten aus demcovertype_classifier
-Modell, das zuvor in AI Platform Prediction bereitgestellt wurde. - Die protokollierten Daten zur Auslieferung werden in einer CSV-Datei gespeichert, damit sie von TFDV verwendet werden können.
TFDV berechnet Bereitstellungsstatistiken aus der CSV-Datendatei für verschiedene Segmente der Bereitstellungsdaten mit der Methode
tfdv.experimental_get_feature_value_slicer
, wie im folgenden Code-Snippet dargestellt:slice_fn = tfdv.experimental_get_feature_value_slicer(features={'time': None}) serving_stats_list = tfdv.generate_statistics_from_csv( data_location=serving_data_file, stats_options=tfdv.StatsOptions( slice_functions=[slice_fn], schema=reference_schema))
TFDV überprüft mithilfe der Methode
tfdv.validate_statistics
jedesserving_stats
-Segment anhand des Referenzschemas in der Variablereference_schema
. Dieser Prozess generiert Anomalien, wie im folgenden Code-Snippet dargestellt:anomalies_list = [] for slice_key in slice_keys[1:]: serving_stats = tfdv.get_slice_stats(serving_stats_list, slice_key) anomalies = tfdv.validate_statistics( serving_stats, schema=reference_schema, previous_statistics=baseline_stats) anomalies_list.append(anomalies)
TFVD prüft Anomalien und vergleicht den Protokollpuffer. Informationen zu den von TFD erkannten Anomalietypen finden Sie in der Referenz zu Anomalien der TensorFlow-Datenvalidierung. Die Schema- und Statistikfelder werden verwendet, um alle Anomalietypen und die Bedingungen zu erkennen, unter denen jeder Anomalietyp erkannt wird.
Validierungsausgaben analysieren und visualisieren
Visualisieren Sie im letzten Abschnitt des Notebooks Anomalien. Der Code verwendet die Methode tfdv.visualize_statistics
, um ein serving_stats
-Segment anhand der Statistikwerte der Trainingsdaten zu visualisieren, um die Verteilungsverzerrungen hervorzuheben.
Der folgende Screenshot zeigt ein Beispiel für eine Visualisierung für Verteilungen für die numerischen Features Elevation
und Aspect
.
Die folgenden Screenshots zeigen Beispiele von Visualisierungen für die kategorialen Features Wildness_Area
und Cover_Type
. In der kategorialen Merkmalsvisualisierung ist Cover_Type das Zielmerkmal und die Verteilung zeigt eine Vorhersageverzerrung an.
Zum Prüfen der generierten Anomalien in jedem serving_stats
-Segment rufen Sie die Methode tfdv.display_anomalies
auf. Die folgende Auflistung zeigt ein Beispiel für die erkannten Anomalien.
Zusätzlich zum Erstellen von Visualisierungen mithilfe der TFDV-Visualisierungs-API können Sie eine Python-Plot-Bibliothek verwenden, um die Statistiken in Ihrem Notebook zu visualisieren.
In den folgenden Abbildungen wird gezeigt, wie die Mittelwerte des numerischen Features in der Bereitstellungsstatistik über Zeitabschnitte hinweg differenzieren und wie sich die Werte mit den Mittelwerten in der Referenzstatistik vergleichen:
Das folgende Diagramm zeigt, wie sich die Wertverteilung der kategorialen Funktion in der Bereitstellungsstatistik über Zeitabschnitte erstreckt:
Bereinigen
Wenn Sie den Rest dieser Reihe fortsetzen möchten, behalten Sie die bereits vorhandenen Ressourcen bei. Löschen Sie andernfalls das Projekt, das die Ressourcen enthält, oder behalten Sie das Projekt und löschen Sie die einzelnen Ressourcen.
Projekt löschen
- Wechseln Sie in der Google Cloud Console zur Seite Ressourcen verwalten.
- Wählen Sie in der Projektliste das Projekt aus, das Sie löschen möchten, und klicken Sie dann auf Löschen.
- Geben Sie im Dialogfeld die Projekt-ID ein und klicken Sie auf Shut down (Beenden), um das Projekt zu löschen.
Nächste Schritte
- Lesen Sie den Leitfaden Verzerrung der Trainingsbereitstellung für Vorhersagen in AI Platform Prediction automatisieren.
- Lesen Sie den Leitfaden Trainieren von Trainingsserver-Servern mit Neuerkennung ermitteln.
- Weitere Informationen zu MLOps, Continuous Delivery und Pipelines zur Automatisierung im maschinellen Lernen
- Referenzarchitekturen, Diagramme und Best Practices zu Google Cloud kennenlernen. Weitere Informationen zu Cloud Architecture Center