ML Observability: Überwachen des Modellverhaltens im Laufe der Zeit

Das Verhalten des Modells kann sich im Laufe der Zeit aufgrund von Eingabeabweichungen, veralteten Trainingsannahmen und Problemen in der Datenpipeline sowie den üblichen Faktoren wie Änderungen an der zugrunde liegenden Hardware- und Software und der fließenden Natur des Datenverkehrs, ändern. Mit ML Observability können Sie die Qualität der Produktionsmodelle, die Sie über die Snowflake Modell-Registry bereitgestellt haben, über mehrere Dimensionen wie Leistung, Abweichung und Volumen hinweg verfolgen. Darüber hinaus können Sie die Modellleistung über verschiedene Segmente Ihrer Daten hinweg überwachen, indem Sie kategorische Zeichenfolgenspalten verwenden.

Derzeit unterstützt der Modellmonitor Regressions- und binäre Klassifikationsmodelle.

Bemerkung

Um mit ML Observability zu beginnen, sehen Sie sich den Quickstart an.

ML Observability-Workflow

Wenn Sie ein Modell, das in der Snowflake Model Registry protokolliert wurde, für die Inferenz verwenden, erhalten Sie die Ergebnisse in Form eines Snowpark- oder pandas-DataFrame, je nach Art des Eingabe-DataFrame, der an die Inferenzmethode übergeben wurde. Diese Daten stammen normalerweise aus Snowflake. Selbst in Fällen, in denen die Inferenz außerhalb von Snowflake ausgeführt wird, ist es üblich, die Ergebnisse in Snowflake zu speichern. Mit ML Observability können Sie die Leistung Ihres Modells in diesen beiden Szenarios überwachen, indem Sie mit den gespeicherten Inferenzdaten arbeiten. Der typische Workflow ist unten dargestellt.

ML Observability-Workflow

In den Überwachungsprotokollen werden die Schlussfolgerungsdaten und die Vorhersagen gespeichert, sodass das ML-Observability-Feature die Veränderungen der Vorhersagen im Laufe der Zeit beobachten kann. Die Überwachungsprotokolle werden in einer Tabelle gespeichert, die eine ID, einen Zeitstempel, Features, Vorhersagen und ein Ground-Truth-Label enthält, das angibt, ob es sich bei einer bestimmten Zeile um eine Vorhersage oder um beobachtete Daten handelt. Die Grundstruktur ist unten dargestellt.

ML Observability in Aktion

Sie müssen für jede Modellversion, die Sie überwachen möchten, explizit ein Modellmonitorobjekt erstellen. Jede Modellversion kann genau einen Monitor haben und jeder Monitor kann genau eine Modellversion überwachen; sie können nicht gemeinsam genutzt werden. Das Monitorobjekt aktualisiert automatisch die Monitorprotokolle durch Abfrage der Quelldaten und aktualisiert die Überwachungsberichte auf der Grundlage der Protokolle.

Jeder Monitor kapselt die folgenden Informationen:

  • Die zu überwachende Modellversion.

  • Die Tabelle, in der die Monitorprotokolle gespeichert werden.

  • Die minimale zeitliche Granularität, in der Daten gespeichert werden (Aggregationsfenster), derzeit mindestens 1 Tag.

  • Eine optionale Basistabelle für vergleichende metrische Operationen wie die Abweichung.

Voraussetzungen

Bevor Sie beginnen, vergewissern Sie sich, dass Sie Folgendes haben:

  • Ein Snowflake-Konto

  • Version 1.7.1 oder höher des snowflake-ml-python Python-Pakets.

  • Vertrautheit mit dem Snowflake Model Registry.

Erstellen eines Modellmonitors

Erstellen Sie einen Modellmonitor mit dem Befehl CREATE MODEL MONITOR. Der Modellmonitor muss in demselben Schema erstellt werden wie die zu überwachende Modellversion. Sie müssen über die Berechtigung CREATE MODEL MONITOR für das Schema verfügen, in dem der Monitor erstellt wird. Sie können maximal 250 Modellmonitore pro Konto erstellen.

Weitere Informationen zum Befehl CREATE MODEL MONITOR finden Sie unter CREATE MODEL MONITOR.

Tipp

Informationen zu anderen SQL-Befehlen, die Sie mit Modellmonitoren verwenden können, finden Sie unter Befehle für Modellmonitore.

Vorübergehendes Stoppen und Fortsetzen der Überwachung

Sie können einen Modellmonitor mit ALTER MODEL MONITOR … SUSPEND anhalten (vorübergehend stoppen). Um die Überwachung wieder aufzunehmen, rufen Sie ALTER MODEL MONITOR … RESUME auf.

Automatisches Anhalten bei Ausfall der Aktualisierung

Modellmonitore halten Aktualisierungen automatisch an, wenn fünf aufeinanderfolgende Aktualisierungsfehler in Bezug auf die Quelltabellen festgestellt werden. Sie können den Status und die Ursache des Anhaltens der Aktualisierung mit dem Befehl DESCRIBE MODEL MONITOR einsehen. Die Ausgabe enthält u. a. die folgenden Spalten:

  • aggregation_status: Der Wert in dieser Spalte ist ein JSON-Objekt. Einer oder mehrere der Werte in diesem Objekt werden SUSPENDED sein, wenn der Modellmonitor angehalten wird.

  • aggregation_last_error: Der Wert in dieser Spalte ist ein JSON-Objekt, das den spezifischen SQL-Fehler enthält, der das Anhalten verursacht hat.

Nachdem Sie die Ursache des Aktualisierungsfehlers behoben haben, setzen Sie den Monitor fort, indem Sie ALTER MODEL MONITOR … RESUME aufrufen.

Hinzufügen von Segmenten zu einem Modellmonitor

Modellmonitore unterstützen die Segmentierung, mit der Sie nicht nur das gesamte Datensatz, sondern auch die Modellqualität für bestimmte Teilmengen Ihrer Daten überwachen können. Segmente werden verwendet, um die Daten in logische Einheiten zu gruppieren, z. B. verschiedene Regionen oder verschiedene Benutzergruppen.

Erstellen von Monitoren mit Segmenten

Beim Erstellen eines Modellmonitors können Sie mit mithilfe des Parameters SEGMENT_COLUMNS Segmentspalten angeben. Segmentspalten müssen in Ihren Quelldaten Zeichenfolgenspalten sein.

Wichtig

Um Segmente für numerische Spalten zu erstellen, ordnen Sie sie vor dem Erstellen des Monitors gültigen Kategorien zu. Sie können zum Beispiel eine numerische Spalte des Typs TEMPERATURE in kategorische Werte wie „COLD‘ (< 32°F), ‚MODERATE‘ (32-80°F), and ‚HOT‘ (> 80 °F) umwandeln, bevor Sie sie als Segmentspalte verwenden.

CREATE [OR REPLACE] MODEL MONITOR [IF NOT EXISTS] <NAME> WITH
    --- all other existing parameters of CREATE MODEL MONITOR
    SEGMENT_COLUMNS = (<segment_column_name_array>)
Copy

Die vollständige Syntax und die Angaben zu den Parameter finden Sie unter CREATE MODEL MONITOR.

Hinzufügen von Segmenten zu bestehenden oder neuen Monitoren

Sie können bestehenden Monitore mithilfe des Befehls ALTER MODEL MONITOR Segmentspalten hinzufügen:

ALTER MODEL MONITOR <NAME> ADD SEGMENT_COLUMN = <segment_column_name>
Copy

Sie können auch Segmentspalten aus bestehenden Monitoren entfernen:

ALTER MODEL MONITOR <NAME> DROP SEGMENT_COLUMN = <segment_column_name>
Copy

Die vollständige Syntax und die Optionen finden Sie unter ALTER MODEL MONITOR.

Definieren des Segments unter „Monitoring Segments“ in der UI

Sie können Segmente über die Einstellungen für die Überwachung von Segmenten in der UI konfigurieren und verwalten:

Segmenteinstellungen für ML Observability

Über die Schnittstelle für die Segmenteinstellungen können Sie definieren und konfigurieren, welche Segmente für Ihr Modell überwacht werden sollen.

Wählen Sie im Modellmonitor-Dashboard in der Segmentauswahl das Segment aus.

Im Modellmonitor-Dashboard können Sie die Segmentauswahl verwenden, um Kennzahlen für bestimmte Segmente Ihrer Daten anzuzeigen:

Segmentauswahl für ML Observability

Hinweise zur Leistung von Segmenten

Die Performance hängt von vielen Faktoren ab, wie Anzahl der Features, Anzahl der Segmentspalten, eindeutige Werte pro Segmentspalte, Warehouse-Größe, Warehouse-Typ, Aggregationsfenster, Gesamtzeilen und Zeilen pro Aggregationsfenster.

  • Die Auswirkung auf die Performance von CREATE durch SEGMENT_COLUMNS ist direkt proportional zur Anzahl der Segmentspalten in der Anforderung.

  • Wenn die CREATE-Performance bei vielen Segmentspalten langsam ist, sollten Sie in Erwägung ziehen, die Segmentspalten einzeln mit dem Befehl ALTER hinzuzufügen.

  • Jede Kombination aus Segmentspalte und Wert wird unabhängig abgefragt, und es kann aufgrund von Zeitplänen und anderen Faktoren Zeitunterschiede geben, wann die Daten zuletzt aktualisiert wurden. Wir versuchen jedoch, alle Daten auf einmal zu aktualisieren.

Anzeigen von Überwachungsberichten

Um Überwachungsberichte einzusehen, besuchen Sie das ML Monitoring Dashboard in Snowsight. Wählen Sie im Navigationsmenü die Option AI & ML » Models aus. Die resultierende Liste enthält alle Modelle in der Snowflake Model Registry in allen Datenbanken und Schemas, auf die Ihre aktuelle Rolle Zugriff hat.

Öffnen Sie die Detailseite eines Modells, indem Sie die entsprechende Zeile in der Liste Models auswählen. Auf der Detailseite werden wichtige Informationen zum Modell angezeigt, darunter die Beschreibung des Modells, Tags und Monitore.

Die Liste Monitors auf der Detailseite zeigt die Liste der Modellmonitore, die Modellversionen, denen sie zugeordnet sind, ihren Status und den Zeitpunkt ihrer Erstellung an.

Öffnen Sie die Dashboard-Seite eines Modellmonitors, indem Sie die entsprechende Zeile in der Monitorliste auswählen. Das Dashboard enthält Diagramme, die die wichtigsten Kennzahlen des Modells im Laufe der Zeit anzeigen. Welche Diagramme genau angezeigt werden, hängt von der Art des Modells ab, auf dem der Monitor basiert (d. h. binäre Klassifizierung oder Regression).

Auf dem Dashboard können Sie die folgenden Aktionen durchführen:

  • Ändern Sie den Bereich der Diagramme, indem Sie auf den Zeitbereichselektor klicken.

  • Ändern Sie die angezeigten Diagramme, indem Sie auf die Schaltfläche Settings klicken. (Bewegen Sie den Mauszeiger über einen Metriknamen, um weitere Informationen darüber zu erhalten)

  • Vergleichen Sie die Modellmonitore, indem Sie auf das Dropdown-Menü Modellauswahl Compare klicken.

  • Zeigen Sie weitere Informationen über den Modellmonitor an, indem Sie Display monitor details auswählen.

Abfrage der Überwachungsergebnisse

Jeder Modellmonitor, den Sie erstellen, verfügt über die folgenden Metriken:

  • Drift-Metriken: Verteilungsänderungen oder Datenverschiebungen

  • Leistungsmetriken: Verteilungsänderungen oder Datenverschiebungen

  • Statistische Metriken: Zählungen oder Nullwerte

Um die vom Monitor berechneten Metriken abzufragen, verwenden Sie die Monitor-Metrikfunktionen. Die Metrikfunktionen beziehen die Metriken von den Modellmonitorobjekten. Sie können die Ergebnisse der Metrikfunktionen verwenden, um benutzerdefinierte Dashboards in Streamlit oder anderen zentralisierten Überwachungstools zu erstellen.

Wichtig

Sie müssen über die folgenden Berechtigungen verfügen, um mit Modellmonitorobjekten zu arbeiten:

Befehl

Erforderliche Berechtigungen

CREATE MODEL MONITOR

  • CREATEMODELMONITOR-Berechtigung für das Schema, in dem Sie das Modell erstellen möchten.

  • SELECT auf Datenquelle (Tabelle oder Ansicht)

  • USAGE für Datenbank, Schema, Warehouse und Modell

SHOW MODEL MONITORS

Jede Berechtigung auf dem Modellmonitor

DESCRIBE MODEL MONITOR

Jede Berechtigung auf dem Modellmonitor

ALTER MODEL MONITOR

MODIFY auf dem Modellmonitor

DROP MODEL MONITOR

OWNERSHIP auf dem Modellmonitor

Verwenden Sie die folgende SQL-Vorlage, um die Driftmetrik von Ihrem Modellmonitor abzurufen.

SELECT *
FROM TABLE(MODEL_MONITOR_DRIFT_METRIC (
                                        <model_monitor_name>,
                                        <drift_metric_name>,
                                        <column_name>,
                                        <granularity>,
                                        <start_time>,
                                        <end_time>,
                                        <extra_args>
                                      )
          )
Copy

Verwenden Sie die folgende SQL-Vorlage, um die Leistungsmetrik von Ihrem Modellmonitor abzurufen.

SELECT *
FROM TABLE(MODEL_MONITOR_PERFORMANCE_METRIC (
                                        <model_monitor_name>,
                                        <metric_name>,
                                        <granularity>,
                                        <start_time>,
                                        <end_time>,
                                        <extra_args>
                                      )
          )
Copy

Verwenden Sie die folgenden SQL-Vorlage, um die statistische Kennzahl von Ihrem Modellmonitor zu erhalten.

SELECT *
FROM TABLE(MODEL_MONITOR_STAT_METRIC (
                                        <model_monitor_name>,
                                        <metric_name>,
                                        <granularity>,
                                        <start_time>,
                                        <end_time>,
                                        <extra_args>
                                      )
          )
Copy

Abfragen von segmentspezifischen Kennzahlen

Um die Kennzahlen für bestimmte Segmente abzufragen, verwenden Sie den Parameter <extra_args> parameter with a JSON format that specifies the segment column and value. The <extra_args>. Der Parameter ist optional – wenn er nicht angegeben wird, gibt die Abfrage Metriken für alle Daten zurück (Abfrage, die keine Segmente enthält).

Bemerkung

Derzeit unterstützen Segmentabfragen nur 1 Segmentspalte:Wert-Paar pro Abfrage. Sie können nicht mehrere Segmente gleichzeitig in einem einzigen Funktionsaufruf abfragen.

Bei Segmentabfragen verwenden Sie dieses Format für den Parameter <extra_args>:

'{"SEGMENTS": [{"column": "<segment_column_name>", "value": "<segment_value>"}]}'
Copy

Zum Beispiel, um Abweichungskennzahlen ausschließlich für Premium-Kunden abzurufen:

SELECT *
FROM TABLE(MODEL_MONITOR_DRIFT_METRIC (
                                        'my_customer_monitor',
                                        'PSI',
                                        'FEATURE_1',
                                        'DAY',
                                        '2024-01-01'::TIMESTAMP_NTZ,
                                        '2024-01-31'::TIMESTAMP_NTZ,
                                        '{"SEGMENTS": [{"column": "CUSTOMER_TIER", "value": "PREMIUM"}]}'
                                      )
          )
Copy

Die Ergebnistabellen für Segmentabfragen enthalten zwei zusätzliche Spalten:

  • SEGMENT_COLUMN: Name der Segmentspalte, für die die Kennzahl berechnet wird (oder NULL für Abfragen, die keine Segmente enthalten)

  • SEGMENT_VALUE: Segmentwert, für den die Kennzahl berechnet wird (oder NULL für Abfragen, die keine Segmente enthalten)

Weitere Informationen zu Segmenten finden Sie unter Hinzufügen von Segmenten zu einem Modellmonitor.

Sie können Alarme und Benachrichtigungen für Ihre Überwachungsmetriken einrichten. Weitere Informationen dazu finden Sie unter Alerts und Benachrichtigungen.

Bekannte Einschränkungen

Die folgenden Beschränkungen gelten für Modellmonitore:

  • Monitore müssen sich in derselben Datenbank und demselben Schema befinden wie die Modellversion.

  • Es werden nur Einzelausgangsregressions- und binäre Klassifizierungsmodelle unterstützt.

  • Mindestens eine Vorhersagespalte (Klasse oder Punktzahl) ist erforderlich. Die eigentlichen Spalten sind optional, werden aber für die Genauigkeitsmetriken benötigt.

  • Für die Driftberechnung sind Basisdaten erforderlich. Wenn Sie keine Basisdaten hinzufügen möchten, müssen Sie den Monitor löschen und neu erstellen.

  • Jede Spalte kann nur einmal im Monitor verwendet werden. Sie können z. B. nicht dieselbe Spalte als ID-Spalte und als Vorhersagespalte verwenden.

  • Die Daten dürfen keine ungültigen Werte enthalten (Nullen, NaNs, +/-Inf, Wahrscheinlichkeitswerte außerhalb von 0-1, nicht-binäre Klassen oder mehr als zwei Klassen in einer PREDICTION_CLASS_COLUMNS-Spalte), um Überwachungsfehler und Aussetzungen zu vermeiden.

  • Zeitstempelspalten müssen vom Typ TIMESTAMP_NTZ sein; Vorhersage- und Ist-Spalten müssen NUMBER sein.

  • Sie müssen die Aggregationsfenster in Tagen angeben.

  • Es können maximal 500 Features überwacht werden.

  • Es können bis zu 250 Monitore erstellt werden.

  • Segmentspalten dürfen nur kategorische Zeichenfolgenspalten sein.

  • Maximal 5 Segmentspalten pro Modellmonitor (festes Limit).

  • Jede Segmentspalte sollte weniger als 25 eindeutige Werte enthalten (empfohlenes Limit).

  • Bei Segmentwerten wird zwischen Groß- und Kleinschreibung unterschieden, und Sonderzeichen werden für Segmentabfragen nicht unterstützt.

  • Die NULL-Filterung wird für Segmentabfragen nicht unterstützt.

Hinweise zu Kosten

Virtuelles Warehouse-Computing:

  • Modellmonitore verwenden ein virtuelles Warehouse, wodurch Kosten bei der Erstellung und jeder Aktualisierung entstehen.

  • Das Laden des Snowsight-Dashboards erfolgt ebenfalls über ein virtuelles Warehouse, wofür zusätzliche Kosten anfallen.

Speicher:

  • Modellmonitore materialisieren die Quelldaten in eine Tabelle, die in Ihrem Konto gespeichert ist.

  • Segmentspalten fügen eine zusätzliche materialisierte Tabelle hinzu, die in Ihrem Konto gespeichert ist.

Cloud Services Compute:

  • Modellmonitore verwenden Cloud Services Compute, um Aktualisierungen auszulösen, wenn sich ein zugrunde liegendes Basisobjekt geändert hat. Die Computekosten für Clouddienste werden nur in Rechnung gestellt, wenn die täglichen Kosten für Clouddienst mehr als 10 % der täglichen Warehouse-Kosten für das Konto betragen.