Was haben Goldrausch und Künstliche Intelligenz gemeinsam? Richtig: Die meisten Goldgräber gehen leer aus. Und die Gewinner sind diejenigen, die die Schaufeln verkaufen.

MLOps ist für Machine Learning das, was für den Goldgräber die Schaufel ist. Es ist keine Garantie für den Erfolg, aber ohne sieht es erst recht schlecht aus. Doch was ist MLOps?

Von DevOps…

Der Begriff MLOps steht für „Machine Learning Operations“. Er ist an den Begriff DevOps (Development Operations) angelehnt. Daher zunächst eine kurze Intro zu DevOps und warum moderne Softwareentwicklung nicht ohne DevOps auskommt.

DevOps ist notwendig, da heutzutage Softwareentwicklung und Betrieb eng miteinander verwoben sind. In den „guten alten Zeiten“ reichte es, ein Softwarepaket lokal zu kompilieren und auf einen Server zu stellen. Heute wird erwartet, dass Software über einen Updatemechanismus verfügt, bzw. bei Cloudanwendungen sich selbst aktualisiert. Zwischen dem Schreiben von Code und dem Moment, wo Anwender diesen nutzen können, liegen viele Schritte.

Dabei dreht sich alles um Qualität und Effizienz: Wie werden Updates durchgeführt? Wie können wir Probleme im Betrieb, wie beispielsweise Performance, frühzeitig erkennen? Wie können wir den Weg von Code zum Produkt weitgehendst automatisieren? Das ganze ist ein kontinuierlicher Prozess.

…zu MLOps

Bei MLOps geht es ebenfalls um Effizienz und Zuverlässigkeit, allerdings im Kontext von Machine Learning (ML) Systemen.

Auch wenn es einfach ist, ein ML-System zum Laufen zu bringen, so ist es gar nicht so einfach, die gewünschte Qualität zu gewährleisten. Viele von den möglichen Problemen habe ich bereits in meinem Artikel Die 11 Fallen im Machine Learning beschrieben. Beispiele für Bereiche, bei denen MLOps helfen kann, sind unzureichende Versionierung, Instabilitäten oder Instabilitäten.

MLOps: An engineering discipline that aims to unify ML systems development (dev) and ML systems deployment (Ops) in order to standardize and streamline the continuous delivery of high-performing models in production

Harshit Tyagi

Kontinuierliche Entwicklung und Auslieferung

Wie bei DevOps geht es auch bei MLOps um „Continuous Development and Delivery“. Bei MLOps kommt zum einen Jedoch ein weiterer wichtiger Schritt hinzu: „Retraining“, also der Prozess, das Datenmodell mit neuen Trainingsdaten zu aktualisieren. In diesem Schritt kann es zu unerwarteten Nebenwirklungen kommen.

Ein weiterer Unterschied ist, dass wir mit Entwicklungsartefakten anders umgehen müssen als mit Machine-Learning-Artefakten. Ein konkretes Beispiel: Gutes Unit-Testing ist binär: Entweder ist der Test erfolgreich oder nicht. Bei ML-Systemen gibt es kein 100% korrekt funktionierendes System. Erfolg oder Misserfolg wird in Wahrscheinlichkeiten ausgedrückt. Und selbst das reicht nicht: Auch wenn sich das System statistisch betrachtet „besser“ verhält, wird möglicherweise auf wichtige Fragen die falsche Antwort erzeugt.

Die Aspekte von MLOps

Für ein erfolgreiches MLOps müssen wir verschiedene Aspekte von Entwicklung und Operations betrachten. Nicht jedes Projekt erfordert alle. Es ist jedoch sinnvoll, anhand der Liste zu prüfen, ob der Entwicklungsprozess alle relevanten Aspekte abdeckt. Eine gute Alternative ist auch der Einsatz eines fertigen Frameworks (siehe weiter unten).

Die folgenden Aspekte sind relevant:

  • Sammlung von Daten – Wie werden neuen Daten gesammelt? Wie stellen wir sicher, dass diese zu den vorhandenen Daten passen?
  • Vorbereitung der Daten – Wir müssen die Daten zumindest grob analysieren und auf Plausibilität prüfen. Weiterhin müssen wir Duplikate entfernen und die Daten möglicherweise normalisieren. Zuletzt brauchen wir nicht nur Trainingsdaten sondern auch Testdaten, müssen also die neuen Daten entsprechend aufteilen.
  • Modellanpassungen – Es ist nicht ungewöhnlich, dass wir unser Modell kontinuierlich anpassen. Vielleicht gibt es neue Features, die wir berücksichtigen wollen um die Genauigkeit zu erhöhen. In so einem Fall ist es ratsam, das angepasste Modell auch auf historische Daten anzuwenden um zu prüfen, ob es wirklich für eine Verbesserung sorgt.
  • Training & Tuning –In der Trainingsphase bestimmen wir iterativ die Parameter des neuen Modells, mit Hilfe der Trainingsdaten und Analysedaten. Diese Parameter können auch noch von Hand weiter angepasst werden, bspw. um in wichtigen Situationen die richtige Antwort sicherzustellen.
  • Deployment – der letzte Schritt ist die Veröffentlichung des neuen Modells.
  • Monitoring – Im laufenden Betrieb können gerade bei ML schnell unerwartete Situationen auftreten. Daher ist es wichtig, die Performance des Modells kontinuierlich zu verfolgen.

Falls bei einem neuen Release etwas schiefläuft, müssen wir schnell zu einer früheren Version wechseln können. Damit dies gar nicht erst passiert, müssen wir unseren MLOps-Prozess vorhersehbar machen. Das wiederum erfordert einiges an Infrastruktur: Zum Beispiel sollten wir jeden Stand, einschließlich Trainingsdaten, versionieren. Auch viele Analysen sollten wir am Besten auch auf alte Trainingsdaten anwenden. Das erfordert einiges an Automatisierung.

MLOps-Frameworks

Statt das Rad neu zu erfinden, können wir auch mit bestehenden Framworks arbeiten, von denen es täglich mehr gibt. Dazu gehören, KubeFlow, MLFlow oder Datarobot, um nur einige zu nennen.

Ab wann braucht ein Projekt MLOps? Das hängt insbesondere von der Lebensdauer des Systems ab. Falls für ein konkretes Projekt ein ML-System entwickelt werden soll, dass nach ein paar Monaten archiviert wird, kann wohl darauf verzichtet werden. Aber jedes langlebige Projekt profitiert enorm von MLOps.

Fazit

Fast jedes ML-Projekt wird stark von MLOps profitieren. Dazu bietet es sich an, mit einem der vielen offenen Frameworks zu beginnen. Es ist auch nicht notwendig, von Anfang an alle Aspekte von MLOps zu berücksichtigen. Aber allein schon über das Thema im Kontext eines konkreten Projekts nachgedacht zu haben hilft uns, viele teure Fehler von Anfang an zu vermeiden.

Photo by Kevin Ku on Unsplash