Data Science Projekte in Betrieb nehmen mit Machine Learning Engineering

März 2023
Technology
Data Science Projekte in Betrieb nehmen mit Machine Learning Engineering

Haben Sie ein gutes Machine Learning (kurz: ML) Modell für Ihr Data Science Projekt gefunden, das Ihre Anforderungen erfüllt? Möchten Sie Ihr Data Science Projekt in Betrieb nehmen, aber Sie fragen sich, wie?

Keine Sorge, Sie sind damit nicht allein. Laut einer Studie von Gartner schafft es fast die Hälfte der Machine Learning Modelle aufgrund von Problemen bei der Inbetriebnahme nicht bis in die Praxis. Einem Bericht von VentureBeat zufolge schaffen es sogar 90 % der Data Science Projekte nicht in den produktiven Betrieb, da es an der Zusammenarbeit zwischen Data Scientists, ML Engineers und DevOps-Spezialisten scheitert.

In diesem Artikel möchten wir die Tools und Praktiken des ML Engineering beleuchten. Wir glauben, dass Machine Learning Engineering entscheidend ist, um Data Science Projekte zu realisieren.

Schritte zur Suche nach einem geeigneten ML-Modell

Um ein geeignetes ML Modell zu finden, durchlaufen wir einen Data Science Zyklus, in dem wir verschiedene Schritte iterativ ausführen. Es ist wichtig anzumerken, dass der hier diskutierte Lifecycle nur die technischen Aspekte eines Data Science Projekts darstellt. In der Regel umfassen Data Science Projekte auch eine einleitende Projektphase, die beispielsweise durch einen Kick-off-Workshop erfolgen könnte. In einem solchen Workshop wird der Business Use Case und die entsprechende Data Science Lösung entworfen.

Iteratives Data Science Zyklus

Datenerfassung und -aufbereitung

In der Regel beginnt der Zyklus mit der Datenaufnahme und -aufbereitung. Hier sammeln Sie relevante Daten aus verschiedenen Datenquellen, wie Datenbanken, Dateisystemen oder beliebigen Datenplattformen. Als Nächstes bereiten Sie Ihre Daten auf und organisieren sie so, dass Sie als Data Scientist bequem damit arbeiten können.

Modellierung

Im nächsten Iterationsschritt analysieren Sie die Daten und entwickeln ein Modell für Ihren Anwendungsfall. Zur Analyse der Daten können Sie Visualisierungstechniken, Clustering-Algorithmen, Korrelationsmetriken und vieles mehr verwenden.

Evaluierung

Bei der Evaluierung des Modells werden notwendige Kennzahlen entwickelt, um den Fortschritt zu messen. Außerdem werden die Anforderungen definiert, die das Modell erfüllen muss, um akzeptiert zu werden.

Es ist wichtig anzumerken, dass in der Praxis die Schritte in einem Data Science Projekt oft je nach Anwendungsfall und Art der Daten variieren.

Unser ML Lifecycle und die Bereitstellung von Machine Learning Modellen

Der oben beschriebene Zyklus hilft Ihnen dabei, ein geeignetes Modell zu finden. Er hilft Ihnen jedoch nicht dabei, Ihr Modell als Service für die Nutzer bereitzustellen. Vielmehr ist der Zyklus ein Teil eines größeren Zyklus, den wir als Machine Learning Lifecycle (kurz: ML-Lifecycle) bezeichnen:

Machine Learning Lifecycle für Data Science Projekte

Der ML Lifecycle bietet einen Rahmen für die Bereitstellung von Data Science Projekten, aber er hilft Ihnen auch, einen Schritt weiter zu denken. Insbesondere nach dem Operationalisierungs- und Überwachungsprozess kommt der nächste Schritt: Feedback. Dieser Schritt ermöglicht es Ihnen, das Monitoring durch Kommunikation mit dem Endnutzer zu bewerten, was für die Verbesserung Ihres ML-Modells oder -Dienstes entscheidend ist.

Jetzt haben Sie eine Vorstellung davon, was Sie bei der Arbeit an Data Science Projekten erwartet. In den folgenden Abschnitten möchten wir die Aktivitäten des Machine Learning Engineerings entlang des ML Lifecycles erläutern.

Zunächst konzentrieren wir uns auf den Schritt "Data Science". Eine der größten Herausforderungen besteht darin, die Reproduzierbarkeit der Ergebnisse und die Nachvollziehbarkeit sicherzustellen. Aus diesem Grund werden wir zwei Methoden des ML Engineering vorstellen, die Ihnen bei der Verwaltung Ihrer Data Science Projekte helfen werden.

Der zweite Abschnitt ist der Operationalisierung gewidmet, in dem wir Aktivitäten beschreiben, die notwendig sind, um aus Ihren Modellen einen Service zu erstellen. Außerdem zeigen wir eine Standardlösungsarchitektur, die es Ihnen ermöglicht, Ihre Modelle zu überwachen. Dieser Abschnitt ist für die effektive Durchführung von Data Science Projekten von entscheidender Bedeutung.

Im dritten Abschnitt konzentrieren wir uns auf das "Feedback" und insbesondere auf zwei Aspekte, die bei der Ausführung dieses Schritts berücksichtigt werden müssen. Abschließend werden wir den Beitrag und die Tätigkeiten eines ML Engineers zusammenfassen.

ML Lifecycle: Data Science

Im Data Science Zyklus führen Sie, wie oben beschrieben, hauptsächlich die Datenaufnahme, die Aufbereitung, die Modellierung und schließlich die Auswertung durch. Dank der Auswertung können Sie entscheiden, ob das entwickelte Modell die Akzeptanzkriterien erfüllt. Da sich diese Schritte in den meisten Fällen wiederholen, ist es wichtig, über ein Versionskontrollsystem für Daten, Modelle und Testergebnisse zu verfügen. Fehlt dieses System, wird das  ML Projekt schwer nachvollziehbar und die Ergebnisse sind nicht mehr reproduzierbar. Deshalb kann es hilfreich sein, einige ML-Engineering-Praktiken anzuwenden.

Herausforderung bei der Verwaltung mehrerer Versionen von Datensätzen

Angenommen, Sie arbeiten an einem Regressionsprojekt mit einem tabellenbasierten Datensatz und haben das Ende des Data Science Zyklus "Evaluation" erreicht. Zur Auswertung haben Sie Excel verwendet, um verschiedene Ergebnisse zu vergleichen und einige Jupyter-Notebooks, um den Trainingsverlauf zu visualisieren. Nach einer Diskussion mit den Stakeholdern haben Sie sich entschieden, den Datensatz um neue Daten und Features zu erweitern. Um die Reproduzierbarkeit der Ergebnisse zu gewährleisten, müssen Sie sowohl den ursprünglichen als auch den erweiterten Datensatz behalten und den Prozess erneut durchlaufen, indem Sie die Trainings-Scripts und Jupyter-Notebooks ausführen. Sie müssen also zwischen mehreren Excel-Dateien unterscheiden und die Ergebnisse jeweils in Ihren Jupyter-Notebooks speichern, was zusätzliche Arbeit bedeutet. Wenn Sie dieses Verfahren jedes Mal durchführen müssen, wenn Sie das Modell auswerten, wird es schnell unübersichtlich und ist nicht mehr skalierbar. Dies kann besonders problematisch werden, wenn Sie nach mehreren Auswertungen folgende Fragen beantworten müssen:

  • Wie wurden die Modelle trainiert?
  • Welche Hyper-Parameter haben Sie in den verschiedenen Zyklen verwendet?
  • Wie können Sie die zusätzlichen Visualisierungen reproduzieren?

Die Beantwortung der oben genannten Fragen kann dazu führen, dass völlig unterschiedliche Auswertungsergebnisse reproduziert werden.

Zwei hilfreiche Praktiken von Machine Learning Engineering

ML Engineering bietet Verfahren, um diese mühsame Arbeit zu vermeiden. Wir stellen zwei mögliche Praktiken vor:

Erstes ML Engineering Verfahren: Die Verknüpfung Ihrer Datenversion mit der Code-Version kann dazu beitragen, dass Ihre Ergebnisse reproduzierbar bleiben. Darüber hinaus  vermeidet man das Suchen nach der passenden Version des Data Science Codes zu passender Datensatzversion. Dadurch werden Ihre Ergebnisse glaubwürdig und Sie können den Data Science Code nahtlos ausführen, ohne nach der richtigen Datenversion suchen zu müssen.

Das Ergebnis des ersten Verfahrens:

Ergebnis mit Abhängigkeitsverwaltungstools

Zur Umsetzung dieser Vorgehensweise empfehlen wir die Verwendung eines Dependency-Management-Tool. Es gibt mehrere Optionen, einige von ihnen sind Open Source und kostenlos zu nutzen, andere müssen gekauft oder abonniert werden. Zum Beispiel ist das Tool DVC eine Open-Source-Option.


Zweites ML Engineering Verfahren: Verwenden Sie automatisches Experiment-Tracking für Ihr Data Science Projekt, um den Fortschritt des Modelltrainings und der Ergebnisse transparent zu halten. Wir empfehlen, den Fortschritt der Modellbildung und der Ergebnisse in einem gemeinsamen Verzeichnis oder einer Datenbank zu verfolgen. Das Ziel ist es, die Zusammenarbeit mehrerer Data Scientists zu erleichtern.

Angenommen, wir verwenden kein Experiment-Tracking für unseren Data Science Zyklus, dann hat das Data Science Projekt die folgende Form:

Data Science Projekt ohne Experiment-Tracking

Wenn wir dies also mehrfach ausführen, erhalten wir:

Ergebnis ohne Experiment-Tracking

Die Wartung einer solchen Struktur ist zeitaufwändig und lässt sich nicht skalieren. Außerdem wird dies noch fehleranfälliger, wenn mehrere Data Scientists an diesem Projekt arbeiten, da die Daten auf unterschiedliche Weise gespeichert und gemeinsam genutzt werden. Schließlich sind die folgenden Aufgaben schwer zu erledigen:

  • Filtern und Suchen von spezifischem Modelltraining
  • Vergleich der Modellergebnisse innerhalb und außerhalb von Zyklen
  • Zugriff auf die Ergebnisse anderer Data Scientists und erneute Ausführung ihrer Modelle

Wenn jedoch das zweite Verfahren angewandt wird, treten keine der oben genannten Schwierigkeiten auf. Die folgende Abbildung zeigt den Übergang.

Ergebnis mit Experiment-Tracking

Für dieses ML Verfahren empfehlen wir ebenfalls die Verwendung eines Tools. Es gibt mehrere Open-Source-Optionen, wie MLflow oder Sacred.


ML Lifecycle: Betrieb und Monitoring

Sobald Sie ein ML Modell entwickelt haben, das in der Lage ist, Ihre Aufgabe zu lösen, ist der nächste Schritt, es für den vorgesehenen Anwendungsfall vorzubereiten. Das umfasst die Operationalisierung des ML Modells und dessen Überwachung. Ein Beispiel-Szenario dafür, wie die Operationalisierung aussehen kann, ist unten dargestellt.

Containerisierung

Zu Beginn werfen wir einen Blick auf die Containerisierung des Modells. Hier erstellen wir ein Paket, das das Modell und alles, was es zur Ausführung benötigt, enthält: Zum Beispiel die notwendigen Libraries und die Python-Umgebung, in der alle erforderlichen Pakete installiert sind. Oft kann schon eine kleine Änderung in den Paketversionen zu unterschiedlichen Ergebnissen oder Fehlern bei der Inferenz führen. Eine bekannte und gut geeignete Technologie ist Docker. Ein Modell innerhalb eines Docker-Containers ermöglicht es uns, das Modell an jedes Host-System zu verteilen, das die Inferenz durchführt, ohne dieses System zu anpassen zu müssen.

Implementation von Backend-Dienst

Jetzt haben Sie ein System, das das ML Modell hostet. Im weiteren Verlauf der Prozesskette benötigen die Endnutzer Zugriff auf das Modell. Eine Möglichkeit, dies zu erreichen, besteht darin, einen Backend-Dienst bereitzustellen, der eine REST-API implementiert. Dieser Dienst nimmt Anfragen von den Endnutzern entgegen, führt anhand von Eingabedaten eine Inferenz des Modells durch und gibt die Ergebnisse an die Endnutzer zurück. Es gibt mehrere Möglichkeiten, dies zu implementieren. Eine schnelle und elegante Möglichkeit ist die Verwendung von FastAPI oder für komplexere Projekte Django.

Verbindung zu Datenquellen

Für eine vollständig automatisierten Pipeline fehlt noch eine schöne und praktische Funktion: die Verbindung zu Datenquellen. Ein Vorteil des automatischen Abrufs von Eingabedaten aus einer bestimmten Quelle ist, dass der Endnutzer diese Daten nicht manuell herunterladen und hochladen muss. Beliebte Datenspeichertypen, die sich lohnen, sind S3-Speicher - wobei S3 für Simple Storage Service steht - und (No)SQL-Datenbanken wie Amazon Dynamo, PostgreSQL, MongoDB. Aber auch Data Streaming wie z.B. Apache Kafka (Anwendungsbeispiel) sind möglich.

Operationalisierung des ML Modells

Wenn Sie eine operative Pipeline haben, die die dynamische Inferenz eines ML Modells ermöglicht, möchten Sie vielleicht alles von der Anfrage bis zur Antwort inkl. dem Ergebnis überwachen. Dazu gehören Protokolleder Inferenz (Eingabe und Ausgabe, für die Ausführung benötigte Zeit), aber auch die automatische Erfassung von falsch-negativen und falsch-positiven Ergebnissen sowie potenziellen Ausreißern. Das Sammeln dieser Daten hilft, das ML Modell in Stabilität und Modelvorhersage zu verbessern. Diese Informationen können z.B. auf einem weiteren S3-Speicher gespeichert werden.

ML Lifecycle: Feedback

Nach all der Datenaufbereitung und Integration des endgültigen Modells in eine benutzerfreundliche Umgebung gibt es noch einen kleinen Schritt zu erwähnen.

Ihr Modell ist nun in der Lage, echte und neue Eingabedaten herzuleiten. Die Endnutzer können die Inferenz durch den Aufruf des API-Endpunkts auslösen und nach erfolgreicher Ausführung die Modellausgabe mit der Antwort der API abrufen.

Um den ML Lifecycle zu vervollständigen, den wir zu Beginn dieses Artikels erwähnt haben, müssen wir das Feedback der Endnutzer einbeziehen, die das Modell mit realen Daten verwenden. Es gibt zwei Punkte, die wir erwähnen möchten. Erstens: Bewerten Sie das eingesetzte Modell anhand der falsch-negativen Ergebnisse, die während der Überwachung gesammelt wurden. Wie können die Modellvorhersagen für diese Stichproben verbessert werden, damit sie korrekt sind? Zweitens: Bewerten Sie das eingesetzte Modell anhand der Rückmeldungen, die direkt von den Endnutzern kommen. Gibt es neue Daten oder Features, die hilfreich sein könnten? Ist die Modellausgabe für den Endnutzer brauchbar oder gibt es Raum für Verbesserungen?

Dieses Feedback verbindet automatisch den Operationalisierungs-Teil des ML Lifecycles mit dem Data-Science-Teil. Damit ist der Lifecycle vollständig.

Fazit

In diesem Artikel haben wir die verschiedenen Phasen des ML Lifecycles untersucht und wie sie miteinander verbunden sind. Um ein produktives ML Modell wiederholt zu entwickeln und einzusetzen, bilden diese Schritte die notwendige Grundlage.

Ein Data Science Projekt allein löst nicht die Frage "Wie bringe ich mein funktionierendes Modell einfach an die Endnutzern?". Der wesentliche Bestandteil, der dies möglich macht, ist ML Engineering. In diesem Bereich werden verschiedene Technologien für die Datenmodellierung und die Schaffung einer Infrastruktur eingesetzt, die Data Scientists und Endnutzer miteinander verbindet. Somit können sie gemeinsam an der Verbesserung von ML Modellen arbeiten. In dieser Umgebung können Modelle entwickelt und dynamisch eingesetzt werden.

Sobald Sie es geschafft haben, einen ML Dienst unter Verwendung des ML Lifecycles bereitzustellen, werden Sie die Notwendigkeit erkennen, neue Möglichkeiten und Verbesserungen für Ihren ML Dienst so schnell wie möglich bereitzustellen. Die manuelle Ausführung des gesamten ML Lifecycles ist jedoch langsam, fehleranfällig und mit der Zeit sinkt die Codequalität. Aus diesem Grund wird entlang des ML Lifecycles die sogenannte Continuous Integration/Continuous Delivery (CI/CD) implementiert. In unserem nächsten Blog-Artikel werden wir uns mit dem Thema CI/CD in ML Projekten befassen. Schauen Sie bald wieder vorbei, um keine Updates zu verpassen!

Wollen Sie mehr sehen?

Ausgewählte Beiträge

Mehr erfahren
Kein Spam, versprochen
Erhalten Sie wertvolle Insights von unserem Expertenteam.