Tauchen Sie tief in die Welt von MLflow ein und erfahren Sie, wie Sie diese Open-Source-Plattform zum Verfolgen und Bereitstellen Ihrer Machine-Learning-Experimente nutzen können.
MLOps ist ein wichtiger Bestandteil des maschinellen Lernens, da es dabei hilft, das Training und die Bereitstellung von Modellen des maschinellen Lernens zu automatisieren. Diese Automatisierung kann dazu beitragen, den Prozess der Entwicklung und Bereitstellung von Modellen des maschinellen Lernens zu beschleunigen und sicherzustellen, dass die Modelle korrekt bereitgestellt werden. MLOps kann auch dazu beitragen, die Leistung von Modellen des maschinellen Lernens zu überwachen und Probleme proaktiv zu identifizieren, die möglicherweise in der Produktion behoben werden müssen.
Die MLOps-Landschaft im Jahr 2022 besteht aus verschiedenen Tools und Diensten, die Unternehmen dabei helfen, den Aufbau, das Training und die Bereitstellung von Modellen für maschinelles Lernen zu automatisieren. Diese Tools und Dienste sind so konzipiert, dass sie zusammenarbeiten, um den MLOps-Prozess effizienter und einfacher zu verwalten zu machen. MLflow ist ein solches wichtiges Tool, das wir in diesem Blogbeitrag untersuchen werden.
MLflow ist eine Open-Source-Plattform für den gesamten Lebenszyklus des maschinellen Lernens. Damit können Datenwissenschaftler ihre Experimente verfolgen, Durchläufe reproduzieren und ihre Modelle als Endpunkte bereitstellen. In diesem Artikel werden wir uns eingehend damit befassen, was MLflow ist und wie Sie diese erstaunliche Open-Source-Plattform zum Verfolgen und Bereitstellen Ihrer Experimente zum maschinellen Lernen nutzen können.
Wenn Sie sich MLOps genauer ansehen möchten, sehen Sie sich unser Tutorial zu maschinellem Lernen, Pipelines, Bereitstellung und MLOps an .
Was ist MLflow
MLFlow ist eine Open-Source-Plattform zur Verwaltung des gesamten Lebenszyklus des maschinellen Lernens. Sie bietet einen zentralen Ort zum Verfolgen von Experimenten, zum Teilen von Code und Modellen sowie zum Bereitstellen von Modellen in der Produktion. MLflow enthält außerdem mehrere integrierte Algorithmen und Pakete für beliebte ML-Toolkits. Es hat vier Hauptfunktionen:
- MLflow-Tracking . Behält den Überblick über maschinelle Lernexperimente, um Ergebnisse und Parameter aufzuzeichnen, zu analysieren und zu vergleichen.
- MLflow-Projekte . Verpackt Machine-Learning-Code in eine wiederverwendbare Form, die reproduziert und mit anderen Datenwissenschaftlern geteilt oder in eine Produktionsumgebung verschoben werden kann.
- MLflow-Modelle . Verwaltet und stellt Modelle aus verschiedenen Bibliotheken für maschinelles Lernen auf verschiedenen Modellbereitstellungs- und Inferenzplattformen wie Amazon Sagemaker bereit.
- MLflow-Modellregistrierung . Bietet ein zentrales Modell-Repository zur gemeinsamen Verwaltung des gesamten Lebenszyklus eines MLflow-Modells, einschließlich Modellversionierung, Phasenübergängen und Anmerkungen.
MLflow ist nicht an eine bestimmte Bibliothek gebunden. Da auf alle Funktionen über eine REST-API und eine Befehlszeilenschnittstelle zugegriffen werden kann, können Sie es mit jeder Bibliothek für maschinelles Lernen und in jeder Programmiersprache verwenden. Eine Python-API, eine R-API und eine Java-API sind zu Ihrer Bequemlichkeit alle in das Projekt integriert.
Schlüsselkonzepte in MLflow
MLflow-Verfolgung
Wenn Sie Machine-Learning-Code ausführen, stellt die MLflow Tracking-Komponente eine API und eine grafische Benutzeroberfläche (UI) zum Protokollieren der Parameter, Codeversionen, Metriken und Ausgabedateien bereit. Anschließend können Sie die Ergebnisse der Protokollierung visualisieren. Dank MLflow Tracking können Sie auch Experimente mit Python-, REST-, R-API- und Java-API-APIs protokollieren und abfragen.
MLflow Tracking ist um das Konzept von Läufen herum organisiert. Jeder Lauf zeichnet die wichtigsten Informationen und Metadaten auf, wie Start- und Endzeit, Quelldatei, Parameter, Artefakte, Metriken, Tags usw.
Sie können Läufe mit MLflow Python-, R- oder Java-APIs von jedem beliebigen Ort aus aufzeichnen, unabhängig davon, wo Ihr Code ausgeführt wird. Sie können sie beispielsweise in einem eigenständigen Programm, auf einem Remote-Cloud-Computer oder in einem interaktiven Notizbuch aufzeichnen.
Ebenso können Sie einzelne Läufe in Experimenten organisieren, bei denen es sich um Sammlungen von Läufen handelt, die für einen bestimmten Zweck gruppiert sind. Die Befehlszeilenschnittstelle (CLI), die Methode mlflow.create experiment() oder die REST-API sind einige Optionen, mit denen die Erstellung eines Experiments initiiert werden kann. Benutzer können Experimente auch mithilfe der MLflow-Benutzeroberfläche erstellen.
Bei Bedarf können Sie Aufzeichnungen von MLflow-Läufen lokal in Dateien speichern, sie in eine mit SQLAlchemy kompatible Datenbank hochladen oder sie remote auf einen Tracking-Server hochladen. Die MLflow Python API-Protokolle werden lokal in Dateien im mlruns-Verzeichnis des Speicherorts ausgeführt, an dem Ihr Programm ausgeführt wurde. Dieses Verhalten ist die Standardeinstellung. Danach können Sie die protokollierten Läufe anzeigen, indem Sie die mlflow-UI-Anwendung starten.
MLflow Projekte
MLflow-Projekte sind eine Möglichkeit, Ihren Machine-Learning-Code wiederverwendbar und reproduzierbar zu strukturieren. Sie können Projekte mit jeder Machine-Learning-Bibliothek und Entwicklungsumgebung verwenden. Jedes Projekt besteht aus einem Verzeichnis mit einer MLproject-Datei, die die Projektumgebung und -parameter beschreibt, und einer Reihe von Dateien mit Machine-Learning-Code.
MLflow unterstützt jetzt die folgenden Arten von Projektumgebungen:
- Conda-Umgebung,
- Virtualenv-Umgebung,
- Docker-Container,
- Systemumgebung.
Durch Hinzufügen einer MLProject-Datei (einfach eine YAML-Datei) können Sie das MLflow-Projekt genauer steuern. Nachfolgend sehen Sie ein Beispiel für eine MLProject-Datei:
Wenn das Projekt keine MLproject-Datei enthält, gibt es einige Standardkonventionen, die MLflow annimmt, wie zum Beispiel:
- Der Projektname ist der Name des Verzeichnisses.
- Die Conda-Umgebung wird verwendet und in der Datei conda.yaml angegeben, die sich im selben Verzeichnis befinden muss.
- Der Einstiegspunkt kann jede .py- oder .sh-Datei sein.
- Einstiegspunkte haben standardmäßig keine Parameter.
MLflow-Modelle
Ein MLflow-Modell ist ein standardisiertes Format zum Verpacken von Modellen des maschinellen Lernens, die dann in einer Vielzahl von Tools weiter unten in der Pipeline verwendet werden können. Dies könnte die Echtzeit-Bereitstellung über eine REST-API oder einen Batch-Inferenzprozess umfassen. Das MLflow-Modell ist eine der Schlüsselkomponenten von MLflow. Es gibt ein Protokoll an, das das Speichern eines Modells in einer Reihe unterschiedlicher „Varianten“ ermöglicht, von denen jede von einem einzigartigen Satz nachgelagerter Tools verstanden werden kann.
Jedes MLflow-Modell ist eigentlich ein Verzeichnis, in dem beliebige Dateien zusammen mit einer MLmodel-Datei gespeichert werden, die sich an der Basis des Verzeichnisses befindet und mehrere Varianten definieren kann, in denen das Modell angezeigt werden kann. Diese Dateien werden zusammen als MLflow-Modell bezeichnet.
Die Kernidee hinter der Leistungsfähigkeit von MLflow-Modellen ist ihre Verwendung von Varianten, die als Standard für Bereitstellungstools dienen, um das Modell zu verstehen. Auf diese Weise können Entwickler Tools erstellen, die mit Modellen aus jeder ML-Bibliothek interagieren können, ohne jedes Tool in jede Bibliothek integrieren zu müssen. Eine „Standard“-Variante, die von allen integrierten Bereitstellungstools von MLflow unterstützt wird, ist „Python Function“, die beschreibt, wie das Modell als Python-Funktion ausgeführt wird.
Ein Beispiel für ein MLflow-Modellverzeichnis mit der Variante Scikit-learn:
MLflow unterstützt standardmäßig die folgenden Bibliotheken (als Modellvarianten):
- Scikit-lernen
- TensorFlow
- PyTorch
- Keras
- Spark MLlib
- XGBoost
- LichtGBM
- Katzenboost
- Spacy
- Fastai
- Statistikmodelle
- Prophet
- Python-Funktion (generisch)
- R-Funktion (generisch)
- Eine vollständige Liste finden Sie hier
MLflow-Modellregistrierung
Das MLflow Model Registry ist ein zentrales Repository zum Speichern und Versionieren von ML-Modellen. Es bietet eine Möglichkeit, die Herkunft von Modellen zu verfolgen, Modelle zu vergleichen und Modelle bereitzustellen.
Die MLflow Model Registry-Komponente ist ein Satz von APIs und eine Benutzeroberfläche zur gemeinsamen Verwaltung des gesamten Lebenszyklus eines MLflow-Modells.
Der Zugriff auf die Modellregistrierung über die Benutzeroberfläche (UI) oder die Anwendungsprogrammierschnittstelle (API) erfordert die Verwendung eines datenbankgestützten Backend-Speichers, wenn Sie die Modellregistrierung verwenden möchten.
Modell mithilfe der MLflow-Benutzeroberfläche registrieren:
MLflow-Pipelines (experimentell)
MLflow Pipelines ist eine neue Funktion und befindet sich noch im experimentellen Modus.
Die Entwicklung und Produktion von Machine-Learning-Anwendungen wird durch die Verwendung von MLflow Pipelines, einem eigens entwickelten Framework zur Strukturierung von MLOps-Workflows, einfacher und standardisierter. Dank MLflow Pipelines haben Datenwissenschaftler jetzt mehr Zeit, sich der Erstellung hochwertiger Modelle zu widmen, was es ihnen erleichtert, beim Erstellen produktionsreifer Machine-Learning-Ergebnisse Industriestandards einzuhalten.
MLflow-Pipelines ermöglichen es Machine-Learning-Ingenieuren und DevOps-Teams außerdem, diese Modelle in Apps einzubetten und sie nahtlos in die Produktion zu geben.
MLflow Pipelines bietet Pipeline-Vorlagen in Produktionsqualität für typische Machine-Learning-Problemtypen wie Regression und Klassifizierung sowie MLOps-Operationen wie Batch-Scoring. Pipelines sind als Git-Repositorys mit YAML-basierten Konfigurationsdateien und Python-Code strukturiert. Dies bietet Entwicklern einen deklarativen Ansatz für die Erstellung von ML-Anwendungen, wodurch die Menge an Boilerplate-Code reduziert wird.
MLflows-Pipelines implementieren außerdem einen Cache-fähigen Executor für Pipeline-Schritte. Dadurch wird sichergestellt, dass Schritte nur ausgeführt werden, wenn sich der entsprechende Code oder die Konfiguration geändert hat. Dadurch können Datenwissenschaftler, Machine-Learning-Ingenieure und DevOps-Teams innerhalb ihrer eigenen Fachgebiete sehr schnell iterieren. Darüber hinaus können Pipelines ausgeführt und ihre Ausgabe über APIs und eine von MLflows bereitgestellte Befehlszeilenschnittstelle (CLI) untersucht werden.
MLflows vs. Kubeflow
Nachdem Sie nun wissen, was MLflows ist, wollen wir uns einer sehr häufigen Frage in diesem Bereich widmen: Was ist der Unterschied zwischen MLflows und Kubeflow?
Zunächst: was ist Kubeflow?
Kubeflow ist ein Open-Source-Projekt, das eine kuratierte Sammlung von Tools und Frameworks enthält. Das Hauptziel von Kubeflow besteht darin, die Entwicklung, Bereitstellung und Verwaltung portabler, skalierbarer Machine-Learning-Workflows zu vereinfachen.
Kubeflow basiert auf Kubernetes, einer Open-Source-Plattform zum Ausführen und Orchestrieren von Containern. Kubernetes ist so konzipiert, dass es in verschiedenen Umgebungen konsistent ausgeführt werden kann, was für die Funktionsweise von Kubeflow von entscheidender Bedeutung ist.
Um mehr über Kubeflow zu erfahren, lesen Sie unser ausführliches Tutorial zu Kubeflow .
Beim Vergleich von MLflows und Kubeflow besteht die einzige Ähnlichkeit zwischen diesen beiden Projekten darin, dass sie beide Open Source sind, aber völlig unterschiedliche Anforderungen erfüllen. Kubeflow ist ein Open-Source-Container-Orchestrierungssystem zum Entwickeln, Bereitstellen und Verwalten von Machine-Learning-Anwendungen auf Kubernetes. Andererseits ist MLflows eine Python-Bibliothek zum Experiment-Tracking und zur Modellversionierung/Bereitstellung, unabhängig von der Orchestrierungsumgebung.
MLflows-Lernprogramm
Die Verwendung von MLflows ist äußerst einfach. Es sind nur wenige Codezeilen erforderlich, um die MLflows-Protokollierung in Ihren vorhandenen Code zu integrieren. Aber zuerst müssen Sie MLflows mit pip installieren.
Erstellen wir ein einfaches Python-Skript, um ein logistisches Regressionsmodell zu trainieren und die Metrik und das Modell mit MLflows zu protokollieren. Dies ist ein offizielles Beispiel von MLflows, das von hier reproduziert wurde .
AUSGABE:
>>> Ergebnis: 0,666666666666666
>>> Modell im Lauf gespeichert 9def2bd1c55b4f0985aa5c050b8f71cd
Sie können die MLflows-Benutzeroberfläche starten, indem Sie „mlflows ui“ im Befehlszeilenterminal im selben Verzeichnis eingeben, in dem sich Ihre Python-Datei befindet.
Navigieren Sie dann zu https://localhost:5000 und Sie sehen diese Seite:
Sie sehen, dass wir nur einen Datensatz haben, nämlich das Modell, das wir im obigen Skript trainiert und protokolliert haben. Klicken Sie auf den Namen, und Sie sehen eine detaillierte Seite:
Fazit
MLflows ist eine Open-Source-Plattform und ein großartiges Tool zur Verwaltung des gesamten Machine-Learning-Lebenszyklus. Es wurde von Databricks entwickelt, dem Unternehmen hinter der beliebten Apache Spark-Plattform, und ist für die Verwendung mit jeder Machine-Learning-Bibliothek, jedem Algorithmus und jeder Sprache konzipiert.
MLflows bietet eine Reihe von Vorteilen für Entwickler von maschinellem Lernen und Datenwissenschaftler. Es bietet einen zentralen Ort zum Verfolgen von Experimenten und Verwalten von Projekten für maschinelles Lernen. Dies kann ein wertvolles Tool für die Zusammenarbeit sein, da es verschiedenen Teammitgliedern ermöglicht, zu sehen, was andere tun, und Ergebnisse zu vergleichen confusion matrix.
MLflows kann den Machine-Learning-Workflow automatisieren, von der Datenvorverarbeitung über das Modelltraining bis hin zur Bereitstellung. Dies kann Zeit und Aufwand sparen und die Reproduktion von Ergebnissen erleichtern.
Insgesamt ist MLflows ein wertvolles Tool für die Verwaltung von Machine-Learning-Projekten. Es kann Ihnen dabei helfen, Experimente zu verfolgen, den Workflow zu automatisieren und Modelle zu optimieren. Wenn Sie an Machine-Learning-Projekten arbeiten, sollten Sie sich MLflows unbedingt ansehen.