Einführung: Was ist MLOps?

Robuste, flexible und automatisierte Entwicklung moderner Machine Learning Software: von Modelltraining bis Deployment mit MLOps.

In einem bekannten Paper von Google von 2015 wurde der Lebenszyklus von komplexen ML-Systemen unter dem Gesichtspunkt der sogenannten technical debt (“technischer Schulden”) untersucht. Dieser Term wird benutzt, um typische Probleme zu beschreiben, die bei der Entwicklung, Operationalisierung und Wartung von großen Softwareprojekten entstehen. Im Rahmen des klassischen Software-Engineerings werden technical debt in der Regel mit einer Reihe von Techniken behoben, die heute als DevOps (von Development and Operations) bekannt sind, um flüssige Arbeitsabläufe und hohe Softwarequalität zu gewährleisten. Die Entwicklung und Operationalisierung von ML-Systemen führt jedoch zu neuen Problemen, die im klassischen Software-Engineering nicht vorkommen. Beispiele, wo diese Probleme auftreten können, sind vielfältig:

Nahtlose Übergänge von experimentellen Forschungsphasen und Entwicklungszyklen zu Live-Staging- und Produktionsumgebungen.
Testen und Bewerten von Modellvorhersagen in einer Live-Produktionsumgebung.
Kontinuierliches Training oder Einsatz neuer Modelle (z. B. auf der Grundlage neuer Daten oder gestreamter Daten, die von anderen Live-Produktionssystemen erzeugt wurden).
Training, Überwachung und Wartung der trainierten Modelle in reproduzierbarer Weise über verschiedene Entwicklungsteams hinweg.
Dynamische Zuweisung von Datenspeichern und Rechenressourcen.

Informationsextraktion aus PDFs: Von der Modellentwicklung bis zum Produktionseinsatz


Der Einsatz von MLOps-Frameworks kann den Data-Science-Workflow drastisch verbessern, wie ein Beispiel aus einem dida-Projekt zeigt.

Das Ziel dieses Projekts war die automatische Identifizierung und Extraktion spezifischer Informationen aus PDF-Dokumenten in großem Umfang. Die technische Lösung aus Sicht des maschinellen Lernens war schnell klar: Ein OCR-Dienst (Optical Character Recognition) sollte Textblöcke aus den PDFs extrahieren, die dann von einem neuronalen Netz verarbeitet werden, um die relevanten Informationen zu extrahieren. Nach einer kurzen Entwicklungsphase waren der allgemeine Trainingsrahmen für das Modell sowie das Data Engineering weitgehend fertiggestellt, und das Team musste sich mit drei Hauptproblemen befassen:

  1. Die Durchführung der eigentlichen Trainingsläufe und Auswertungen des neuronalen Netzes.

  2. Bereitstellung einer Plattform, mit der die trainierten Modelle nahtlos in ein bereits bestehendes Kubernetes-Ökosystem integriert werden können.

  3. Sicherstellen, dass der Dienst in der Produktion eine ausreichende Rechenleistung (in Bezug auf die Skalierung) sowie eine ausreichende Vorhersageleistung (in Bezug auf statistische Metriken) bietet.

Das Projekt verlangte, dass diese Aufgaben weitgehend unabhängig voneinander bearbeitet werden konnten: jedes neu trainierte Modell sollte leicht überwacht und effektiv eingesetzt werden können, unabhängig vom aktuellen Stand des Entwicklungsprozesses und von Änderungen an den Daten. Außerdem sollte dieser Prozess keine manuellen Eingaben des Teams erfordern (zusätzlich zu den Codeänderungen) und nur aus transparenten und reproduzierbaren Schritten bestehen, die in der Codebasis festgehalten werden.

Automatisierung des Trainings


Der erste Schritt bestand darin, die Automatisierung des Trainingsprozesses in Angriff zu nehmen. Das Team entschied sich für den Einsatz von Vertex AI Pipelines, um diese Aufgabe zu lösen. Damit können die einzelnen Komponenten des Trainingsprozesses als gerichteter Graph entworfen werden, der die Abhängigkeiten zwischen den einzelnen Schritten definiert (siehe Abbildung unten). Der Graph enthält Komponenten, die Python-Code repräsentieren (z. B. train-model und evaluate-model) sowie Platzhalter für Eingabedaten und sogenannte Artefakte (d. h. Daten, die in einem Durchlauf der Pipeline erzeugt werden).

Ein Trainingslauf kann nun einfach als CI/CD-Pipeline auf Basis von Commits zur Codebasis (wie z.B. Änderungen der Modellkonfiguration oder des Trainingsprotokolls) angestoßen werden, während das Datenhandling sowie die Bereitstellung von Rechenressourcen von Vertex AI übernommen werden. Dies ermöglicht einen vollständig transparenten Trainingsprozess, der keine manuelle Verwaltung von Daten und einzelnen VMs zum Trainieren des Modells erfordert.

Abbildung 1: der vereinfachte Trainingsprozess unseres neuronalen Netzes als Vertex AI Pipeline. Sie umfasst die Datenhandhabung und -vorverarbeitung (z. B. Training/Test-Splits), die Modellkonfiguration, das Training selbst und die Speicherung aller zugehörigen Ergebnisse wie die Modelldateien und relevanten Metriken.