Immer mehr Unternehmen versuchen durch Data Science Teams aus ihren Daten einen Mehrwert zu generieren bzw. einen ROI zu erzielen. Für viele Unternehmen bringt dieses Neuland jedoch unerwartete Herausforderungen mit sich. Nach einer Einschätzung von Gardner im Jahr 2021 schaffen es nur 53% der Machine Learning Projekte von einem POC in die Produktion und 85% der KI bzw. Machine Learning Projekte scheitern daran den erhofften Mehrwert zu erzielen. 

 

Einer der Gründe dafür ist mit Sicherheit, dass während der Prototypen Phase oftmals die Planung des späteren Produktivszenerios zu kurz kommt bzw. nicht bedacht wird. Um nicht in einer POC-Falle zu landen, ist es jedoch wichtig bereits am Anfang das Ende im Blick zu haben. Das bedeutet hier frühzeitig eine Strategie zu entwickeln, wie die Methoden bereitgestellt werden, wer dafür verantwortlich ist und wie die Vorhersagen in den Prozess integriert werden sollen. Dabei sollte auch geplant werden, wie die Vorhersagen in bestehende Prozesse eingreifen, wie diese verändert werden und ob dies Änderungen am User Interface nötig macht. Diese Punkte sollten bereits bei der Erstellung eines Prototyps berücksichtigt werden. Im vorherigen Blogartikel haben wir beschrieben, dass Prototypen frühzeitig in der Produktivwelt getestet werden sollten. Ziel dabei ist es den tatsächlichen Nutzen für das Unternehmen zu prüfen und die Methode zielgerichtet weiterzuentwickeln. In diesem Artikel möchten wir nun darauf eingehen, welche Faktoren beim Produktivgang bzw. während des Betriebs von Machine Learning Lösungen beachtet werden sollten. Dabei gehen wir darauf ein welche Kenntnisse für die Operationalisierung von Machine Learning (MLOps) benötigt werden. MLOps befasst sich mit der Bereitstellung (Deployment) und dem Betreiben von Machine Learning Pipelines, bzw. der dafür nötigen Infrastruktur. Im diesem Artikel gehen wir auf folgende Fragen ein:

1. Warum sollte ich meine Ergebnisse tracken? Wofür brauche ich Experiment Tracking und eine Model Registry?

2. Wie kann ich meine Methoden bereitstellen? Wobei hilft mir eine CI-CD Pipeline?

3. Warum reicht einfaches Betriebsmonitoring für Machine Learning nicht aus?

4. Open Source, bezahlte ML-Service Plattform oder Cloud – Welche Faktoren beeinflussen eine Lösungsauswahl?

 

Experiment Tracking

Ein Faktor für den Erfolg von Machine Learning Lösungen ist eine Reproduzierbarkeit der Ergebnisse bzw. der Modelle. Die Reproduzierbarkeit ist schon während der Experimentierphase im Projekt wichtig. In dieser Phase werden verschiedene Methoden ausprobiert, zusätzliche Features erzeugt oder Modelparameter verändert. Um nicht den Überblick zu verlieren, sollten deshalb die Ergebnisse einzelner Versuche als Experimente gespeichert werden. Dafür gibt es Modeltracking. Das Modeltracking basiert im besten Fall auf einen zentral zugänglichen Server. Dort werden die einzelnen Experimente zusammen mit ihren Ergebnissen gespeichert, sodass die Ergebnisse aller Teammitglieder dort verfügbar sind und eingesehen werden können.

Model Registry

Neben den Ergebnissen können auch weitere Dateien wie z.B. ein trainiertes ML-Model hochgeladen werden, um es später verwenden zu können. Damit aus verschiedenen Versionen nun das beste Modell für die Produktion zur Verfügung gestellt wird, bietet sich eine Model-Registry an. Dort werden die Modelle für den Use-Case versioniert zur Verfügung gestellt und verwaltet. Im Deployment wird eine bestimmte Version aus der Registry geladen und verwendet. Dabei kann durch zusätzliche Tests sichergestellt werden, dass die aktuelle Version im Tracking Server die besten Ergebnisse erzielt.
Für Model Registry und Model Tracking sollte das Unternehmen eine einheitliche Lösung bereitstellen, damit die Ergebnisse an einem einheitlichen Ort transparent zur Verfügung stehen. Dies erleichtert auch eine Übersicht über mehrere Projekte zu behalten.

Modell Bereitstellung

Ein weiterer Faktor ist die Bereitstellung, also ein Deployment der Modelle. Im Laufe des Deployments müssen die Modelle bzw. die Vorhersagen bereitgestellt werden, dies geschieht im Normalfall in Form eines Services. An diesen werden die Anfragen mit Daten gesendet, um daraus Vorhersagen zu erhalten. Um das Service System unabhängig zu gestalten und eine Umgebung zu schaffen, die in Produktionsumgebungen und Entwicklungsumgebungen möglichst gleich gehalten ist, empfiehlt es sich den Service in einem Docker Container zu entwickeln. Der Container kann in eine Container Registry abgelegt werden und ist von dort aus zentral zugänglich. Je nach Anwendung kann sich die Auslastung der Services sehr unterscheiden, trotzdem muss die Verfügbarkeit auch bei erhöhter Nachfrage sichergestellt sein. Dafür empfiehlt sich der Einsatz von Kubernetes zur Orchestrierung des Services. Kubernetes ermöglicht eine automatische Skalierung: Bei erhöhter Auslastung werden mehrere Instanzen bereitgestellt, bei sinkender Auslastung, werden dieser wieder heruntergefahren. Dabei übernimmt Kubernetes die Verteilung des Workloads auf die Instanzen und das Erstellen bzw. Herunterfahren dieser. Durch die Skalierung werden die Ressourcen optimal genutzt und Betriebskosten können verringert werden, bei gleichzeitig möglichst kurzen Antwortzeiten des Services.

Staging

Mit der Bereitstellung einer Methode ist ein Projekt noch nicht abgeschlossen, mehr Daten oder neue Forschungsergebnisse ermöglichen es die Ergebnisse zu verbessern. Um die Ergebnisse schnell testen und bereitstellen zu können sollten deshalb Pipelines bzw. CI/CD Pipelines angelegt werden, um die Modelle zu testen und Verbesserungen zügig in die Produktivwelt zu überführen. In den Pipelines können Änderungen am Quellcode automatisch getestet werden, sodass nur bei Erfolg der neue Code freigegeben wird. Es ermöglicht ein Staging der Methoden umsetzen, so werden neue Modelle in einer Sandkasten Umgebung entwickelt und getestet sowie später in eine produktive Umgebung überführt. Durch die Parametrisierung der Umgebungen und Pipelines werden Zeiten für das Deployment selbst sowie die Ausfallzeiten in der Produktion verringert. Dadurch können neue Änderungen schneller verwendet werden.

Monitoring

Für produktive Anwendungen ist Erreichbarkeit und in manchen Anwendungen auch Antwortzeit wichtig, deshalb sollten die Anwendungen durch Monitoring überwacht werden. Ein Betriebsmonitoring von z.B. Antwortzeiten, CPU-Auslastung, Anzahl fehlerhafter Anfragen, ist bei Machine Learning jedoch nicht ausreichend. Die zweiten Anforderungen entstehen dadurch, dass Modelle aus Daten trainiert werden und sich Daten bzw. das Umfeld über die Zeit ändern können. Beispiele dafür sind Data Drifts bei denen sich die Input Daten verändern, bzw. Concept Drifts bei denen sich die Beziehung zwischen dem Vorhersageziel und den Input Daten verändert. In solchen Fällen nimmt die Qualität der Modelle stark ab. Um dies zu verhindern, ist es wichtig Daten bzw. Vorhersagequalität zu monitoren, um diese Drifts rechtzeitig zu erkennen und das Modell anzupassen. 

Open Source vs. Bezahlte Platform vs. Cloud

Die Technologien um MLOps entwickelt sich gerade schnell weiter, weshalb es viele verschiedene Lösungswege gibt. Dabei gibt es 3 verschiedene Möglichkeiten: Anbieter mit einer ML-Platform, Entwicklung einer eigenen Lösung mit Open-Source Komponenten sowie der Weg über einen Cloud Provider. Bei der Auswahl für die eigene ML-OPs Strategie sollte das Unternehmen dabei verschiedene Faktoren berücksichtigen. Der zeitliche Rahmen für die Entwicklung einer eigenen Lösung ist höher als bei den anderen Ansätzen. Das Unternehmen benötigt für die Umsetzung die nötige Expertise. Damit sind auch zu Beginn höhere Entwicklungskosten verbunden, dafür ist dieser Ansatz allerdings am flexibelsten. Bei einem Anbieter für Machine Learning Plattform Lösungen, muss zuvor evaluiert werden, ob dieser alle nötigen Funktionen abdeckt bzw. welche Kosten durch das Produkt oder nötige Erweiterungen entstehen, dafür ist die Entwicklungszeit kürzer und es wird weniger eigene Expertise benötigt. Der Vorteil von einem Cloud Anbieter wie z.B. Microsoft Azure ist insbesondere die Integration mit den anderen Diensten der Anbieter, z.B. Kubernetes, Data Lakes oder Key Vaults. Eine Variante für das Deployment sollte rechtzeitig ausgearbeitet werden, um den Fortschritt neuer Anwendungen nicht zurückzuhalten. Solange die Modelle nicht in eine Produktivumgebung bereitgestellt werden können, ist es schwierig diese zielgerichtet weiterzuentwickeln und zu validieren. Dabei steigt das Risiko die Anwendungen in die falsche Richtung zu entwickeln oder die falschen Use-Cases anzugehen.

Mit diesem Artikel wollten ich dazu anregen sich rechtzeitig mit MLOps zu beschäftigen und darauf eingehen welche Technologien für die Umsetzung von Machine Learning Projekten hilfreich sind. Ich freue mich über Feedback. Wie handhabt ihr MLOps bzw. das Model Deployment und Monitoring? Welche Trends oder Entwicklungen seht ihr hier? Gerne können wir uns über LinkedIn oder E-Mail austauschen.

Linus Trips HUBSTER.S

Tobias Dietz

Tobias ist Data Scientist bei HUBSTER.S.