TensorFlow-Training mit Kubernetes

TensorFlow + Kubernetes: Kubeflow 0.1 vorgestellt

Marcel Richters
Kubeflow

© Shutterstock.com / VAlex

Mit Kubeflow sollen TensorFlow-Modelle von ihrer Umgebung unabhängig werden. Egal, ob Server, lokal oder in der Cloud, mit Kubeflow soll TensorFlow überall laufen, wo schon Kubernetes läuft. Die Implementierung soll zudem denkbar einfach sein, lediglich ksonnet ab Version 0.9.2 und – natürlich – Kubernetes ab Version 1.8 werden vorausgesetzt.

Machine Learning mit Cloud-Lösungen ist bisher eine eher schwierige Angelegenheit. Von der Verbindung über das Management verschiedener Services bis zum Deployment bedarf einiger Handarbeit. Wenn das Deployment dann endlich geschafft ist, sind die Installationen an ihren jeweiligen Cluster gebunden, der Transport macht oft eine umfassende Neukonstruktion notwendig. Genau bei diesem Problem könnte nun Kubeflow helfen. Das Tool soll überall dort laufen, wo Kubernetes schon zum Einsatz kommt – und das mit möglichst wenig Einarbeitungszeit.

Da für Machine Learning eine ganze Reihe von Tools zum Einsatz kommen, will man mit Kubeflow vor Allem dazu beitragen, den Stack auf die Bedürfnisse der Nutzer zu zuzuschneiden und das System den „langweiligen Kram“ erledigen zu lassen. Laut Dokumentation empfiehlt Kubeflow sich besonders für Anwender, die TensorFlow-Modelle in verschiedenen Umgebungen wie Cloud, lokal oder serverbasiert nutzen wollen. Für Nutzer, die Ressourcen außerhalb der lokal verfügbaren benötigen, soll Kubeflow eine Erleichterung sein, da das Tool die Neukonstruktion der Anwendungen nahezu bis vollständig überflüssig macht.

Kubeflow 0.1

Kubeflow ist gerade in Version 0.1 erschienen und bietet in seinem GitHub-Repository das Folgende:

  • JupyterHub für die Erstellung und das Management interaktiver Jupyter-Notebooks.
  • Eine Custom Resource für TensorFlow, mit der sich CPUs und GPUs konfigurieren und Cluster mit nur einem Setting angepasst werden sollen.
  • Ein TF-Server-Container, der überall lauffähig ist, wo auch Kubernetes läuft.

Wenige Kommandos sind bereits ausreichend, um verschiedenste Helfer und Tools nutzen zu können. Dazu gehört etwa ein TensorFlow-Trainingscontroller und das TensorFlow Serving für das Hosting. Argo wird für Workflows utnerstützt, SeldonCore kann für komplexe Inferenzen sowie Nicht-TensorFlow-Modelle eingesetzt werden und Ambassador hilft im Bereich Reverse Proxy. Dazu kommt natürlich die „Verkabelung“, um alles mit bzw. in Kubernetes laufen zu lassen. Um die Kubeflow-Komponenten zu initialisieren, sind folgende Schritte nötig, wie auf dem Blog von Kubernetes nachzulesen ist:

# Create a namespace for kubeflow deployment
NAMESPACE=kubeflow
kubectl create namespace ${NAMESPACE}
VERSION=v0.1.3

# Initialize a ksonnet app. Set the namespace for it's default environment.
APP_NAME=my-kubeflow
ks init ${APP_NAME}
cd ${APP_NAME}
ks env set default --namespace ${NAMESPACE}

# Install Kubeflow components
ks registry add kubeflow github.com/kubeflow/kubeflow/tree/${VERSION}/kubeflow
ks pkg install kubeflow/core@${VERSION}
ks pkg install kubeflow/tf-serving@${VERSION}
ks pkg install kubeflow/tf-job@${VERSION}

# Create templates for core components
ks generate kubeflow-core kubeflow-core

# Deploy Kubeflow
ks apply default -c kubeflow-core

Da verschiedene Umgebungen – zum Beispiel für Entwicklung, Test und Ausführung – in den meisten Anwendungsfällen von Kubeflow die Norm sein dürften, empfehlen die Macher ksonnet. Durch ksonnet werden Umgebungen zu einem Konzept „erster Klasse“ gemacht, wodurch die Portierung von Workloads zwischen verschiedenen Umgebungen für Kubeflow-Nutzer mit diesem Programm als besonders einfach beworben wird.

Derzeit arbeiten die Entwickler daran, die Palette der möglichen Werkzeuge und die Funktionalität stetig zu erweitern. Für Kubeflow 0.2 sind so bereits ein vereinfachtes Setup über Bootstrap-Container, verbesserte Beschleunigerintegration, Support für weitere Machine-Learning-Frameworks, automatisch skaliertes TensorFlow Serving und programmatische Datentransformen geplant.

Wer jetzt Interesse an Kubeflow hat, kann sich im GitHub-Repository umschauen oder einen Blick in die Einführung auf der Kubernetes-Website werfen. Weitere Informationen zu Kubeflow gibt es in der Ankündigung zu Version 0.1.

ML Conference 2018
Christoph Henkelmann

Preparing Text Input for Machine Learning

with Christoph Henkelmann (DIVISIO)

Geschrieben von
Marcel Richters
Marcel Richters
Marcel hat Soziologie an der Goethe-Universität in Frankfurt am Main studiert und danach als E-Commerce-Manager gearbeitet. Seit Februar 2018 unterstützt er das Team von JAXenter als Redakteur. Daneben arbeitet er als freier Journalist in der Mainmetropole.
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.