Definition
Eine CI/CD-Pipeline unterstützt ML-Teams bei der zügigen und zuverlässigen Aktualisierung von Modellen in der Produktionsumgebung. Mit einer solchen MLOps-Lösung können robuste, bugfreie Modelle schneller entwickelt werden.
Überblick
Mit der stetigen Weiterentwicklung von MLOps halten DevOps-Methoden immer stärker Einzug in MLOps. Eines der Kernkonzepte von DevOps, das dabei übernommen wurde und nun wesentlich zur Definition von MLOps beiträgt, ist Continuous Integration und Continuous Delivery bzw. Deployment (CI/CD).
CI/CD als Herzstück von DevOps umfasst Tools und Methoden für die kontinuierliche und zuverlässige Bereitstellung von Softwareanwendungen, indem die Erstellung, das Testen und die Bereitstellung von Anwendungen bis in die Produktionsumgebung hinein optimiert werden.
- Continuous Integration (CI): Die automatisierte Integration von Codeänderungen mehrerer Beteiligter in ein gemeinsames Software- oder ML-Projekt.
- Continuous Delivery (CD): Jeder Build wird automatisch in eine produktionsähnliche Umgebung überführt, um Integration und Tests vor der Bereitstellung durchzuführen.
- Continuous Deployment (CD): Eine Erweiterung der Continuous Delivery, bei der Konfiguration und Bereitstellung einer Anwendung in die Produktionsumgebung automatisiert erfolgen.
Für die schnelle und zuverlässige Aktualisierung von Modellen in der Produktion benötigen ML-Teams ein leistungsfähiges und automatisiertes CI/CD-System. Damit können Data-Teams neue Ansätze für Feature Engineering und Modellarchitekturen schneller erproben und umsetzen. CI/CD ermöglicht es außerdem, neue Pipeline-Komponenten zu entwickeln, zu testen und in ihrer Zielumgebung bereitzustellen.
Eine CI/CD-Pipeline unterstützt ML-Teams dabei, genau das zu erreichen, indem die Entwicklung robuster, bugfreier Modelle beschleunigt wird. Es handelt sich um eine leistungsstarke und nachhaltige Lösung, die in vielerlei Hinsicht für die effiziente Skalierung von Modellen entscheidend ist. Kurz gesagt hilft eine CI/CD-Pipeline ML-Teams dabei, bessere Modelle in kürzerer Zeit zu entwickeln.
Warum CI/CD für Machine Learning wichtig ist
Die Entwicklung von Machine-Learning-Modellen kann ein langwieriger Prozess mit vielen manuellen Schritten sein, die viel Zeit in Anspruch nehmen und anfällig für menschliche Fehler sind. Das ist insofern problematisch, als es beim maschinellen Lernen darauf ankommt, bei der Modellentwicklung präzise und effizient vorzugehen, um Probleme wie Training-Serving-Skew (Abweichungen zwischen Training und Einsatz) und Modell-Bias zu vermeiden.
Aus diesen Gründen sind CI/CD und im weiteren Sinn auch DevOps und MLOps so wichtig. Eine gute CI/CD-Pipeline ermöglicht es ML-Teams, Tests und Deployments durch Automatisierung zu rationalisieren. Das spart nicht nur wertvolle Zeit, sondern führt auch zu deutlich besseren Ergebnissen.
Definition: MLOps ist eine Kernfunktion des Machine-Learning-Engineerings, die darauf abzielt, den Prozess der Bereitstellung von ML-Modellen in die Produktion zu optimieren. Dabei handelt es sich um eine kollaborative Methode, an der alle Beteiligten entlang der Machine-Learning-Wertschöpfungskette mitwirken, um dieses Ziel zu erreichen. Lesen Sie mehr: The Ultimate Guide to MLOps Tools in 2024.
Zentrale Bestandteile einer CI/CD-Pipeline
Eine CI/CD-Pipeline ist ein automatisiertes System, das, wie bereits erwähnt, die Entwicklung und Bereitstellung von Modellen optimiert. CI/CD-Pipelines werden verwendet, um Code zu schreiben, Tests durchzuführen und neue Modellversionen bereitzustellen, sobald Änderungen vorgenommen werden. Der Testanteil des CI/CD-Prozesses fällt unter CI, während die Bereitstellung der CD zugeordnet wird, da die Pipeline das Modell kontinuierlich automatisch in die Produktionsumgebung überführt und bereitstellt.
Automatisierte CI/CD-Pipelines eliminieren Fehler, bieten ML-Teams standardisierte Feedbackschleifen und ermöglichen schnellere Modellaktualisierungen. All das führt zu deutlichen Verbesserungen gegenüber traditionellen manuellen Entwicklungsprozessen für Modelle. Eine klassische CI/CD-Pipeline besteht aus vier zentralen Phasen: Source, Build, Test und Deployment.
Werfen wir nun einen genaueren Blick auf jede dieser Phasen.
1. Source-Phase
Die typische CI/CD-Pipeline in MLOps beginnt mit einer Quelle (einer “Source”) – etwa einem Modellcode-Repository. Sobald Änderungen am Modellcode vorgenommen werden, wird das CI/CD-System getriggert und startet den Pipeline-Prozess. Es ist auch möglich, Pipelines so zu konfigurieren, dass sie automatisch durch geplante Workflows, manuelle Ausführungen oder durch andere mit der CI/CD-Pipeline verknüpfte Pipelines getriggert werden.
2. Build-Phase
Um ein Modell zu erstellen, das bereitgestellt und von Endbenutzern verwendet werden kann, muss der Code mit seinen Abhängigkeiten zusammengeführt werden. Diese Phase kann je nach verwendeter Programmiersprache unterschiedlich aussehen – Python-Programme etwa müssen nicht kompiliert werden, Java oder Go hingegen schon. Im Falle von MLOps ist häufig auch das Training des Modells Teil der Build-Phase.
3. Test-Phase
Die Test-Phase ist wahrscheinlich die wichtigste, denn hier werden automatisierte Tests durchgeführt, um die Korrektheit des Codes und die Performance des Modells zu überprüfen. Je nach Größe und Komplexität des Modells kann das Testen von wenigen Sekunden bis zu mehreren Stunden dauern. Bei größeren Projekten werden die Tests häufig in mehreren Schritten durchgeführt.
4. Deployment-Phase
Das Deployment bildet die letzte Phase. Ein Modell ist erst dann einsatzbereit, wenn eine lauffähige Instanz des Codes vorliegt, die die Testphase erfolgreich durchlaufen hat. Bei den meisten Projekten gibt es mehr als eine Bereitstellungsumgebung (z. B. Staging) und eine Produktionsumgebung. Erstere dient dazu, sicherzustellen, dass das Modell korrekt bereitgestellt wird, während letztere die finale Umgebung für Endnutzer ist, in der das „Live“-Modell eingesetzt wird.
Die Überwachung ist ein weiterer wichtiger Schritt nach der Bereitstellung. Dabei werden Daten zur Modell-Performance auf Basis von Live-Daten gesammelt. Der Output dieser Phase dient als Trigger für die Ausführung der Pipeline oder den Start eines neuen Experimentzyklus.
Herausforderungen bei CI/CD für Machine Learning
Obwohl ein Machine-Learning-System im Wesentlichen ein Softwaresystem ist, bringt CI/CD für maschinelles Lernen im Vergleich zur „klassischen“ Software eine Reihe spezifischer Herausforderungen mit sich.
Zunächst einmal ist Machine Learning von Natur aus experimentell. Daher umfasst die Modellentwicklung ML-Experimente, um beispielsweise herauszufinden, welche Modell-Techniken und Parameterkonfigurationen sich für ein bestimmtes Problem am besten eignen. Die Herausforderung für die beteiligten Teams besteht darin, die Reproduzierbarkeit dieser Experimente zu überwachen, um sicherzustellen, dass sich der Code wiederverwenden und die Performance des Modells auf demselben Datensatz replizieren lässt.
Auch die Testphase birgt zusätzliche Komplexität, wenn es sich um ein ML-System handelt, das getestet wird – im Vergleich zu einem herkömmlichen Softwaresystem. Das liegt daran, dass die ML-Entwicklung nicht nur den Quellcode umfasst, sondern auch Daten und Modelle. Entsprechend müssen ML-Teams sowohl die Daten als auch die Modelle testen und validieren, um zu garantieren, dass das ML-System zuverlässig funktioniert.
Und schließlich geht es beim Deployment eines Machine-Learning-Systems nicht nur darum, ein offline trainiertes Modell bereitzustellen. Vielmehr muss eine mehrstufige Pipeline implementiert werden, die das ML-Modell regelmäßig neu trainiert und den Modellvorhersage-Service in die Produktionsumgebung überführt. Diese separate Pipeline erfordert, dass Teams den Trainings- und Validierungsprozess neuer Modelle vor dem Deployment automatisieren – was eine weitere Komplexitätsebene mit sich bringt, wenn das Ziel eine Continuous-Delivery-Strategie ist.
Vorteile einer robusten CI/CD-Pipeline
Die Hauptvorteile einer robusten CI/CD-Pipeline sind:
Schnell entwickeln, testen und bereitstellen
Mit CI/CD können auch kleinere Updates sofort bereitgestellt werden, anstatt dass mehrere Änderungen angesammelt und gemeinsam bereitgestellt werden. Da größere Deploys mit einem höheren Risiko einhergehen, senkt CI/CD auch die Risikofaktoren jedes einzelnen Deployments.
On-Demand-Skalierung in Echtzeit
Herkömmliche Pipelines stoßen bei ihrer Kapazität schnell an Grenzen. Serverlose CI/CD-Pipelines hingegen passen ihre Kapazität dynamisch an die Anforderungen des jeweiligen Projekts an. Das bedeutet, dass Teams nur für die tatsächlich genutzte Leistung zahlen. Bei kleinen Projekten reicht eine geringe Kapazität aus, bei höherem Bedarf steht flexibel mehr Leistung zur Verfügung.
Neue Pipelines schneller erstellen
CI/CD-Pipelines mit Microservice-Architekturen ermöglichen es, einzelne Bausteine von Pipelines wiederzuverwenden und schnell zu neuen Pipelines zusammenzusetzen, anstatt für jede neue Pipeline denselben Code neu schreiben zu müssen.
Saubere und konsistente Outputs liefern
Bei der Entwicklung von ML-Modellen führen intermittierende Fehler häufig zu Frustration. Eine zuverlässige CI/CD-Pipeline hilft, dieses Problem zu vermeiden, indem sie für jeden Input stets saubere, identische Ausgaben liefert.
Automatisierung des Delivery-Prozesses
CI/CD ermöglicht es ML-Teams, den gesamten Prozess der End-to-End-Modellentwicklung auszuführen und zu visualisieren. Dadurch werden menschliche Fehler – insbesondere bei sich wiederholenden Aufgaben – deutlich reduziert.
Sind Sie bereit, mit CI/CD für Machine Learning durchzustarten?
Bei der Implementierung von maschinellem Lernen in einer Produktionsumgebung geht es um viel mehr als nur darum, ein Modell für Vorhersagen bereitzustellen. Mit einer CI/CD-Pipeline für Machine Learning können ML-Teams neue ML-Pipeline-Implementierungen automatisch erstellen, testen und bereitstellen – und schnell iterieren, wenn sich Daten und geschäftliche Anforderungen ändern.
Sie können damit beginnen, schrittweise CI/CD-Best-Practices in Ihr ML-Modelltraining und Ihre Pipelines als Teil Ihrer MLOps-Prozesse zu implementieren. So profitieren Sie von der Automatisierung Ihrer ML-Systementwicklung und -operationalisierung – und das am besten mit JFrog ML.
JFrog ML ist die Full-Service-Plattform für maschinelles Lernen, mit der ML-Teams ihre Modelle in ausgereifte Produkte verwandeln können. Unsere cloudbasierte Plattform beseitigt Reibungspunkte zwischen ML-Entwicklung und -Deployment und ermöglicht schnelle Iterationen, unbegrenzte Skalierung und eine individualisierbare Infrastruktur.
Erfahren Sie mehr über KI und ML über die Links unten oder überzeugen Sie sich selbst und erleben Sie die Plattform in Aktion: Vereinbaren Sie einen privaten Termin oder eine Gruppendemo oder starten Sie eine kostenlose Testversion, wann immer es Ihnen passt.