Was heißt Kedro?
Kedro ist ein Open-Supply-Python-Framework zur Erstellung von reproduzierbarem, nachhaltigem und modularem Knowledge-Science-Code. Es übernimmt Konzepte aus Greatest Practices der Softwareentwicklung und wendet sie auf Code für maschinelles Lernen an. Zu den angewandten Konzepten gehören Modularität, Interessentrennung und Versionskontrolle.
- Open Supply Python-Framework: Kedro ist kostenlos und wird von seiner Group gepflegt, wodurch es einfach zu verwenden ist.
- Reproduzierbarer Code: Mit Kedro können Sie Datenpipelines erstellen und diese für verschiedene Datenquellen verwenden.
- Nachhaltiger Code: Das Kedro-Framework erleichtert die Codepflege und ermöglicht einem Staff die gemeinsame Arbeit an derselben Pipeline.
- Modularer Code: Funktionen können in verschiedenen Teilen der Pipeline und in verschiedenen Pipelines verwendet werden.
Installationsrichtlinie
Die Set up von Kedro erfolgt mit dem PyPI-Paket:
pip set up kedro
Um die Set up zu überprüfen, führen Sie diesen Befehl aus:
kedro data
Wenn alles intestine geht, sehen Sie das folgende Bild, gefolgt von der installierten Model:
Interaktiv ein Projekt mit kedro erstellen
Um ein Kedro-Projekt zu erstellen, führen Sie den folgenden Befehl aus:
kedro new
Als nächstes müssen Sie drei Fragen beantworten:
- Projektname: Identify des Projekts (verwenden Sie einen lesbaren Namen, getrennt durch Unterstriche);
- Repo-Identify: Identify des Projektordners (Sie können es leer lassen und Kedro verwendet den Projektnamen)
- python_package: Identify des Python-Pakets (kann auch leer bleiben).
Erstellen eines neuen Projekts aus einer Konfigurationsdatei
Wenn Sie möchten, können Sie ein neues Projekt aus einer Konfigurationsdatei erstellen. Die Datei muss enthalten:
output_dir: ~/code
project_name: Get Began
repo_name: get-started
python_package: get_started
So erstellen Sie das neue Projekt:
kedro new - config config.yml
Erstellen einer Pipeline
Führen Sie Folgendes aus, um eine neue Pipeline-Vorlage zu generieren:
kedro pipeline create data_processing
Was ist MLflow?
MLflow ist eine Plattform zur Rationalisierung der maschinellen Lernentwicklung, einschließlich der Verfolgung von Experimenten, dem Packen von Code in reproduzierbare Läufe sowie der gemeinsamen Nutzung und Bereitstellung von Modellen. MLflow bietet eine Reihe leichtgewichtiger APIs, die mit jeder vorhandenen Anwendung oder Bibliothek für maschinelles Lernen (TensorFlow, PyTorch, XGBoost usw.) überall dort verwendet werden können, wo Sie derzeit ML-Code ausführen (z. B. in Notebooks, eigenständigen Anwendungen oder in der Cloud).
Die aktuellen Komponenten von MLflow sind:
- MLflow-Tracking: Eine API zum Protokollieren von Parametern, Code und Ergebnissen in Experimenten zum maschinellen Lernen und zum Vergleichen dieser mithilfe einer interaktiven Benutzeroberfläche.
- MLflow-Projekte: Ein Code-Paketierungsformat für reproduzierbare Ausführungen mit Conda und Docker, sodass Sie Ihren ML-Code mit anderen teilen können.
- MLflow-Modelle: Ein Modellverpackungsformat und Instruments, mit denen Sie problemlos dasselbe Modell (aus einer beliebigen ML-Bibliothek) für die Stapel- und Echtzeitbewertung auf Plattformen wie Docker, Apache Spark, Azure ML und AWS SageMaker bereitstellen können.
- MLflow-Modellregistrierung: Ein zentraler Modellspeicher, eine Reihe von APIs und eine Benutzeroberfläche zur gemeinsamen Verwaltung des gesamten Lebenszyklus von MLflow-Modellen.
Set up
pip set up mlflow
Festlegen eines Monitoring-URI
MLflow-Ausführungen können in lokalen Dateien, in einer SQLAlchemy-kompatiblen Datenbank oder distant auf einem Monitoring-Server aufgezeichnet werden.
Standardmäßig werden die MLflow-Python-API-Protokolle lokal in Dateien in einem mlruns-Verzeichnis ausgeführt, wo auch immer Sie Ihr Programm ausgeführt haben.
mlflow.set_tracking_uri()
- Native file path (specified as file:/my/native/dir)
- Database encoded as <dialect>+<driver>://<username>:<password>@<host>:<port>/<database>
- HTTP server (specified as https://my-server:5000) which is a server internet hosting an MLflow monitoring server.
Ein Experiment erstellen
mlflow.create_experiment()
erstellt ein neues Experiment und gibt seine ID zurück.
Läufe können im Rahmen des Experiments gestartet werden, indem die Experiment-ID an übergeben wird
mlflow.start_run()
Einen Lauf erstellen und beenden
mlflow.start_run()
mlflow.end_run()
Wenn kein aktiver Lauf existiert, wird ein neuer gestartet.
Protokollierungsparameter
Mit Mlflow können Sie einen einzelnen Schlüsselwertparameter oder mehrere Parameter gleichzeitig im aktuell aktiven Lauf protokollieren. Der Schlüssel und der Wert sind beide Zeichenfolgen.
mlflow.log_param()
mlflow.log_params()
Protokollierungsmetriken
Die Protokollierung von Schlüsselwertmetriken ist möglich und MLflow merkt sich den Werteverlauf für jede Metrik.
Der metrische Wert muss immer eine Zahl sein.
mlflow.metric()
mlflow.metrics()
Protokollierungsartefakte
mlflow.log_artifact()
mlflow.log_artifacts()
Protokolliert eine lokale Datei oder ein lokales Verzeichnis als Artefakt und verwendet non-compulsory einen Artefaktpfad, um es im Artefakt-URI des Laufs zu platzieren.
Kedro-Mlflow-Plugin
kedro-mlflow ist ein Kedro-Plugin für die einfache und moveable Integration von mlflow-Funktionen in Kedro-Projekten. Es setzt die Kedro-Prinzipien durch, um die Verwendung von mlflow so produktionsbereit wie möglich zu gestalten.
Kedro-mlflow-Set up
Kedro-mlflow ist nur kompatibel mit Kedro>=0,16,0 Und mlflow>=1.0.0.
Wenn Sie ein Projekt mit einer älteren Model von Kedro erstellt haben, sehen Sie sich dies an Migrationsleitfaden.
Von PyPI installieren
kedro-mlflow ist auf PyPI verfügbar, Sie können es additionally mit pip installieren:
pip set up kedro-mlflow
Von Quellen installieren
Sie können das Paket von Github installieren:
pip set up git+https://github.com/Galileo-Galilei/kedro-mlflow.git
Überprüfen Sie die Set up
Geben Sie kedro data in ein Terminal ein, um die Set up zu überprüfen. Wenn es erfolgreich battle, sollten Sie die folgende ASCII-Grafik sehen:
_ _
| | _____ __| |_ __ ___
| |/ / _ / _` | '__/ _
| < __/ (_| | | | (_) |
|_|____|__,_|_| ___/
v0.16.<x> kedro permits groups to create analytics
initiatives. It's developed as a part of
the Kedro initiative at QuantumBlack.
Put in plugins:
kedro_mlflow: 0.11.3 (hooks:international,undertaking)
Verwendung des Plugins
Nach der Set up kann das Plugin aktiviert werden über:
kedro mlflow init
Bei Erfolg wird die folgende Meldung angezeigt: ‚conf/native/mlflow.yml‘ erfolgreich aktualisiert.
Der Ordner „conf/native“ wird aktualisiert und Sie können Folgendes sehen mlflow.yml Datei:
Non-obligatory: Wenn Sie Ihren eigenen mlflow-Server konfiguriert haben, können Sie die Monitoring-URI im angeben mlflow.yml (ersetzen Sie die hervorgehobene Zeile unten):
Projektkomponenten
In diesem Abschnitt stellen wir ein Beispiel einer Kedro-Pipeline vor, die drei Hauptpipelines enthält:
- Datenaufbereitung: Das Ziel dieser Pipeline besteht darin, kommentierte Bilder (Textual content der Anmerkung) aus Label Studio zu extrahieren und die entsprechenden Bilder zu finden.
- Datenwissenschaft: Diese Pipeline wird verwendet, um den Trocr-Ansatz mithilfe der in der Datenvorbereitungspipeline extrahierten Daten zu trainieren und dann das Modell mithilfe des Bewertungsdatensatzes auszuwerten.
- Datenversionierung: um zu Um die Versionen unserer Modelle in Git-Commits zu erfassen, haben wir die Datenversionskontrolle verwendet (DVC), um Modelle in jedem Experiment im Azure Blob Storage Container zu speichern.
Datenvorbereitungspipeline
- Der data_preparation/nodes.py Enthält den Knoten extract_data_from_label_studio und andere Funktionen. Dieser Knoten extrahiert die annotierten Daten (Dateiname und annotierter Textual content) aus Label Studio und speichert sie in einer Datei.
- Für data_preparation/pipeline.pyerstellen wir eine Datenvorbereitungspipeline, indem wir den Knoten in der Pipeline zusammenstellen und den Namen der Funktion (Knoten), die Eingabe und die Ausgabe dieses Knotens sowie den Namen des Knotens angeben.
- In base/parameters/data_prepara.yml In der Datei werden die Einstellungen der Datenvorbereitungspipeline definiert. Wir haben die Verbindungsparameter von Label Studio (Token und URL) und Datenextraktionsparameter (wie die Anzahl der zu extrahierenden Takes und den Pfad der Datei, in der die Daten gespeichert werden) angegeben.
Knowledge Science-Pipeline
- Der data_science/nodes.py Die Datei enthält den Trainings- und Evaluierungscode des Trocr-Modells. Wir verwenden mlflow auch, um die Parameter, Metriken und Artefakte des Laufs zu protokollieren.
- Für data_science/pipeline.pywir geben die Eingabe und Ausgabe jedes Knotens an (Funktionen definiert in nodes.py)
- Die Parameter der Knowledge-Science-Pipeline finden Sie in Parameter/data_science.yml
Datenversionierungspipeline
Ähnlich wie bei der vorherigen Pipeline werden die Knoten der Datenversionierungspipeline in definiert data_versioning/nodes.py. Sie definieren die Distant-Konfigurationsschnittstelle, die DVC Azure-Remotekonfiguration sowie die DVC- und Git-Purchasers. pytorch_pipeline/pipeline_registry.py wird verwendet, um die erstellten Pipelines zu registrieren
Ausführen des Projekts
kedro run
Sie können auch eine bestimmte Pipeline ausführen:
kedro run - pipeline my_pipeline
Wenn Sie kedro run ohne die Possibility „-pipeline“ angeben, wird die Standardpipeline aus dem von zurückgegebenen Wörterbuch ausgeführt register_pipelines().
Starten der Mlflow-Benutzeroberfläche:
kedro mlflow ui