MLOps: Etablierung und Betrieb einer KI
Mit Machine Learning Operations (MLOps) stellen wir sicher, dass Daten durch regelmäßiges und automatisiertes Training effizient und strategisch in die unternehmerischen Abläufe eingebunden werden und somit zur Umsatzsteigerung beitragen. Die Herausforderung besteht darin, diese automatisierten Prozesse zu etablieren und instand zu halten.
Das bedeutet, die reibungslose Installation auf Test- und Produktionssystemen (Continuous Integration/Continuous Delivery) an neue Anforderungen, die sich durch ML in der Enterprise-Softwareentwicklung ergeben, anzupassen.
Was Machine Learning Operations bedeutet und welche Schritte für die Umsetzung nötig sind, möchten wir euch anhand konkreter Beispiele zeigen. Es geht im Grunde um den Lebenszyklus eines ganzen KI-Systems: Von der Erfassung vorhandener Daten, über den richtigen Einsatz und Training von Algorithmen, bis zur stetigen “Datenfütterung” zur kontinuierlichen Optimierung des Systems - alles unter Einhaltung der Corporate Governance.
In dieser Beitragsserie widmen wir uns den einzelnen Schritten rund um Machine Learning Operations und werden viele Szenarien durchleuchten, die euch verschiedene Software und ihre Bedeutung innerhalb von MLOps näher bringen.
Die Fragen, die wir uns zu Beginn eines Projekts stellen und die als Basis für die Themenserie über MLOps dienen, sind folgende:
- Wo kommen die Daten her, mit denen wir ein bestimmtes Ziel erreichen wollen?
- Wie versionieren wir die Daten bzw. wie schaffen wir eine Selektion der Daten zur Erreichung unseres Ziels?
- Wie führen wir das Training auf den Daten durch?
- Wie kontrollieren und sichern wir die Qualität des aus den Daten entstandenen Systems?
- Wie deployen bzw. integrieren wir das trainierte Modell in euer System?
Für all diese Schritte gibt es unterschiedliche Ausgangslagen und Abhängigkeiten, Mit welcher Datenmenge müssen wir rechnen und wie groß ist das resultierende Modell? Steht die Architektur fest und können etablierte Tools verwendet werden? Lösen wir das Training automatisch aus? Haben wir eine bestimmte Zielvorgabe (supervised training) oder soll unser trainierter Algorithmus Zusammenhänge und Muster selber erkennen können (self-supervised training)?
Daten sind so wichtig wie programmierter Sourcecode
Warum haben Daten solch eine große Bedeutung? Daten bieten ein enormes Potential im Bereich Forschung und Entwicklung und sind daher ein essentielles Werkzeug für viele unternehmerische Prozesse - auch in der Welt großer Datenmengen, die immer wieder neu analysiert werden.
Zu Beginn der Etablierung eines KI-Systems ist alles explorativ: Wir schauen uns die Daten genau an, aus denen unser Modell lernen soll. Denn alle Machine Learning Operations beginnen immer mit der Optimierung der zur Verfügung stehenden Daten - diese sind maßgebend für die Qualität des KI-Modells. Sie sind also genauso wichtig wie der vom Menschen programmierte Sourcecode, der alle Funktionen eines Programms sowie dessen Ausführung beschreibt.
Der Trainings-Algorithmus der KI soll selbstständig Zusammenhänge aus den eingegeben Daten und den ausgehenden Informationen erkennen und aus ihnen lernen. Im zweidimensionalen Beispiel über das Zirpen der Grillen in Abhängigkeit mit der Temperatur könnt ihr nochmal nachlesen, wie die Beziehung zwischen den vorhandenen Daten, dem Vorwissen und dem Ergebnis ist.
Mit den gewonnenen Erkenntnissen aus z.B. einem erzeugten neuronalen Netz können wir beispielsweise Vorhersagen treffen, Bilder einem Feature zuordnen und vieles andere, bei der ein KI-System das Unternehmen unterstützen soll.
Wenn wir davon sprechen, dass das Modell lernt, dann nutzt der Algorithmus die zur Verfügung stehenden Datensätze (Beobachtung/Observation), um Rückschlüsse zu ziehen bzw. Erkenntnisse zu bekommen. Schlechte und für unser Ziel unbrauchbare Daten bedeuten ein Underfitting: schlechte Ergebnisse, mit denen wir im schlimmsten Fall nichts anfangen können. Das Spiel beginnt von vorn: Wir benötigen mehr Daten. Aber auch vermeintlich unnütze Daten können überraschende Ergebnisse hervorbringen. Daher werden wir uns In einem anderen Artikel aus der Serie MLOps näher mit der Wichtigkeit von Rohdaten bzw. einer Data Pipeline befassen.
Continuous Delivery und Versionskontrolle
Wie “gut” unser Modell trainiert wurde, stellen wir anhand der Validierungs-/Testdaten und dem gewählten Verfahren fest. Ist das Ergebnis zufriedenstellend, kann durch das Ausliefern z.B. als einsatzbereite JAVA-Enterprise-Komponente ein funktionierender Praxiseinsatz sichergestellt werden. Parallel werden die Trainingsdaten erweitert und auf dieser funktionierenden Version erneut trainiert, um so eine kontinuierliche Entwicklung und Optimierung zu gewährleisten.
Dieser Prozess wird in einer Dauerschleife wiederholt, sodass die Daten einer Qualitätssicherung in kurzen Intervallen unterzogen werden. Diese, mit einem CI-System wie Jenkins automatisierten Testläufe, erlauben nach jeder Änderung am Quellcode oder der Datenbasis eine Überprüfung des Builds und geben euch anschließend Feedback zur Verwertung. Bei Bestehen der automatisierten Testkriterien können Deployments, wie bei herkömmlicher Software, auch bei KI-/ML-Software vollautomatisch durchgeführt werden.
Praxisnahe MLOps mit Standardtools
In den folgenden Artikeln möchten wir einen praxisnahen, effizienten Blick auf MLOps geben, der nicht eine ganze Reihe neuer Tools erfordert, sondern soweit möglich die Werkzeuge einsetzt, die sich in der Softwareentwicklung über Jahre etabliert und bewährt haben. So kann die Einführung von MLOps in bereits vorhandenen Teams wesentlich beschleunigt werden, da auf bestehendes Know-How und existierende Infrastruktur zurückgegriffen werden kann. In den nächsten Monaten werden wir Euch zeigen:
- wie ihr mit Standard CI-Systemen wie Jenkins Training, Qualitätskontrolle und Deployment von ML-Systemen durchführen könnt
- wann Git für die Versionierung von Trainingsdaten reicht und wann ihr andere Wege für die Archivierung von Daten braucht
- wie ihr mit einem Standard Repository Manager wie Nexus trainierte ML-Modelle verwalten könnt
- wie etablierte Build-Systeme wie Maven oder Gradle zur Integration von ML-Modellen in Software genutzt werden kann
- wie ihr eine JAVA-Server-Umgebung auf den Einsatz von GPU-beschleunigten neuronalen Netzen vorbereitet
Beginnen möchten wir im nächsten Artikel daher mit dem Bereich Produktion. Im späteren Verlauf der Artikelserie beschreiben wir auch den etwas komplizierteren Teil der Forschung und Entwicklung (F&E) sowie Continuous Training. Obwohl F&E in der praktischen Welt noch vor der Produktion stattfinden, ist es leichter erst einmal diesen Teil zu verstehen. In unserer täglichen Praxis stellen wir oft fest, dass es in vielen Anwendungsfällen reicht, ein existierendes Modell (z.B. Open Source) zu nutzen, als ein eigenes zu trainieren. In diesem Fall wird die Frage der richtigen Integration in Produktion sofort relevant, während F&E und automatisiertes Training zunächst übersprungen werden.
Seid gespannt!