Künstliche Intelligenz kommt bei immer mehr Unternehmen an. Doch wie und wo sollen rechenintensive Modelle entwickelt und aus- geführt werden? Hier kommt Kubeflow ins Spiel: Das Open-Source-Framework erlaubt das Einrichten von Umgebungen, in denen Sie mit Modellen und Applikationen für maschinelles Lernen im Bereich Data Science jonglieren können. Wir erklären, wie Sie mit Kubeflow portable und skalierbare Machine-Learning-Anwendungen entwickeln, bereitstellen und managen.
Künstliche Intelligenz (KI) und Machine Learning (ML) sind zwei omnipräsente Themen. Doch das Erstellen eines Modells ist nur die halbe Miete; es bedarf zusätzlich einer Infrastruktur zu dessen Ausführung, zum Trainieren und zur Bereitstellung. Für all diese Aufgaben wurde Kubeflow [1] entwickelt. Im Kern geht es darum, die Provisionierung von ML-Projekten zu vereinfachen, indem die typischen Phasen der Modellentwicklung standardisiert werden.
Der typische Modeling-Prozess ist durch eine Abfolge von verschiedenen, wiederkehrenden Schritten gekennzeichnet. Der erste Schritt dient der Identifikation einer unternehmerischen Herausforderung. Darauf aufbauend gilt es, einen Prozess zu entwerfen. Im nächsten Schritt werden relevante Daten ausgewählt und für das Training vorbereitet. Dazu sind insbesondere die Auswahl und die Adaption der Algorithmen notwendig.
Der letzte Schritt, das Deployment, bestimmt, ob die Daten beispielsweise an ein API übermittelt oder anderweitig ausgegeben werden. Außerdem sollten Sie mit einem Monitoring sicherstellen, dass keine zu großen Datenabweichungen auftreten oder sich Veränderungen aufgrund von modifizierten Geschäftsanforderungen ergeben.
Künstliche Intelligenz (KI) und Machine Learning (ML) sind zwei omnipräsente Themen. Doch das Erstellen eines Modells ist nur die halbe Miete; es bedarf zusätzlich einer Infrastruktur zu dessen Ausführung, zum Trainieren und zur Bereitstellung. Für all diese Aufgaben wurde Kubeflow [1] entwickelt. Im Kern geht es darum, die Provisionierung von ML-Projekten zu vereinfachen, indem die typischen Phasen der Modellentwicklung standardisiert werden.
Der typische Modeling-Prozess ist durch eine Abfolge von verschiedenen, wiederkehrenden Schritten gekennzeichnet. Der erste Schritt dient der Identifikation einer unternehmerischen Herausforderung. Darauf aufbauend gilt es, einen Prozess zu entwerfen. Im nächsten Schritt werden relevante Daten ausgewählt und für das Training vorbereitet. Dazu sind insbesondere die Auswahl und die Adaption der Algorithmen notwendig.
Der letzte Schritt, das Deployment, bestimmt, ob die Daten beispielsweise an ein API übermittelt oder anderweitig ausgegeben werden. Außerdem sollten Sie mit einem Monitoring sicherstellen, dass keine zu großen Datenabweichungen auftreten oder sich Veränderungen aufgrund von modifizierten Geschäftsanforderungen ergeben.
Konzipiert für Kubernetes
Für Data Scientists bedeutet das eine Menge anspruchsvolle Aufgaben. Doch mit Kubeflow schickt sich ein Spezialist an, den gesamten Analyseprozess zu vereinfachen. Dank der Verwendung von MLOps (Machine Learning Operations) lässt sich der gesamte Prozess effizient gestalten. Dazu hat Google als ursprünglicher Entwickler die sogenannten Kubeflow Pipelines (KFP) entwickelt. Der gesamte Designprozess ist damit in verschiedene logische Blöcke unterteilbar.
Ein erster Block repräsentiert den EDA-Unterprozess (Exploratory Data Analysis), ein zweiter steht für das Training, ein dritter für das Tuning et cetera. Dabei kommt Ihnen zugute, dass Kubeflow über eine Library mit gängigen Data-Science-Protokollen verfügt. Ein weiterer Pluspunkt: Die Blöcke der Pipeline sind portabel; das bedeutet, dass Sie diese in verschiedenen Projekten verwenden können.
Der erste Teil des Namens von Kubeflow zeigt es an: Die MLOps-Plattform ist für die Kubernetes-Ausführung konzipiert. Damit ist die Skalierbarkeit sichergestellt, denn Sie können bei Bedarf die Cluster-Konfiguration um weitere Knoten ergänzen. Das ist schon deshalb von großem Vorteil, weil die Serverlasten bei ML-Prozessen hohen Schwankungen unterliegen. Dennoch können kleinere Konfigurationen auf einem handelsüblichen PC laufen.
Seit Juli 2023 ist Kubeflow ein Incubator-Projekt der Cloud Native Computing Foundation (CNCF). Damit stehen die Chancen gut, dass es sich zum Industriestandard entwickeln könnte. Dank einer wachsenden Community ist auch davon auszugehen, dass die Weiterentwicklung von Kubeflow vorangetrieben wird.
Kubeflow kennenlernen
Um das Potenzial von Kubeflow zu erfassen, ist es sinnvoll, sich einen Überblick über das Ökosystem zu verschaffen. Bei genauerer Betrachtung handelt es sich bei Kubeflow nicht um ein einziges Tool, sondern vielmehr um einen ganzen Werkzeugkasten für das Hantieren mit ML-Modellen. Das ermöglicht Ihnen, exakt die Bausteine herauszupicken, die Sie für den konkreten Anwendungskontext benötigen. Sie können sich beispielsweise auf das Modelltraining oder die Modellbereitstellung fokussieren. Das Basissystem umfasst folgende Module:
- Central Dashboard: Das Webinterface für Kubeflow. Es fungiert als Hub für die Plattform und die verschiedenen Tools.
- Kubeflow Notebook: Webbasierte Entwicklungsumgebung innerhalb eines Kubernetes-Clusters. Läuft innerhalb von Pods, also einer Container-Gruppe.
- Kubeflow Pipeline: Dient der Erstellung und Bereitstellung von portablen und skalierbaren ML-Workflows mit Docker-Containern. Das Features ist zudem zuständig für die zeitlichen Steuerung von Prozessen.
- Kubeflow Trainer: Verantwortlich für die Feinabstimmung von großen Sprachmodellen (Large Language Model, LLM) und das verteilte Training von ML-Modellen über verschiedene Frameworks wie PyTorch oder TensorFlow hinweg. Befand sich im Februar 2025 noch im Alpha-Status.
- Katib: Kubernetes-natives Projekt, das dem automatisierten ML (AutoML) dient. Unterstützt Hyperparameter und dient vornehmlich dem Model-Tuning.
- Model Registry: Das Modellregister ist ein integraler Bestandteil im Lebenszyklus von KI- beziehungsweise ML-Modellen. Es stellt einen Index für Modelle, Versionen und Artefakte bereit. Hier werden insbesondere die Metadaten verwaltet. Befindet sich ebenfalls noch im Alpha-Status.
- Spark Operator: Der Kubernetes-Operator für Apache Spark dient der Spezifizierung und Ausführung von Spark-Anwendungen. Dieses Modul ist haupt- sächlich für die Datenvorbereitung von Bedeutung.
Kubeflow basiert auf TensorFlow beziehungsweise TensorFlow Extended und kam ursprünglich zur Ausführung von TensorFlow-Jobs in Kubernetes-Umgebungen zum Einsatz, hat sich aber inzwischen zu einem Multiarchitektur- und Multicloud-Framework entwickelt. Der enge Kubernetes-Bezug zeigt sich auch im Kubeflow-Logo, das die beiden Buchstaben K und F im Siebeneck des Kubernetes-Logos verwendet: Kubernetes (cloudnativ) und Flow (maschinelles Lernen). In diesem Zusammenhang ist hervorzuheben, dass Flow nicht nur für TensorFlow, sondern für alle ML-Frameworks steht.
Nicht unerwähnt bleiben sollten externe Tools, die die Integration von Kubeflow erlauben. Hier sind speziell KServe [2], Feast [3] und Elyra [4] zu nennen. KServe stellt Schnittstellen für gängige Machine-Learning-Frameworks wie TensorFlow [5], PyTorch [6] und ONNX [7] bereit. Feast erlaubt den Betrieb von ML-Systemen im großen Maßstab. Bei Elyra handelt es sich um einen visuellen Pipeline-Editor, der mit wenig Programmieraufwand die Pipeline-Generierung erlaubt. Das Kubeflow-Ökosystem zeichnet sich somit durch vier Ebenen aus (Bild 1).
Bild 1: Die Ebenen des Kubeflow-Ökosystems.
Entwicklung einer ML-Anwendung
Die Entwicklung und Bereitstellung lässt sich üblicherweise mithilfe des ML-Lebenszyklus beschreiben. Entlang dieses Weges kommen verschiedene Tools zum Einsatz (Bild 2). Grundsätzlich können wir dabei zwischen den Entwicklungs- und Produktionsphasen differenzieren. Der Spark Operator dient der Datenvorbereitung und dem Feature-Engineering. Das Ziel des Kubernetes-Operators für Apache Spark ist die intuitive Spezifizierung und Ausführung von Spark-Anwendungen. Er verwendet Kubernetes-spezifische Ressourcen zur Spezifizierung, Ausführung und Anzeige des Status von Spark-Applikationen.
Bild 2: Der Einsatz der verschiedenen Kubeflow-Werkzeuge entlang des ML-Lebenszyklus.
Für die Modellentwicklung und interaktive Data Science greifen Datenspezialisten auf Kubeflow Notebook zurück. Der webbasierte Editor erlaubt das Experimentieren mit den ML-Workflows. Dabei profitieren Sie von der nativen Unterstützung für JupyterLab, RStudio und Visual Studio Code. Die Notebook-Container können Sie wahlweise im Cluster oder auf der Workstation ausführen. In größeren Umgebungen ist die einfache Bereitstellung von Standard-Notebook-Images möglich.
Nach der Modellentwicklung greifen Sie zu Kubeflow Katib, um die Modelle und die Hyperparameter-Abstimmung unter Verwendung spezifischer AutoML-Algorithmen zu verbessern. Katib ist nicht auf das Zusammenspiel mit Kubeflow angewiesen, sondern kann Hyperparameter von allen bekannten ML-Frameworks inklusive TensorFlow, PyTorch und XBBoost optimieren. Dabei kommt Ihnen zugute, dass Katib gängige AutoML-Algorithmen wie beispielsweise Bayesianische Optimierung, Tree of Parzen Estimators, Random Search, Covariance Matrix Adaptation Evolution Strategy, Hyperband, Efficient Neural Architecture Search und Differentiable Architecture Search unterstützt. Die Entwickler haben die Unterstützung weiterer Algorithmen angekündigt.
Für das Trainieren der ML-Engine kommt im nächsten Schritt die Trainer-Komponente zum Einsatz. Dazu können Sie weitere ML-Bibliotheken wie HuggingFace [8], DeepSpeed [9] oder Megatron-LM [10] in den Kubeflow-Trainer integrieren, um das ML-Training auf Kubernetes zu koordinieren. Bei der LLM-Entwicklung können Sie auch auf das Kubeflow-Python-SDK zurückgreifen.
Die Kubeflow Model Registry spielt zur Speicherung von ML-Metadaten, den Modellartefakten, und zur Vorbereitung von Modellen für das Deployment eine bedeutende Rolle. Sie schließt die Lücke zwischen Ihren Modellversuchen und den Produktionsaktivitäten. Die Registry vereinfacht die Kooperation in und mit anderen Teams. Sie erlaubt auch die Durchführung von Tests und Validierungen, bevor die nachfolgenden Prozessschritte initiiert werden. In der Praxis unterstützt die Registry Sie auch beim Tracking des Modelltrainings und dem Experimentieren mit verschiedenen Modellgewichtungen. Neben der Stärkung der Kooperation leistet die Registry beim Projekt-Monitoring wertvolle Hilfe.
Bei einem typischen Workflow werden die Trainingsdaten an die KServe-Komponente weitergereicht. Bei KServe handelt es sich um eine Model Interference Platform für Kubernetes, die der Operationalisierung eines ML-Modells dient. KServe bietet eine hohe Skalierbarkeit und besteht seinerseits aus verschiedenen Komponenten wie dem ModelMesh-Modul, das für sich häufig verändernde Anwendungskontexte konzipiert wurde. Parallel dazu kommt Feast (Feature Store) als Feature-Speicher und zur Verwaltung von Offline- und Online-Features zum Einsatz. Dieses Modul erlaubt Ihnen die Feature-Definition, deren Management, Validierung und Bereitstellung.
Anbieter vordefinierter Kubeflow-Umgebungen
Anbieter
Zielplattform(en)
Link-Code
Amazon Web Services
Amazon Elastic Kubernetes Service (EKS)
p5z6b
Aranui Solutions deployKF
verschiedene
p5z6c
Canonical Charmed Kubeflow
verschiedene
5z6d
Google Cloud
Google Kubernetes Engine (GKE)
p5z6e
IBM Cloud
IBM Cloud Kubernetes Service (IKS)
p5z6f
Microsoft Azure
Azure Kubernetes Service (AKS)
p5z6g
Nutanix
Nutanix Kubernetes Engine
p5z6h
QBO
QBO Kubernetes Engine (QKE)
p5z6i
Red Hat Open Data Hub
OpenShift
p5z6j
VMware
VMware vSphere
p5z6k
Kubeflow im produktiven Betrieb
Um mit Kubeflow zu arbeiten, stehen Ihnen zwei Wege zur Verfügung: Sie können sich aus dem Baukasten die Module herauspicken, die für Sie von Interesse sind, oder Sie entscheiden sich für die Nutzung vorbereiteter kommerzieller Kubeflow-Plattformen – siehe dazu auch die Tabelle am Ende des Artikels. Für die manuelle Installation finden Sie die entsprechenden Pakete auf GitHub. Die Module Katib, Model Registry, MPI Operator, Pipelines, Spark Operator und Trainer finden Sie als Unterprojekte der Kubeflow-Projektseite [11].
Um Kubeflow kennenzulernen, bietet sich eine lokale Installation an. Das setzt rudimentäre Docker-Kenntnisse voraus. Da Kubeflow auf Kubernetes ausgeführt wird, benötigen Sie einen lokalen K8s-Cluster. Das realisieren Sie am einfachsten mithilfe von minikube [12] , einem ausgesprochen praktischen Werkzeug, um mit wenig Aufwand unter macOS X, Linux und Windows einen lokalen Cluster aufzusetzen. Außerdem benötigen Sie "kubectl" und "kustomize" für die Administration beziehungsweise die Konfiguration der Anwendungen.
Um minikube auf einem Linux-System zu installieren, nutzen Sie:
Praktisch dabei: minikube installiert "kubectl" gleich mit. Allerdings ergeben sich beim Einsatz von minikube kleinere Modifikationen. Wenn Sie "kubectl" verwenden, um alle Pods auszugeben, die in den Namespaces ausgeführt werden, nutzen Sie üblicherweise folgenden Befehl:
kubectl get pods -A
Das ändert sich beim Zusammenspiel mit minikube geringfügig:
minikube kubectl -- get pods -A
Für die Steuerung einer Kubernetes-Umgebung kommt eine Vielzahl von YAML-Dateien zum Einsatz. Die Bearbeitung dieser Konfigurationsdateien vereinfacht sich mit Kustomize. Um das Tool unter Linux zu installieren, tippen Sie folgenden Befehl ein:
Damit sind die notwendigen Voraussetzungen für die Installation von Kubeflow geschaffen und Sie können sich der eigentlichen Installation zuwenden. Der einfachste Weg: Sie bedienen sich der Manifest-Dateien aus dem GitHub-Repository. Im ersten Schritt klonen Sie diese wie folgt:
Dann wechseln Sie mit cd manifests in das Repository-Verzeichnis. Als Nächstes generieren Sie die YAML-Dateien für alle Kubeflow-Komponenten und wenden diese an:
while ! kustomize build example | awk '!/well-defined/' | kubectl apply -f -; do echo "Retrying to apply resources"; sleep 10; done
Dieser Vorgang nimmt einige Zeit in Anspruch. Zum Abschluss prüfen Sie, ob die Umgebung einsatzbereit ist. Dazu geben Sie die Pods-Liste aus:
kubectl get pods -A
Kontrollieren Sie, ob den verschiedenen Pods der Status "Running" bescheinigt wird. Ist dem so, ist Ihre Kubernetes-Umgebung einsatzbereit. Sollten noch Fehler ausgegeben werden, ist die Umgebung vermutlich noch nicht vollständig einsatzbereit. Dann hilft in der Regel warten, bis der gewünschte Status eingeblendet wird. Die Ausgabe sollte so aussehen wie im Listing-Kasten.
Nun müssen Sie nur noch das Dashboard einrichten. Beim webbasierten Zugriff werden die HTTP-Requests über den "Istio-Ingressgateway"-Dienst im "Istio-System"-Namespace weitergeleitet. Das Forwarding konfigurieren Sie in "kubectl" wie folgt:
Der Cluster hört auf Port 8080, wobei die Anfragen an den Dienst auf Port 80 umgeleitet werden. Das Dashboard ist nun unter der URL "http://localhost:8080" erreichbar. Über den Login-Dialog greifen Sie mit folgenden Credentials das erste Mal auf Kubeflow zu:
- Benutzername: user@example.com
- Password: 12341234
Um die Umgebung anzuhalten, stoppen Sie den minikube-Dienst mit minikube stop.
Über das Dashboard haben Sie Zugriff auf wesentliche Funktionsbereiche der Kubeflow-Umgebung. Sie können insbesondere Pipelines generieren, Katib-Experimente initiieren und KServe-Endpunkte anlegen. Außerdem erzeugen Sie sogenannte Contributors, die an einem Kubeflow-Profil mitarbeiten.
Bild 3: Über das Kubeflow-Dashboard steuern Sie die ML-Umgebung.
Pipelines kennenlernen und Modelle trainieren
Eines der wesentlichen Konzepte der Kubeflow-Umgebung ist die Pipeline. Sie beschreibt einen ML-Workflow inklusive aller Komponenten und deren Beziehungen untereinander. Um die Relationen zu verdeutlichen und deren Abhängigkeit zu visualisieren beziehungsweise die Entwicklung zu vereinfachen, stellt Ihnen Kubeflow einen visuellen Editor zur Verfügung. Mit dessen Hilfe definieren Sie die Beziehungen in Diagrammform.
Die Pipeline-Konfiguration umfasst die Definition der Eingaben, die für die Ausführung der Pipeline erforderlich sind, außerdem die Ein- und Ausgaben jeder Komponente. Aus dem Editor heraus können Sie eine Pipeline ausführen; dann startet Kubeflow einen oder mehrere Kubernetes-Pods, die den Schritten (Komponenten) in Ihrem Workflow (Pipeline) entsprechen. Die Pods wiederum bringen Docker-Container ins Rollen und die Container wiederum starten die entsprechenden Programme. Über das "Pipeline"-Menü der Kubeflow-Dashboards stehen Ihnen verschiedene Beispiele zur Verfügung, die sich eignen, um erste Erfahrungen mit diesem Instrument zu sammeln. Für erste Gehversuche bietet sich etwa die Auswahl von "[Sample] Basic – Parallel Execution]" an.
Führen Sie im Pipeline-Editor die Option "Create experiment" aus. Sie werden zur Eingabe verschiedener Eingaben aufgefordert, beispielsweise zur Angabe einer Bezeichnung und verschiedener Ausführungsparameter. Mit einem Klick auf "Run" sichern Sie die Pipeline-Konfiguration. Diese finden Sie anschließend im Untermenü "Experiments"; dort ist auch die Ausführung möglich.
Grundsätzlich können Pipeline-Komponenten Eingaben akzeptieren und Ausgaben generieren. Dazu ist die Deklaration von typisierten Schnittstellen notwendig. KFP kennt zwei Typen: Parameter und Artefakte. Parameter dienen üblicherweise der Übermittlung von kleineren Datenmengen zwischen den Komponenten. Auf Artefakte greifen Sie dann zurück, wenn Sie Datensätze, Modelle oder Metriken transferieren wollen.
Zu den anspruchsvollen Aufgaben zählt unter anderem das Trainieren von Datenmodellen. Zu diesem Zweck kommt der Kubeflow Trainer zum Einsatz, dessen wesentliche Aufgabe im Feintuning von großen Sprachmodellen besteht. Er wird vornehmlich von Data Scientists für die Entwicklung und Optimierung von KI-Modellen unter Zuhilfenahme des Kubeflow-Pyhton-SDKs verwendet. Administratoren können die Trainer-Komponenten auch für administrative Zwecke verwenden. Der Trainer erlaubt die Skalierung des Modelltrainings; das bedeutet, dass das Training sowohl auf einer einzelnen Workstation als auch in der verteilten Kubernetes-Cloud erfolgen kann.
Bild 4: Das Kubeflow-Pipeline-Modul in Aktion.
Fazit
Kubeflow ist ein mächtiger Werkzeugkasten für die Entwicklung von ML-Modellen. Dank der modularen Architektur picken sich Unternehmen damit exakt die Bausteine heraus, die für den KI-Einstieg sinnvoll erscheinen. Dabei erweist sich die hohe Skalierbarkeit als vorteilhaft. Allerdings drängen sich Parallelen zu Kubernetes auf, das als komplex und kaum beherrschbar gilt. Auch Kubeflow verlangt Administratoren und Entwicklern einiges an Einarbeitungszeit ab.