Page cover

MLOps

MLOps (Machine Learning Operations) ist ein spezialisiertes Gebiet im Bereich des Machine Learnings. Hierbei geht es darum, wie man Machine-Learning-Modelle in Anwendungen integriert, verwaltet und optimiert. Das Konzept zielt darauf ab, die Effizienz und Skalierbarkeit von ML-Modellen im Produktionsumfeld zu verbessern. Hierfür werden Praktiken aus der Softwareentwicklung, dem Data Engineering und dem Operations Management kombiniert, um eine effektive und effiziente Umsetzung von ML-Projekten zu gewährleisten.

In Abbildung 47 werden die grundlegenden Schritte des MLOps-Prozesses visualisiert. Dieser Prozess wiederholt sich über die komplette Einsatzzeit des ML-Modells.

Abbildung 47: MLOps-Prozess
  1. Planen

    Projektziele werden in Anforderungen übersetzt. Verständnis der Kernprobleme, die gelöst werden sollen, sowie Festlegung wichtiger Leistungsmetriken die das ML-Modell erfüllen soll.

Datenmanagement

  1. Datensammlung

    Das Sammeln von Daten erfolgt aus verschiedenen Quellen, sowohl intern (z. B. Datenbanken, Logs, interne APIs) als auch extern (z. B. öffentliche Datensätze, Web-Scraping, APIs von Drittanbietern). Dabei ist es wichtig, alle relevanten Quellen zu identifizieren und sicherzustellen, dass die gesammelten Daten die erforderliche Qualität und Relevanz haben.

  2. Datenvorverarbeitung

    Die Datenvorverarbeitung ist ein wesentlicher Schritt im maschinellen Lernen, um Rohdaten in eine Form zu bringen, die für ML-Modelle verarbeitet werden können. Dieser Prozess umfasst Schritte wie die Bereinigung, das Auffüllen fehlender Werte oder die Exploration der Daten.

  3. Datenvalidierung

    Implementierung von Qualitätskontrollen, um sicherzustellen, dass die Daten korrekt und zuverlässig sind. Dies umfasst Überprüfung auf Konsistenz, Genauigkeit und Vollständigkeit, um die Anforderungen der Analyse oder des Modells zu erfüllen.

Im Datenmanagement des MLOps Prozesses gibt es verschiedene Ansätze, um die oben genannten Schritte, bzw. einzelne Schritte, zu realisieren. Hier werden zwei Ansätze vorgestellt:

Data Versioning bezieht sich auf die Verwaltung von verschiedenen Versionen von Datensätzen, um Reproduzierbarkeit und Nachvollziehbarkeit von Ergebnissen sicherzustellen.

  • Metadaten-Verfolgung: Speicherung von Informationen wie Zeitstempel, Quelle und Änderungen an den Daten. Dies hilft, den Ursprung und die Historie der Daten nachzuvollziehen und Änderungen zu überwachen.

  • Rückverfolgbarkeit: Möglichkeit, frühere Versionen der Daten zu finden und zu verstehen, wie sich die Daten im Laufe der Zeit verändert haben. Dies ist wichtig, um die Reproduzierbarkeit von Ergebnissen sicherzustellen und die Auswirkungen von Datenänderungen zu überprüfen.

Feature Storing umfasst die Speicherung und Verwaltung von Features, die aus Rohdaten extrahiert werden, um Konsistenz und Wiederverwendbarkeit sicherzustellen.

  • Konsistenz: Sicherstellung, dass dieselben Features sowohl in Trainings- als auch in Produktionsumgebungen verwendet werden. Dies gewährleistet eine konsistente Modellleistung und zuverlässige Ergebnisse.

  • Wiederverwendbarkeit: Möglichkeit, Features für verschiedene Modelle und Experimente wiederzuverwenden, um den Aufwand für die Feature-Entwicklung zu minimieren und die Effizienz zu steigern.

ML-Modellentwicklung

  1. Modellerstellung

    Die Modellerstellung ist ein zentraler Schritt der ML-Entwicklung, bei dem basierend auf Anforderungen und Zielen ein Modell entworfen wird. Dieser Schritt umfasst die Auswahl des Algorithmus, die Definition der Modellarchitektur und das Feature-Engineering.

    • Algorithmenauswahl: Je nach Problemstellung (Klassifikation, Regression, Clustering) wird ein geeigneter Algorithmus gewählt, von linearen Modellen bis zu neuronalen Netzen.

    • Modellarchitektur: Für komplexe Modelle wie neuronale Netze wird die Architektur spezifiziert, was bspw. Schichtart und -anzahl beinhaltet.

    Ziel ist es, ein Modell zu entwickeln, das effizient mit den vorhandenen Daten arbeitet und zuverlässige Vorhersagen ermöglicht.

  2. Modelltraining

    Das Trainieren von ML-Modellen erfolgt durch Anpassung der Modellparameter an die vorbereiteten Daten, um Muster zu erkennen und Vorhersagen zu treffen. Ziel ist es, die Fehler zwischen den Vorhersagen und den tatsächlichen Werten zu minimieren.

  3. Modellevaluierung

    Modelle werden anhand von Leistungsmetriken wie Genauigkeit, F1-Score oder ROC-AUC bewertet, um zu bestimmen, wie gut sie auf den Testdaten funktionieren. Dies hilft, die beste Modellversion auszuwählen und sicherzustellen, dass sie für die Produktion geeignet ist.

Die beiden Punkte 8 und 9 kommen insbesondere bei TinyML zum Einsatz und sind optional.

  1. Modelloptimierung

    Die Modelloptimierung zielt darauf ab, die Effizienz eines ML-Modells zu verbessern, insbesondere für den Einsatz auf ressourcenbeschränkten Geräten wie in TinyML. Dies umfasst Techniken wie:

    • Quantisierung: Reduzierung der Genauigkeit der Modellparameter (z. B. von 32-Bit auf 8-Bit), um die Modellgröße zu verringern und die Ausführung zu beschleunigen.

    • Pruning: Entfernen von unwichtigen Modellparametern, um die Komplexität zu reduzieren, ohne die Genauigkeit wesentlich zu beeinträchtigen.

    Ziel ist es, das Modell effizienter zu machen, ohne die Leistungsfähigkeit signifikant zu beeinträchtigen.

  2. Modellkonvertierung

    Die Modellkonvertierung umfasst die Umwandlung eines trainierten Modells in ein Format, das auf der gewünschten Zielplattform ausgeführt werden kann. Dies ist entscheidend für die Bereitstellung in verschiedenen Umgebungen, wie mobilen oder eingebetteten Systemen.

    • ONNX: Ermöglicht die Konvertierung zwischen verschiedenen ML-Frameworks.

    • TensorFlow Lite: Optimiert TensorFlow-Modelle für den Einsatz auf mobilen Geräten.

    • Core ML: Konvertiert Modelle zur Nutzung auf iOS-Geräten.

    Ziel ist es, das Modell kompatibel und effizient für die jeweilige Plattform zu machen.

Im Rahmen der ML-Modellentwicklung im MLOps-Prozess gibt es mehrere Möglichkeiten, die genannten Schritte zu implementieren. Zwei dieser Ansätze werden im Folgenden erläutert:

Model Versioning umfasst die Verwaltung und Nachverfolgung von verschiedenen Versionen von Machine-Learning-Modellen.

  • Vergleichbarkeit: Möglichkeit, verschiedene Modellversionen zu vergleichen, um festzustellen, welche Version die beste Leistung erzielt. Dies schließt Unterschiede in Modellarchitektur, Hyperparametern und Trainingsdaten ein.

  • Reproduzierbarkeit: Sicherstellung, dass ein Modell jederzeit erneut trainiert und reproduziert werden kann. Dies ist entscheidend, um konsistente Ergebnisse zu gewährleisten und Änderungen nachzuvollziehen.

Experiment Tracking beinhaltet die Verfolgung von Experimenten, einschließlich Hyperparametern und Ergebnissen, um Reproduzierbarkeit und Vergleichbarkeit sicherzustellen.

  • Hyperparameter-Verfolgung: Aufzeichnung der verwendeten Hyperparameter und deren Einfluss auf die Modellleistung. Dies ermöglicht die Identifizierung der besten Parameter-Kombinationen.

  • Ergebnisdokumentation: Dokumentation der Ergebnisse und Erkenntnisse aus den Experimenten, um einen klaren Überblick über durchgeführte Versuche und deren Resultate zu behalten.

Softwareentwicklung

  1. Softwareentwicklung

    Integration von ML-Modellen in vollständige Softwarelösungen, einschließlich der Entwicklung von Anwendungen oder Systemen, die die Modelle nutzen, um spezifische Aufgaben zu erfüllen oder Entscheidungen zu treffen.

  2. Bauen

    Der Code wird in eine bereitstellbare Form transformiert, z. B. durch Kompilierung, Erstellung von Docker-Containern oder Vorbereitung von Paketen für die Verteilung. Dieser Schritt ist oft Teil des CI-Prozesses (Continuous Integration).

  3. Testen

    Durchführung umfassender Tests der Software, um sicherzustellen, dass alle Funktionen korrekt arbeiten. Dies umfasst Unit-Tests, Integrationstests und Systemtests.

In der Softwareentwicklung des MLOps Prozesses gibt es verschiedene Ansätze, um die oben genannten Schritte, bzw. einzelne Schritte, zu realisieren. Hier werden zwei Ansätze vorgestellt:

Continuous Integration/Continuous Deployment (CI/CD) automatisiert die Integration und Bereitstellung von Modellen, um eine effiziente und zuverlässige Implementierung in Produktionsumgebungen zu gewährleisten.

  • Kontinuierliche Bereitstellung: Automatische Bereitstellung neuer Modellversionen in der Produktionsumgebung ohne manuelle Eingriffe. Dies ermöglicht schnelle und fehlerfreie Aktualisierungen.

  • Rollback-Mechanismen: Möglichkeit, bei Problemen mit neuen Modellversionen schnell auf frühere Versionen zurückzugreifen, um den Betrieb nicht zu beeinträchtigen.

Automated Testing umfasst das automatisierte Durchführen von Tests für Modelle und Pipelines, um sicherzustellen, dass Änderungen keine unerwarteten Probleme verursachen.

  • Unit-Tests: Tests einzelner Komponenten und Funktionen des Modells, um sicherzustellen, dass sie wie erwartet arbeiten.

  • Integrationstests: Tests der Integration verschiedener Komponenten und deren Zusammenarbeit, um sicherzustellen, dass das gesamte System korrekt funktioniert.

  • End-to-End-Tests: Tests des gesamten Workflows von der Datenerfassung bis zur Modellausgabe, um zu überprüfen, dass der gesamte Prozess reibungslos abläuft.

Betrieb

In der Betriebsphase des Machine-Learning-Lebenszyklus wird sichergestellt, dass ML-Modelle und Anwendungen nach der Bereitstellung in der Produktionsumgebung zuverlässig und effizient funktionieren. Diese Phase umfasst:

  1. Freigabe

    Die Software und Modelle werden nach Abschluss der Tests für die Produktion freigegeben. Dazu gehört die Dokumentation von Änderungen, Versionskontrolle und eine abschließende Qualitätsprüfung.

  2. Bereitstellung

    Die Modelle und Anwendungen werden mithilfe automatisierter Pipelines in die Produktionsumgebung ausgerollt, um eine nahtlose Integration und minimale Ausfallzeiten zu gewährleisten.

  3. Ausführung

    Die Anwendungen und Modelle werden im Produktionsbetrieb überwacht, wobei die Leistung, Auslastung und mögliche Fehler kontinuierlich überprüft werden.

  4. Überwachung

    Kontinuierliches Monitoring der Modelle, um Leistungsmetriken zu verfolgen und bei Bedarf Alarme auszulösen.

In Rahmen des Betriebs im MLOps Prozess gibt es verschiedene Ansätze, um die oben genannten Schritte zu realisieren. Hier wird ein Ansatz vorgestellt:

Continuous Monitoring umfasst die Überwachung von Modellen in der Produktionsumgebung, um ihre Leistung zu verfolgen und sicherzustellen, dass sie ordnungsgemäß funktionieren.

  • Leistungsmetriken: Überwachung von Metriken wie Genauigkeit, Präzision und Recall, um die Modellleistung kontinuierlich zu bewerten.

  • Drift-Erkennung: Identifikation von Änderungen in den Datenverteilungen, die die Modellleistung beeinträchtigen könnten. Dies hilft, potenzielle Probleme frühzeitig zu erkennen.

  • Alarmierungssysteme: Einrichtung von Benachrichtigungen und Alarmen, um bei Leistungseinbußen oder Anomalien sofortige Maßnahmen ergreifen zu können.

Mehr erfahren: ML4Devs/MLOps: Machine Learning Life Cycle, mlops-guide/MLOps Guide

Last updated