Machine Learning: Kubeflow richtig einrichten – ein Tutorial

Kubeflow hilft beim Erstellen von Pipelines für Machine-Learning-Projekte. Die Installation ist jedoch recht aufwendig.

In Pocket speichern vorlesen Druckansicht 5 Kommentare lesen
Lesezeit: 13 Min.
Von
  • Kevin Kekule
  • Prof. Wolf Knüpffer
  • Dr. Guido-Arndt Söldner
Inhaltsverzeichnis

Google hat 2018 mit Kubeflow ein Projekt initiiert, das Pipelines dediziert für Machine-Learning-Systeme ermöglicht. Der Betrieb erfolgt auf Kubernetes. Der Fokus des Projekts liegt auf einer leichten Handhabung, Portabilität und Skalierbarkeit. Die Anwendungsfälle bestehen in dem Deployment und Management komplexer ML-Systeme, dem einfachen Experimentieren, Hyperparameter-Tuning, der Unterstützung von hybriden und Multi-Cloud-Umgebungen sowie Continous Integration und Continuous Delivery (CI/CD).

Kubeflow ist ein Open-Source-Projekt unter der Apache-2-Lizenz. Eine umfangreiche Beschreibung der Funktionsweise findet sich in iX 5/21, und dieser Artikel soll bei der Einrichtung von Kubeflow und Kale auf einer VMware-Tanzu-Infrastruktur helfen.

Tanzu ist ein modifiziertes Kubernetes, das neben der Laufzeitumgebung spezifische vSphere-Funktionen bietet. Beispielhaft ist mithilfe einer Kubernetes-Ressource ein vollwertiger, neuer Kubernetes Cluster aufgesetzt. Der vollständige Code ist auf GitHub zu finden.

Mit der Kale-Extension lässt sich eine Pipeline aus einem Jupyter-Notebook in Kubeflow Pipelines hochladen.

Vor der Installation von Kubeflow und Kale sind einige Vorarbeiten auf Seiten der VMware-Infrastruktur erforderlich. Dazu gehören das Aktivieren des Workload-Managements im Tanzu Kubernetes Grid (TKG) und die Installation von Add-ons.

Zunächst gilt es, das Workload Management (WM) von vSphere zu konfigurieren, um einen skalierbaren Tanzu Kubernetes Grid Cluster (TKGC) zu erstellen. Falls bei der Installation etwas schiefgeht, ist eine Neuinstallation jederzeit möglich. Die konkreten Einstellungen können je nach Umgebung von der folgenden, beispielhaften Konfiguration abweichen.

Innerhalb des vSphere-Client-Menüs findet sich der Unterpunkt Workload Management. Die Maske zur Konfiguration erwartet zunächst die Auswahl eines kompatiblen Clusters. Ein Klick auf Next zeigt das Fenster zum Dimensionieren des WM-Clusters (Cluster Settings). Die Clustergröße Tiny reicht mit bis zu 1000 Pods zum Testen aus. Ein weiterer Klick auf Next führt zur Eingabemaske, in der die Netzwerkkonfiguration für die TKG-Maschinen stattfindet. Das gewählte Netzwerk sollte Zugriffe auf essenzielle vSphere-Funktionen wie vMotion aufweisen. Für den in Starting IP Address angegebenen Wert reserviert WM zusätzlich zur gewählten die vier nachfolgendenden IP-Adressen. Die Subnetzmaske muss dem Netzwerk entsprechen. Das Gateway, der DNS-Server und der NTP-Server sind passend zur Umgebung einzutragen.

Die nächste Eingabemaske konfiguriert das Workload Network. Zuerst sind der vSphere Distributed Switch und der Edge Cluster zu wählen. Hinter Letzterem setzt WM die vollständige Netzstruktur aller neuen Komponenten auf. Dafür ist eine ausreichende Dimensionierung des Edge-Clusters notwendig, wenn beispielhaft 20 bis 30 Kubernetes-Cluster über die Komponente kommunizieren.

Bei den Pod CIDRs und Service CIDRs handelt es sich um Cluster-interne Adressbereiche, die außerhalb nicht sichtbar sind. Ingress CIDRs dienen als öffentlicher IP-Adressbereich. Beim Deklarieren eines Service vom Typ Loadbalancer innerhalb des Kubernetes-Clusters vergibt der WM eine IP-Adresse als Ingress CIDR. Als Beispiel dient die CIDR 10.4.10.0/24. Beim Egress CIDR handelt es sich um die IP-Adressen, die Pods bei der Kommunikation außerhalb der WM- beziehungsweise TKG-Cluster nutzen – im Beispiel die 10.4.20.1/24. Später gilt es, diesen IP-Adressbereich für den NFS-Server zu konfigurieren. Nach der Auswahl gewünschter Storage Policies in der nächsten Eingabemaske ist das Setup abgeschlossen.

Die folgenden vier Anpassungen im WM-Cluster sind erforderlich, um die Funktion des TKG zu nutzen:

  1. Die Content Library muss abonniert sein, da vSphere dort die notwendigen OVF Templates speichert, um die TKG-Cluster aufzusetzen.
  2. Der TKG- Cluster benötigt einen Namespace.
  3. Nutzer müssen den Speicher innerhalb des TKG Cluster konfigurieren und
  4. können schließlich den TKG-Cluster erstellen.

Über das Client-Menü von vSphere sind die Content Libraries erreichbar. Ein Klick auf Create öffnet eine neue Konfigurationsmaske. Als Name ist beispielhaft tkgc-content-library zu wählen. Im nächsten Untermenü der Konfiguration sollten Entwickler den Radiobutton Subscribed content library anklicken und folgende URL eintragen: https://wp-content.vmware.com/v2/latest/lib.json.

Enable content sollte deaktiviert sein und der Radiobutton immediately aktiviert. Die auftretende SSL-Fingerabdruckwarnung lässt sich mit Yes ignorieren. Ein Klick auf Next führt zur Auswahl des Speicherorts. Die nächste und letzte Maske zeigt einen Überblick über die zuvor ausgewählten Konfigurationswerte. Ein Klick auf Finish erstellt die Content Library. Die Zuweisung zum Cluster, in dem sich WM befindet, erfolgt über den Menüpunkt Hosts and Cluster. Im rechten Fenster ist der Tab Configure zu wählen. Abschließend gilt es, die zuvor erstellte Library über einen Klick auf die Schaltfläche Add Library auszuwählen.

Zum Erstellen des Namespace im WM kommt erneut das Menü Workload Management in vSphere zum Einsatz. Nach dem Klick auf den Button Create Namespace folgt die Auswahl des gewünschten WM-Clusters. Der Name für das vorliegende Beispiel ist kubeflow-ns. Create schließt die Konfiguration ab, und der Browser ruft die Übersichtsseite des Namespace auf. Ein Klick auf Add Storage ermöglicht die Auswahl einer nach eigenen Vorlieben zu wählenden Storage Policy. Diese ist erneut den eigenen Präferenzen nach zu wählen.