Verwalte den Lebenszyklus deiner Modelle mit MLOps
Wir haben bereits über die Eigenschaften von Machine Learning Operations oder MLOps gesprochen. Heute ist es an der Zeit, die technischen Aspekte weiter zu vertiefen und die Möglichkeiten von MLOps zu nutzen. Insbesondere werden wir die MLOps-Zyklen und ihren Nutzen in einer zunehmend an Machine Learning interessierten Industrie erklären.
Von den Eigenschaften der MLOps-Plattformen bis hin zu Aufgaben wie Modellregistrierung und -implementierung erklären wir Ihnen alles, was Sie wissen müssen.
MLOps-Bewertung | Plattformen
MLOps verwendet drei Hauptarten von Artefakten: Daten, Modelle und Code. Jeder von ihnen hat unterschiedliche Entwicklungszyklen und Herausforderungen; beispielsweise ist der Datenzyklus normalerweise schneller als der Codezyklus. Diese Unterschiede und Kombinationen erklären die Komplexität von MLOps und die Größe des Ökosystems der Werkzeuge, mit denen damit gearbeitet werden kann.
In diesem Zusammenhang abstrahiert eine MLOps-Plattform die Infrastrukturschicht, die darunter ausgeführt wird und die entwickelt wurde, um die Betriebszeiten beim Aufbau und der Bereitstellung von Modellen zu reduzieren sowie die Stabilität und Reproduzierbarkeit von Vorhersagen zu gewährleisten.
Bislang gibt es keine MLOps-Plattform, die die End-to-End-Produktentwicklung unterstützt und die von der Community weitgehend akzeptiert wurde. Dies lässt uns die Option, nützliche Komponenten einer Plattform zu verwenden (Vendor Lock-in) und/oder einen ML-Workflow mit verschiedenen unabhängigen und spezialisierteren Frameworks zu integrieren (erhöhte Kosten und Lieferzeit).
Eigenschaften einer MLOps-Plattform
- Automatisierte Bereitstellungen, einfacher und schneller.
- Protokolliert Experimente. In der Benutzeroberfläche können die aufeinanderfolgenden Ergebnisse der Modellentwicklung verglichen werden.
- Fähigkeit, die Arbeit anderer Teammitglieder zu reproduzieren. Dies ist besonders herausfordernd, wenn Sie möchten, dass ein anderer Datenwissenschaftler Ihren Code verwendet oder wenn Sie denselben Code auf einer anderen Plattform (z. B. in der Cloud) skalieren möchten. Daher gibt es verschiedene Werkzeuge, um diesen Punkt abzudecken.
- Standardisierte Methode zum Verpacken und Bereitstellen von Modellen. Jedes Data-Science-Team einigt sich auf seinen eigenen Ansatz für jede Machine-Learning-Bibliothek, die es verwendet, und oft geht die Verbindung zwischen einem Modell und dem Code sowie den erzeugten Parametern verloren. Aus diesem Grund ist ein Standard erforderlich, und alle Teammitglieder sollten dieselben Vorgehensweisen befolgen.
- Zentrales Repository für die Verwaltung von Modellen, deren Versionen und Szenarioumstellungen. Ein Data-Science-Team erstellt viele Modelle. Ohne einen gemeinsamen Ort für Zusammenarbeit und Verwaltung des Modelllebenszyklus stehen Data-Science-Teams vor Herausforderungen bei der Verwaltung der Modellphasen: von der Entwicklung bis zur Inbetriebnahme mit ihren jeweiligen Versionen, Anmerkungen und Historie. Um die Arbeit für die Teams zu erleichtern und Fehler zu isolieren, wird dieser gesamte Prozess automatisiert.
- Überwachung. Nach der Implementierung von Modellen in der Produktion ist es notwendig, ihren Zustand zu bewerten und zu beobachten, wie sie sich in der Zukunft entwickeln. Das ist der Hauptgrund, warum wir etwas benötigen, um diese Verhaltensweisen zu überwachen.
Es ist wichtig zu beachten, dass die Wahl der richtigen MLOps-Plattform von den spezifischen Anforderungen Ihres Projekts und Ihres Teams abhängt. Durch die Untersuchung der verschiedenen verfügbaren Plattformen und ihrer Eigenschaften können Sie diejenige auswählen, die am besten zu Ihren Bedürfnissen passt und Ihnen hilft, Ihre Machine-Learning-Projekte effizienter und effektiver zu gestalten.
In den folgenden Abschnitten werden wir alle Bestandteile, die bei der Verwendung einer MLOps-Plattform zur ordnungsgemäßen Verfolgung, Bewertung, Implementierung und Überwachung der Modelle erforderlich sind, eingehend prüfen.
Tracking-Server
Die Trainings-Tracking-Server ermöglichen die Aufzeichnung aller mit der Modellierung verbundenen Parameter. Wenn wir beispielsweise eine Art von Hyperparameter speichern möchten, der beim Trainieren des Modells verwendet wird.
Zu anderen Zeiten können wir die aktuelle Metrik des Modells speichern. Zum Beispiel können wir im Falle eines Regressionsmodells den RMSE (Root Mean Square) berechnen oder im Falle eines Klassifikationsmodells den F1-Score berechnen und zusammen mit dem Modell speichern. Auf diese Weise können wir diese Informationen als Metadaten abrufen, die mit dem Modell verknüpft sind.
Azure ML und MLflow
Azure ML ermöglicht es Ihnen, Artefakte, die im Model Store gespeichert sind, über die Webanwendung und programmatisch mit der Python-API zu durchsuchen.
Experimente mit der Azure ML-API und der Benutzeroberfläche verfolgen. (Klicken Sie auf das Bild, um es zu vergrößern).
Andererseits ermöglicht MLflow den Zugriff auf gespeicherte Artefakte, Parameter und Metriken über das Webportal und die Python-API. In beiden Fällen können Filter für Experimente, Beschriftungen, Metriken und Modellparameter festgelegt werden.
Nachverfolgung von MLflow-Experimenten
Je nach verwendetem Framework zur Verfolgung Ihrer Experimente gibt es eine einfache Möglichkeit, dies zu tun: automatisches Protokollieren (Autolog). Es besteht darin, automatisch alle Parameter, Konfigurationen, Umgebungen… eines laufenden Experiments zu protokollieren. Beispielsweise könnten Sie Azure ML und die MLflow-Tracking-API verwenden, um Modellparameter und Artefakte beim automatischen Trainieren des Modells zu verfolgen.
Automatische MLflow-Registrierung
MLflow definiert seine eigene Schnittstelle namens <strong>pyfunc für benutzerdefinierte Modelle außerhalb gängiger Bibliotheken</strong>, die eine gemeinsame Methode zum Speichern, Wiederherstellen und Interagieren mit einem maschinellen Lernmodell (zusammen mit dem Rest seiner Abhängigkeiten: Code, Kontext, Daten) festlegt.
Schließlich bietet MLflow auch automatische Unterstützung für die am häufigsten von Data Scientists verwendeten Metriken, obwohl diese erweitert werden können, um modellspezifische Metriken einzubeziehen. In allen Fällen haben diese automatischen Metriken die gleiche Bedeutung wie die übrigen Metriken, sodass es möglich ist, Experimente mit ihnen zu suchen und zu analysieren.
Beispiel für gesammelte Metriken
Modellregistrierung und Reproduzierbarkeit
Die Entwicklung von maschinellen Lernmodellen kann als iterativer Prozess betrachtet werden, bei dem es eine Herausforderung ist, die Arbeit während der Entwicklung im Auge zu behalten. Zu den möglichen Änderungen, die eingeführt werden, gehören:
- Datensätze und deren Vorbereitung, die sich ständig ändern, während das Modell entwickelt wird und überprüft wird, welche Merkmale am wichtigsten sind, zusammengesetzte Merkmale hinzufügen, Korrelationen entfernen usw.
- Die Modelle können sich ändern. Beispielsweise kann die Feinabstimmung der Modellparameter mit verschiedenen Tools wie Hyperopt durchgeführt werden.
- Der Quellcode entwickelt sich im Laufe der Zeit aufgrund von Refactorings, Fehlerbehebungen usw.
In diesem Zusammenhang wird der Model Store erstellt, eine Komponente, die die verschiedenen Elemente im Zusammenhang mit der Modellschulung verwaltet und speichert und die Nachverfolgbarkeit aufrechterhält. Die gespeicherten Informationen können für Zwecke wie verwendet werden:
- Laufzeitumgebungen erstellen, wie die ursprünglich zum Trainieren des Modells verwendete (falls eine Überprüfung des Trainingsverfahrens aufgrund von Geschäftsanforderungen erforderlich ist).
- Trainingsinformationen analysieren und die besten Modellparameter berechnen.
Eine Konvention, die auf verschiedenen maschinellen Lernplattformen verwendet wird, ist die Verwendung eines Containers namens Experiment, der die Hauptorganisationseinheit der im Tracking-Server gespeicherten Informationen darstellt. Jedes Experiment enthält mehrere Trainingsläufe, sodass alle Läufe zu einem einzigen Experiment gehören. Jeder Lauf zeichnet die verwendeten Datenquellen, den Code und die Metadaten auf. Die am häufigsten zugelassenen Metadaten sind:
- Quellcode.
- Startdatum / Enddatum des Trainingsprozesses.
- Parameter.
- Metriken. Metriken werden häufig in Visualisierungen angezeigt.
- Etiketten. Im Gegensatz zu anderen Metadaten können diese Informationen nach dem Lauf geändert werden.
- Artefakte: Die Läufe speichern auch Dateien jeglicher Art, sodass das trainierte Modell als Teil der Artefakte enthalten ist (serialisiert als pkl oder ein anderes kompatibles Format). Es ist auch üblich, Datendateien (z. B. im Parquet-Format), Bilder (z. B. eine Visualisierung der Merkmalswichtigkeit unter Verwendung von SHAP) oder Quellcode-Snapshots zu finden.
Modellimplementierung
Sobald das Modell, mit dem wir experimentiert haben, fertig ist und die Erkundungsphase abgeschlossen ist, muss es in Produktion gebracht werden. Denken Sie daran, dass einem Modell, das nicht in Produktion ist, keine Rendite gewährt wird.
MLflow und Azure Machine Learning
Nachdem wir unser Modell registriert haben, müssen wir entscheiden, wie wir es implementieren wollen. In diesem Fall gibt es mehrere Möglichkeiten, ein Modell in Produktion zu bringen, zum Beispiel mit MLflow und Azure Machine Learning:
- PySpark UDF: Dank der verschiedenen Funktionen von MLflow kann das Modell in eine PySpark UDF-Funktion exportiert werden, um eine direkte Inferenz über Databricks durchzuführen.
- Azure Machine Learning Workspace (AzML): Wenn Sie andererseits einen Webdienst produktiv nutzen möchten, ist die beste Option, das Modell mit den AzML-Funktionen zu exportieren. In diesem Fall könnten Sie:
- Das Modell, das im Arbeitsbereich implementiert wird, registrieren.
- Ein Docker-Image erstellen.
- Über Azure Container Instance einen Webdienst bereitstellen (um das Modell in einem Webdienst zu testen) oder direkt auf den produktiven AKS, bei dem die erforderliche Bereitstellungskonfiguration des Kubernetes-Pods angegeben wird.
Dies würde den Teil der Modellimplementierung abdecken, aber es ist immer noch notwendig, diesen Prozess zu automatisieren. Im Falle von CI/CD im Code ist klar, dass, wenn der Code gepusht wird, einige Tests und Validierungen durchlaufen werden müssen, damit keine Fehler in der Produktion auftreten und alles ordnungsgemäß funktioniert. Der Zyklus eines ML-Modells ist jedoch komplexer.
Der Lebenszyklus eines Modells besteht aus:
- Vorbereitung der verfügbaren Daten für den Verbrauch.
- Explorative Datenanalyse, um zu verstehen, ob die Daten die Geschäftsfragen beantworten.
- Nach der Validierung der Daten werden diese transformiert, um die erforderlichen Merkmale im Feature-Engineering zu erhalten.
- Mit diesen Daten geht es weiter zum Modelltraining, bei dem verschiedene Ansätze verfolgt und das am besten geeignete ausgewählt wird.
- Das ausgewählte Modell wird vor der Bereitstellung validiert.
- Das Modell wird in verschiedenen Umgebungen bereitgestellt.
- Schließlich überwachen wir die Leistung des Modells, um zukünftige Probleme zu vermeiden und eine mögliche Verschlechterung zu analysieren.
Wie man sehen kann, obwohl es komplexer ist als der Code-Lebenszyklus, muss der DevOps-Zyklus dafür angepasst werden. In diesem Fall können wir Azure-Pipelines innerhalb von Azure DevOps verwenden, aber es gibt auch andere Tools, die das Problem lösen. Ein Beispiel für eine Pipeline, die erstellt werden würde, ist:
- Der Modellcode wird gepusht.
- Auf der anderen Seite werden die erforderliche Trainingskonfiguration und die erforderlichen Validierungssets hinzugefügt, um die Leistung des Modells zu bewerten.
- Nach der Konfiguration wird das Modell mit der bereitgestellten Konfiguration trainiert und validiert, wobei alle erforderlichen Validierungen hinzugefügt werden.
- Nachdem diese Validierungen bestanden wurden, muss das Docker-Image erstellt werden.
- Docker wird im Azure Container Registry gespeichert.
- Schließlich wird das Docker-Image in AKS bereitgestellt, um den Webdienst zu starten.
All diese Aufgaben können konfiguriert oder verschiedene Pipelines entsprechend dem Produktionscode oder dem Machine-Learning-Modell eingerichtet werden. Dies ermöglicht auch eine große Flexibilität bei der Automatisierung der spezifischen Pipeline, die am besten den Anforderungen des Dienstes entspricht.
Die Pipelines könnten also das trainierte Modell nehmen, Validierungen durchführen und es dann implementieren. Zusammenfassend wird vorgeschlagen, MLflow, Azure Machine Learning Workspace und Azure DevOps gemeinsam zu nutzen, um die Integration und kontinuierliche Bereitstellung verschiedener Machine-Learning-Modelle durchzuführen.
Modellüberwachung
Das Bereitstellen Ihres Modells in der Produktion ist nicht das Ende, sondern erst der Anfang, um einen positiven Einfluss auf Ihr Unternehmen zu erzielen. Sie müssten jedoch das, was Sie bereits entwickelt haben, überwachen und sicherstellen, dass Ihr Modell mit seinen Antworten richtig liegt. Aus all diesen Gründen ist es notwendig, Ihr Modell zu überwachen.
Ische Eigenschaften (Daten-Drift, Modellleistung usw.) und die Rechenleistung (Fehler, Durchsatz usw.) zu analysieren. Diese Metriken können in Dashboards veröffentlicht oder über Alarme zugestellt werden. Insbesondere können wir die Überwachung in vier Teile aufteilen:
-
-
- Dateneingabe: Die Leistung der Daten in diesem ersten Schritt wird gespeichert.
- Überprüfung der Modellausgabegenauigkeit und Daten-Drift. Dazu werden die Eingabedaten und die Vorhersagen analysiert, um den Zustand des Modells in der entsprechenden Umgebung zu überprüfen. In dieser Phase können auch Informationen zur Infrastrukturleistung gespeichert werden, um die Reaktionszeit des Modells zu verkürzen.
- All diese Daten werden in verschiedenen Dashboards veröffentlicht, damit sie leicht zugänglich sind. Sie können jedoch auch dazu dienen, Alarme oder andere Prozesse auszulösen, wie zum Beispiel das erneute Training von Modellen.
-
Wenn Sie zum Beispiel Azure verwenden, können Sie Azure Application Insights aktivieren, um den Status Ihres Dienstes zu überwachen. Mit diesem aktivierten Dienst werden Echtzeit-Dashboards definiert, damit das Entwicklungsteam den Systemstatus kennt und Probleme lösen kann, die sich negativ auf die Leistung der Anwendung auswirken.
Es ist auch möglich, auf die Verfolgung des bereitgestellten Dienstes zuzugreifen, und indem der Dienst über AzML bereitgestellt wird, kann das Sammeln von Daten für die Eingabedaten aktiviert werden. Dies ermöglicht eine Erhöhung der Eingabedaten für die Modelle und die Fehlerreproduktion, falls das Modell nicht korrekt reagiert.
Ein Beispiel für das Code-Tracking mit Application Insights
Da in vielen Fällen Produktionsdienste aus einem AKS bestehen, kann der Status dieser Dienste über das von Kubernetes bereitgestellte Dashboard abgefragt werden. Das Wissen über den Status der Dienste und die Gesundheit der verschiedenen Pods (siehe Abbildung unten) ist von entscheidender Bedeutung.
Wir helfen Ihnen, Ihre MLOps-Lebenszyklusstrategie zu entwickeln
Bei Plain Concepts verfügen wir über spezialisierte Teams für die Entwicklung von Machine-Learning-Strategien zur Automatisierung von Prozessen oder zur Nutzung des kombinierten Potenzials von Daten und künstlicher Intelligenz.
Machine Learning ermöglicht es, personalisierte Angebote oder Produkte für Kunden zu erstellen und bestimmte mechanische Aufgaben in kürzerer Zeit mit der gleichen Effizienz auszuführen. So sind Sie und Ihr Team zufried riedener und können sich anderen Aufgaben widmen.
Wir arbeiten mit Ihnen zusammen, um Ihrem Unternehmen durch Machine Learning eine neue Richtung zu geben. Wie können wir Ihnen helfen?