Glückwunsch! Sie haben das Unicorn-Modell bereitgestellt. Ihr Modell sollte rund um die Uhr ohne Probleme ausgeführt werden können. Um sicherzugehen, müssen Sie Ihre ML-Pipeline überwachen.
Datenschema zur Validierung von Rohdaten schreiben
Um Ihre Daten zu überwachen, sollten Sie sie kontinuierlich mit den erwarteten Werten vergleichen. statistische Werte erhalten, indem Sie Regeln schreiben, denen die Daten entsprechen müssen. Diese Sammlung wird als Datenschema bezeichnet. Definieren Sie ein Datenschema, indem Sie diese Schritte:
Machen Sie sich mit der Reichweite und der Verteilung Ihrer Funktionen vertraut. Für kategoriale die möglichen Werte verstehen.
Bringen Sie Ihr Wissen in das Datenschema ein. Im Folgenden finden Sie Beispiele für Regeln:
- Achten Sie darauf, dass die von Nutzern abgegebenen Bewertungen immer zwischen 1 und 5 liegen.
- Überprüfen Sie, ob das Wort the am häufigsten vorkommt (für einen englischen Text). .
- Für jedes kategoriale Merkmal muss ein Wert aus einem festen Satz festgelegt sein der möglichen Werte.
Testen Sie Ihre Daten anhand des Datenschemas. Ihr Schema sollte Daten erfassen Fehler wie:
- Anomalien
- Unerwartete Werte von kategorialen Variablen
- Unerwartete Datenverteilungen
Einheitentests schreiben, um Feature Engineering zu validieren
Auch wenn Ihre Rohdaten möglicherweise das Datenschema übergeben, wird Ihr Modell nicht trainiert. auf Rohdaten. Vielmehr wird das Modell mit Daten trainiert, entwickelt. Ihr Modell wird beispielsweise mit normalisierten numerischen Features trainiert statt numerischer Rohdaten. Da Feature-Engineed-Daten von den Eingaberohdaten unterscheiden, müssen Sie die Feature-Engineering-Daten getrennt von Ihren Prüfungen der Eingaberohdaten.
Schreiben Sie Einheitentests auf der Grundlage Ihrer Kenntnisse über Feature-Engineer-Daten. Beispielsweise können Sie Einheitentests schreiben, um nach Bedingungen wie dem Folgendes:
- Alle numerischen Merkmale werden zum Beispiel zwischen 0 und 1 skaliert.
- One-Hot-codiert Vektoren nur eine 1- und N-1-Nullen enthalten.
- Die Datenverteilungen nach der Transformation entsprechen den Erwartungen. Wenn Sie z. B. mit Z-Werten normalisiert haben, ist der Mittelwert der Z-Werte sollten 0 sein.
- Ausreißer z. B. durch Skalierung, oder Clips.
Messwerte für wichtige Datensegmente prüfen
Ein erfolgreiches Ganzes verdeckt manchmal eine nicht erfolgreiche Teilmenge. Mit anderen Worten: ein Modell mit großartigen Gesamtmesswerten trotzdem schreckliche Vorhersagen für in bestimmten Situationen. Beispiel:
Ihr Einhornmodell funktioniert insgesamt gut, aber schlecht, wenn Vorhersagen für die Sahara treffen.
Wenn Sie mit einer insgesamt sehr guten AUC zufrieden sind, werden Sie die Probleme des Modells in der Sahara vielleicht gar nicht bemerken. Wenn Sie gute Vorhersagen für jede Region wichtig sind, müssen Sie Daten für jede Region. Teilmengen von Daten, wie die entsprechende in der Sahara, werden als Datensegmente bezeichnet.
Identifizieren Sie relevante Datensegmente. Vergleichen Sie dann die Modellmesswerte für diese Datensegmente mit den Messwerten für Ihre ganzes Dataset. Prüfen, ob das Modell in allen Datensegmenten gut funktioniert hilft, Voreingenommenheiten zu beseitigen. Weitere Informationen finden Sie unter Fairness: Voreingenommenheit bewerten .
Reale Messwerte verwenden
Modellmesswerte messen nicht unbedingt die realen Auswirkungen Ihres Modells. Beispielsweise kann das Ändern eines Hyperparameters die AUC eines Modells erhöhen, Wie hat sich die Änderung auf die Nutzererfahrung ausgewirkt? Um die Auswirkungen in der realen Welt zu messen, müssen Sie um separate Metriken zu definieren. Sie könnten z. B. Nutzer Ihres Modells befragen, um zu bestätigen, dass sie tatsächlich ein Einhorn gesehen haben,
Auf Abweichungen zwischen Training und Bereitstellung prüfen
Abweichungen zwischen Training und Bereitstellung Ihre Eingabedaten während des Trainings unterscheiden sich aus Ihren Eingabedaten. In der folgenden Tabelle werden die zwei wichtige Arten von Abweichungen:
Typ | Definition | Beispiel | Lösung |
---|---|---|---|
Schemaabweichung | Trainings- und Bereitstellungseingabedaten entsprechen nicht demselben Schema. | Das Format oder die Verteilung der Daten zur Auslieferung ändert sich. während das Modell weiter mit alten Daten trainiert. | Verwenden Sie dasselbe Schema, um Trainings- und Bereitstellungsdaten zu validieren. Stellen Sie sicher, dass Sie separat nach Statistiken suchen, die nicht von Ihres Schemas, z. B. den Anteil der fehlenden Werte, |
Abweichungen von Features | Enthaltene Daten unterscheiden sich zwischen Training und Bereitstellung. | Der Feature-Engineering-Code unterscheidet sich zwischen Training und Bereitstellung, die Erstellung unterschiedlicher technischer Daten. | Ähnlich wie bei der Schemaabweichung dieselben statistischen Regeln auf das Training anwenden und Engineering-Daten bereitstellen. Nummer verfolgen der erkannten verzerrten Merkmale und das Verhältnis der verzerrten Beispiele pro Feature. |
Abweichungen zwischen Training und Bereitstellung können subtil sein. Berücksichtigen Sie immer, welche Daten Ihrem Modell zum Zeitpunkt der Vorhersage zur Verfügung stehen. Verwenden Sie während des Trainings nur die Funktionen, die Ihnen bei der Bereitstellung zur Verfügung stehen.
Übung: Wissenstest
Angenommen, Sie haben einen Onlineshop und möchten wie viel Geld du an einem Tag verdienst. Ihr ML-Ziel ist es, eine tägliche Vorhersage die Anzahl der Kunden als Funktion verwenden.
Antwort:Das Problem ist, dass man den Anzahl der Kundschaft zur Vorhersagezeit vor den täglichen Umsätzen abgeschlossen ist. Diese Funktion ist also nicht nützlich, auch wenn sie Ihren täglichen Umsatz zuverlässig abzuschätzen. Ähnlich verhält es sich, wenn Sie Modell trainieren und beeindruckende Bewertungsmesswerte wie 0,99 AUC) und suchen Sie nach Funktionen, die in Ihr Label übergehen können.
Auf Leckage prüfen
Labelleck bedeutet, Ground Truth-Labels die Sie vorhersagen wollen, versehentlich Trainingsmerkmale eingegeben. Beschriftung ist manchmal sehr schwer zu erkennen.
Übung: Wissenstest
Angenommen, Sie erstellen ein binäres Klassifizierungsmodell, um vorherzusagen, wenn ein neuer Krankenhauspatient Krebs hat. Ihr Modell verwendet Features wie die folgenden:
- Alter des Patienten
- Geschlecht des Patienten
- Frühere Erkrankungen
- Name des Krankenhauses
- Vitalzeichen
- Testergebnisse
- Vererbung
Das Label sieht so aus:
- Boolesch: Hat der Patient Krebs?
Sie partitionieren die Daten sorgfältig und stellen sicher, dass Ihr Trainings-Dataset von Ihrem Validierungs- und Test-Dataset isoliert. Das Modell führt beim Validierungs- und Test-Dataset sehr gut. sind die Messwerte fantastisch. Leider schneidet das Modell bei neuen Patienten schlecht ab in der realen Welt an.
Antwort:Eines der Merkmale des Modells ist der Krankenhausname. Bestimmte Krankenhäuser sind auf die Behandlung von Krebs spezialisiert. Während der Schulung dass die Patienten, die bestimmten Krankenhäusern zugeteilt wurden, an Krebs erkrankt ist. Daher wurde der Name des Krankenhauses zu einer hoch bewerteten Funktion.
Zum Zeitpunkt der Inferenz waren die meisten Patienten noch keinem Krankenhaus zugewiesen. Schließlich bestand der Zweck des Modells darin, und dem Fehlen von Krebs zugeordnet werden kann. in ein geeignetes Krankenhaus gebracht werden. Daher wird während der Inferenz während der Inferenz Die Funktion für den Krankenhausnamen war noch nicht verfügbar und das Modell wurde erzwungen auf andere Funktionen angewiesen sind.
Modellalter in der Pipeline überwachen
Wenn sich die Bereitstellungsdaten im Laufe der Zeit ändern, Ihr Modell aber nicht regelmäßig neu trainiert wird, wird die Modellqualität sinken. Verfolgen Sie die Zeit, seit das Modell mit neuen Daten neu trainiert und einen Schwellenwert für das Alter für Benachrichtigungen festgelegt. Neben der Überwachung der das Alter des Modells bei der Bereitstellung, sollten Sie es während der gesamten Pipeline beobachten. um Pipeline-Abstände zu erkennen.
Testen, ob Modellgewichtungen und -ausgaben numerisch stabil sind
Während des Modelltrainings sollten die Ausgaben für Gewichtungen und Ebenen nicht NaN sein (keine Zahl) oder Inf (unendlich). Schreiben Sie Tests, um die NaN- und Inf-Werte Ihrer Gewichtungen zu überprüfen und die Ausgaben zu schichten. Testen Sie außerdem, ob mehr als die Hälfte der Ausgaben einer Ebene nicht Null ist.
Modellleistung überwachen
Dein Prädiktor für das Aussehen eines Einhorns ist beliebter als erwartet! Sie sind Vorhersageanfragen und noch mehr Trainingsdaten erhalten. Du denkst ist das gut, bis Sie feststellen, dass Ihr Modell immer mehr Speicher benötigt, und Zeit für das Training. Sie beschließen, die Leistung Ihres Modells zu überwachen, indem Sie diese Schritte:
- Verfolgen Sie die Modellleistung nach Code-, Modell- und Datenversionen. Ein solches Tracking können Sie die genaue Ursache für Leistungseinbußen ermitteln.
- Trainingsschritte pro Sekunde für eine neue Modellversion testen der Vorgängerversion und einen festen Schwellenwert vor.
- Legen Sie einen Schwellenwert für die Arbeitsspeichernutzung fest, um Speicherlecks zu vermeiden.
- Überwachen Sie die API-Antwortzeiten und verfolgen Sie deren Perzentile. Während API-Antwort liegen möglicherweise außerhalb Ihrer Kontrolle, langsame Antworten schlechte reale Metriken.
- Überwachen Sie die Anzahl der pro Sekunde beantworteten Abfragen.
Qualität des Live-Modells anhand der bereitgestellten Daten testen
Sie haben Ihr Modell validiert. Aber was ist, wenn reale Szenarien wie etwa Einhorn sich nach der Aufzeichnung der Validierungsdaten ändern? Dann ist die Qualität Ihres des verwendeten Modells verschlechtert. Es ist jedoch schwierig, die Qualität der Bereitstellung zu testen, reale Daten nicht immer beschriftet sind. Wenn Ihre Bereitstellungsdaten nicht mit einem Label versehen sind, sollten Sie sich folgende Tests ansehen:
Modelle untersuchen, die eine signifikante statistische Verzerrung in Vorhersagen aufweisen. Weitere Informationen finden Sie unter Klassifizierung: Vorhersage Verzerrung:
Sie können damit reale Messwerte für Ihr Modell verfolgen. Wenn Sie zum Beispiel als Spam, vergleichen Sie Ihre Vorhersagen mit dem von Nutzern als Spam gemeldeten Nachrichten.
Minimieren Sie potenzielle Abweichungen zwischen Trainings- und Bereitstellungsdaten, indem Sie Bereitstellung einer neuen Modellversion für einen Teil Ihrer Abfragen. Während der Validierung stellen Sie alle Abfragen nach und nach auf die neue Version um.
Denken Sie bei diesen Tests daran, sowohl plötzliche als auch langsame Verschlechterungen in der Vorhersagequalität.
Randomisierung
Machen Sie Ihre Pipeline zur Datengenerierung reproduzierbar. Angenommen, Sie möchten eine Funktion hinzufügen um zu sehen, wie sich das auf die Modellqualität auswirkt. Für einen fairen Test sollten Ihre Datasets mit Ausnahme dieser neuen Funktion identisch sein. In diesem Sinne sollten Sie sicherstellen, dass bei der Datengenerierung jede Randomisierung möglich ist. deterministisch:
- Bereiten Sie Ihre Zufallszahlengeneratoren (ZZG) vor. Das Seeding stellt sicher, dass der gibt bei jeder Ausführung die gleichen Werte in der gleichen Reihenfolge aus, Ihres Datasets.
- Verwenden Sie unveränderliche Hash-Schlüssel. Hash-Technologie ist eine gängige Methode, oder Beispieldaten. Sie können jedes Beispiel hashen und die daraus resultierende Ganzzahl verwenden, um in welcher Split das Beispiel platziert werden soll. Die Eingaben für die Hash-Funktion sollte sich nicht jedes Mal ändern, wenn Sie das Programm zur Datengenerierung ausführen. Verwenden Sie nicht die Uhrzeit oder eine Zufallszahl in Ihrem Hashwert eingeben, z. B. wenn Sie können Sie Ihre Hashes bei Bedarf neu erstellen.
Die vorherigen Ansätze gelten sowohl für die Stichprobenerhebung als auch für die Aufteilung Ihrer Daten.
Hinweise zum Hashing
Stellen Sie sich wieder vor, Sie sammeln Suchanfragen und nutzen Hash-Technologie. um Suchanfragen ein- oder auszuschließen. Wenn der Hash-Schlüssel nur die Abfrage verwendet hat, werden Daten aus mehreren Tagen entweder immer oder immer ausschließen. Immer einschließen oder immer ausschließen ist aus folgenden Gründen ungeeignet:
- Ihr Trainings-Dataset enthält dann weniger unterschiedliche Abfragen.
- Ihre Bewertungssätze werden künstlich hart sein, da sie nicht sich mit Ihren Trainingsdaten überschneiden. Bei der Auslieferung einen Teil des Live-Traffics in Ihren Trainingsdaten gesehen haben, sollte sich dies widerspiegeln.
Sie können stattdessen Abfrage + Datum hashen. Dies würde zu einem anderen Hashing führen. täglich.
![Abbildung 7. Animierte Visualisierung, die zeigt, wie das
werden Daten jeden Tag in denselben Bucket verschoben,
und die Abfragezeit bewirken, dass Daten in andere
Buckets pro Tag. Die drei Buckets sind Training, Bewertung und
Ignoriert](https://developers.google.cn/static/machine-learning/crash-course/images/hashing_on_query.gif?authuser=19&hl=de)