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.
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.
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-pythonPython-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>)
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>
Sie können auch Segmentspalten aus bestehenden Monitoren entfernen:
ALTER MODEL MONITOR <NAME> DROP SEGMENT_COLUMN = <segment_column_name>
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:
Ü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:
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 |
|
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>
)
)
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>
)
)
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>
)
)
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>"}]}'
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"}]}'
)
)
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_NTZsein; Vorhersage- und Ist-Spalten müssenNUMBERsein.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.