Machine Learning im Kubernetes-Cluster
Seite 4: Kubeflow – das Machine Learning Toolkit für Kubernetes
Kubeflow ist eine Plattform, mit der sich Machine-Learning-Anwendungen entwickeln und ausführen lassen. Wie Kubernetes stammt auch Kubeflow ursprünglich von Google. Es liegt derzeit in Version 0.3 vor. Kubeflow bietet zum einen eine Sammlung unterschiedlicher Tools und bringt diese in eine sinnvolle Verbindung miteinander. Zum anderen hilft es durch Erweiterungen bei der Installation und Bedienung. Dadurch unterstützt Kubeflow nicht nur die Entwicklung von Machine-Learning-Anwendungen, sondern auch das Ausrollen der Modelle in Produktion und weitere iterative Schritte der Entwicklung.
Zu den Hauptfunktionen von Kubeflow gehört die Möglichkeit, Jupyter Notebooks über JupyterHub zu verwalten. So können mehrere User zeitgleich an unterschiedlichen interaktiven Jupyter Notebooks arbeiten. Vor allem zur Datenanalyse und für das Prototyping sind Jupyter Notebooks sehr hilfreich. Vorkonfiguriert sind verschiedene Python Images mit und ohne GPU-Unterstützung und vorinstalliertem TensorFlow in unterschiedlichen Versionen. Zusätzlich enthalten alle Images die Kubernetes CLI, die es ermöglicht, Kubernetes-Objekte direkt aus dem Notebook heraus zu erzeugen. Auch beide oben beschriebenen Workflow Engines, Argo und Pachyderm, sind in der Version 0.3 bereits integriert und lassen sich installieren. Darüber hinaus finden sich weitere, hier nicht besprochene Tools, die beim Entwickeln von Machine-Learning-Anwendungen zum Einsatz kommen können – darunter die auf MPI basierende TensorFlow-Erweiterung Horovod oder Seldon core, das beim Ausrollen von Modellen hilft.
Kubeflow bringt nicht nur verschiedene Tools zusammen, sondern bietet auch andere implementierte Komponenten. Hierzu gehören sogenannte Operatoren. Diese basieren auf CRDs und helfen beim Starten eines verteilten Trainings mit einigen bekannten Deep-Learning-Frameworks wie TensorFlow, Caffe2, PyTorch oder MXNet. Dabei wird die Verteilung der Prozesse, die meist Framework-eigen sind, vom Benutzer abstrahiert, sodass dieser sich auf die Implementierung der Netze konzentrieren kann. Kubeflow verfolgt den Ansatz einer einheitlichen Schnittstelle für die Frameworks. Eine andere Komponente ist das zentrale Dashboard, das alle aktiven Kubeflow-Komponenten anzeigt und die Navigation zu diesen erleichtert.
Vorteile und Nachteile von Kubeflow
- (+) Sammlung von Tools, die nach der Installation sinnvoll zusammenarbeiten.
- (+) Zentraler Punkt als Anlaufstelle, um alle Komponenten zu verwenden.
- (+) Abstrahiert unterschiedliche Frameworks und bietet einheitliche Operatoren.
- (+) Data Scientists können sich auf die Implementierung der Modelle konzentrieren und dann automatisch per CI/CD-Pipelines in Produktion ausrollen.
- (–) Umfangreiche Plattform, die je nach verwendeter Komponenten entsprechend viel Ressourcen belegt.