Blog
Kedro ausführen... überall? Pipelines für maschinelles Lernen auf Kubeflow, Vertex AI, Azure und Airflow

Der Aufbau zuverlässiger Pipelines für maschinelles Lernen stellt eine große Belastung für Data Scientists und Ingenieure für maschinelles Lernen dar. Es ist relativ einfach, ein ML/AI-getriebenes Projekt mit einem kleinen Team in Jupyter Notebook zu starten. Die Teams erkennen jedoch recht schnell, dass das Notebook in eine Art Pipeline umgewandelt werden muss, nicht nur um die Experimente wiederholen zu können, sondern auch um den Prozess zu skalieren, z. B. auf größere Daten oder anspruchsvollere Machine Learning-Modelle. Hier kommt Machine Learning Operations (MLOps) ins Spiel. Der Aufbau von Pipelines für maschinelles Lernen ist eine der besten Praktiken von MLOps.
Bei GetInData hören wir diese Geschichte sehr oft von unseren Kunden. Unsere bevorzugte Lösung für den ersten Teil des Problems - den Aufbau einer zuverlässigen Pipeline für maschinelles Lernen - ist in der Regel eine Empfehlung für das Kedro-Framework.
Die kürzeste Definition von Kedro aus der Dokumentation lautet:
Auf der einen Seite ist das "nur", auf der anderen Seite ist es wirklich eine Menge. Kedro bietet eine Codestruktur für Projekte des maschinellen Lernens, indem es den besten Software-Engineering-Praktiken folgt, ohne die Möglichkeiten der Data Scientists einzuschränken - sie können alle ihre bevorzugten ML-Frameworks wie XGBoost, Scikit-Learn, Tensorflow oder PyTorch verwenden. Es führt die Abstraktion einer Pipeline (die die Logik des ML-Projekts beschreibt) ein, die aus Knoten (zur Durchführung von Aktionen) besteht. Knoten konsumieren und geben Artefakte wie Daten oder Modelle aus (mit der Abstraktion des Data Catalog). Das Ganze ist angereichert mit Software-Engineering-Funktionen wie: konventionsbasierte Ordnerstruktur, umgebungsabhängige Konfiguration, Event-Hooks, Parametrisierung, Pipeline-Komposition, Ausführungsmanagement, Unit-Tests und andere. Kedro selbst ist Teil der LF AI & Data Foundation und wurde im August 2021 von McKinsey und QuantumBlack entwickelt.
Zurück zur Geschichte - durch den Einsatz von Kedro können wir die folgenden Herausforderungen in ML-Projekten bewältigen:
- Bau von Pipelines
- Konfiguration
- Parametrisierung
- Verwaltung von Datensätzen
- Reproduzierbarkeit
- Datenverarbeitung
- Modellschulung / Bewertung
Wie sieht es mit der Skalierbarkeit aus? Standardmäßig führt Kedro die Pipelines lokal (oder auf einem entfernten Rechner) entweder sequentiell oder parallel aus (unter Verwendung des Multiprocessing von Python, was einige Herausforderungen mit sich bringt). Standardmäßig ist die Skalierbarkeit für größere Modelle/Datensätze nicht gut, da sie durch die Fähigkeiten des einzelnen Knotens (Laptop/virtuelle Maschine/andere) begrenzt ist.
Bei GetInData haben wir diese Einschränkung gelöst, indem wir sowohl Cloud-native als auch Cloud-agnositc-Plugins für Kedro implementiert haben, die es uns ermöglichen, die Kedro-Pipelines in großem Umfang auf verschiedenen serverlosen/verwalteten Cloud-Diensten von ALLEN großen Cloud-Anbietern - Google Cloud Platform, AWS und Azure sowie auf bestehenden Kubernetes-basierten Infrastrukturen - Kubeflow Pipelines oder Apache Airflow - auszuführen.
Kedro auf Kubeflow Pipelines ausführen
GitHub: https://github.com/getindata/kedro-kubeflow
Dokumentation: https://kedro-kubeflow.readthedocs.io/en/stable/
Mit dem Kedro-Kubeflow-Plugin ermöglichen wir es Benutzern, Kedro-Pipelines automatisch in Kubeflow-Pipelines zu übersetzen und sie auf KFP-Clustern auszuführen. Alle Knoten können unterschiedliche CPU-, Speicher- oder GPU-Anforderungen haben, so dass ML-Ingenieure die Pipeline an rechenintensiven Orten leicht skalieren können, während leichte Knoten mit geringeren Ressourcen laufen können.
Da Kubeflow Pipelines selbst Cloud-unabhängig ist, können Sie Ihre Kedro-Pipelines in jedem Kubernetes-Cluster ausführen und skalieren - entweder in der Cloud (AWS, GCP, Azure) oder vor Ort.

Ausführen von Kedro auf Airflow (in Kubernetes)
GitHub: https://github.com/getindata/kedro-airflow-k8s
Dokumentation: https://kedro-airflow-k8s.readthedocs.io/en/0.8.0/
Dieses Plugin ermöglicht die Ausführung von Kedro-Pipelines mit Apache Airflow auf Kubernetes Cluster. Im Gegensatz zu kedro-airflow erfordert dieses Plugin keine zusätzlichen Bibliotheken, die in der Airflow-Laufzeit installiert sind, sondern nutzt stattdessen die Kubernetes-Infrastruktur. Das Plugin selbst kompiliert eine Kedro-Pipeline in eine Apache Airflow DAG-Definition - sobald dies geschehen ist, kann die DAG in eine Airflow-Instanz hochgeladen und ausgeführt werden. Außerdem unterstützt das Plugin die Verwendung eines externen Spark-Clusters als Berechnungsumgebung. Wenn Sie Kubernetes nicht hosten möchten, aber das containerisierte Ausführungsmodell auf AWS mögen, haben wir auch hier für Sie gesorgt - eine experimentelle Version des Plugins kann auf AWS MWAA (managed Airflow) laufen und stattdessen Container auf ECS bereitstellen.
Sie können mehr über die Plugins kedro-kubeflow und kedro-airflow in unserem früheren Blogbeitrag Running Machine Learning Pipelines with Kedro, Kubeflow and Airflow von Mariusz Strzelecki lesen
Kedro auf Vertex AI Pipelines ausführen
GitHub: https://github.com/getindata/kedro-vertexai
Dokumentation: https://kedro-vertexai.readthedocs.io/en/stable/
Vertex AI Pipelines ist ein Service der Google Cloud Platform, der darauf abzielt, die Funktionalität von Kubeflow Pipelines auf vollständig serverlose Weise bereitzustellen. Es ist keine manuelle Konfiguration erforderlich (und es gibt keinen Kubernetes-Cluster, der gewartet werden muss - zumindest nicht für den Benutzer sichtbar). Sie planen die Pipeline und der Dienst kümmert sich um die gesamte Infrastruktur für Sie.
Mit unserem Kedro-VertexAI Plugin können Sie die Kedro Pipeline auf dem Vertex AI Pipelines Service laufen lassen - auch hier übernehmen wir die gesamte Arbeit für Sie. Geben Sie die Ressourcenanforderungen (CPU/Speicher/GPU) an und lassen Sie die Pipeline laufen. Dies ist eine der einfachsten Möglichkeiten, Kedro-Pipelines zu skalieren, wenn Sie die Google Cloud Platform verwenden.

Kedro auf Azure Machine Learning Pipelines ausführen
GitHub: https://github.com/getindata/kedro-azureml
Dokumentation: https://kedro-azureml.readthedocs.io/en/stable/
Wenn Ihre bevorzugte Cloud-Plattform Azure ist, haben wir auch für Sie gesorgt! Erst kürzlich (August 2022) haben wir das Kedro-AzureML-Plugin veröffentlicht, mit dem Sie Kedro-Pipelines im Azure Machine Learning Pipelines Service ausführen können. Ähnlich wie Vertex AI ist auch Azure ML Pipelines ein vollständig verwalteter Dienst, der einfache Skalierungsmöglichkeiten bietet. ML-Ingenieure müssen zunächst Compute-Cluster einrichten, aber das ist ein einfacher Prozess, der ohne die Beteiligung der DevOps-Teams durchgeführt werden kann. Sobald dies geschehen ist, können Kedro-Pipelines auf Azure ML Pipelines ausgeführt werden. Darüber hinaus lassen sich Metriken und trainierte Modelle mit der in Azure ML integrierten MLflow-Integration leicht nachverfolgen, ohne dass eine zusätzliche Konfiguration erforderlich ist.

Wir empfehlen Ihnen, sich diese Schritt-für-Schritt-Anleitung zum Kedro-AzureML-Plugin anzusehen, mit dem Sie Kedro-Pipelines auf dem Azure ML Pipelines Service ausführen können.
Zusammenfassung
Wir empfehlen Ihnen, Kedro in Ihren Machine Learning-Projekten auszuprobieren und eines unserer Open-Source-Plug-ins für die Ausführung und Skalierung von Machine Learning-Pipelines in der Cloud zu nutzen! Wenn Sie Probleme mit den Plug-ins haben, können Sie sich gerne auf GitHub an uns wenden, wir helfen Ihnen gerne weiter. Viel Spaß beim Codieren!
Interessieren Sie sich für ML- und MLOps-Lösungen? Wie können Sie ML-Prozesse verbessern und die Lieferfähigkeit von Projekten steigern? Sehen Sie sich unsere MLOps-Demo an und melden Sie sich für eine kostenlose Beratung an.
Verfasst von
Marcin Zabłocki
Unsere Ideen
Weitere Blogs
Contact



