Lernen Sie mlflow beim Schreiben von Code

1. Einleitung


MLflow ist eine vielseitige, erweiterbare Open-Source-Plattform für die Verwaltung von Workflows und Artefakten während des gesamten maschinellen Lernlebenszyklus. Es verfügt über eine integrierte Integration mit vielen gängigen ML-Bibliotheken, kann aber mit jeder Bibliothek, jedem Algorithmus oder jedem Bereitstellungstool verwendet werden. Es ist erweiterbar, sodass Sie Plugins schreiben können, um neue Arbeitsabläufe, Bibliotheken und Tools zu unterstützen.

MLflow besteht aus fünf Komponenten:

MLflow-Tracking: API zum Protokollieren von Parametern, Codeversionen, Metriken, Modellumgebungsabhängigkeiten und Modellartefakten beim Ausführen von Code für maschinelles Lernen. MLflow Tracking verfügt über eine Benutzeroberfläche zum Anzeigen und Vergleichen von Läufen und deren Ergebnissen. Dieses Bild aus der MLflow-Tracking-Benutzeroberfläche zeigt ein Diagramm, das Metriken (Lernrate und Momentum) mit Verlustmetriken verbindet:

MLflow-Modelle:: Ein Modellverpackungsformat und eine Tool-Suite, mit der Sie trainierte Modelle (aus jeder ML-Bibliothek) problemlos in Docker, Apache Spark, Batch oder in Echtzeit bereitstellen können Inferenz auf Plattformen wie Databricks, Azure ML und AWS SageMaker. Dieses Bild zeigt die Ausführungsdetails der MLflow-Tracking-Benutzeroberfläche und ihre Ansicht des MLflow-Modells. Sie können sehen, dass Artefakte im Modellverzeichnis Modellgewichtungen, Dateien, die die Modellumgebung und -abhängigkeiten beschreiben, sowie Beispielcode zum Laden des Modells und zur Verwendung des Modells für Inferenzen umfassen:

MLflow-Modellregistrierung: Zentralisierter Modellspeicher, API-Satz und Benutzeroberfläche mit Schwerpunkt auf Genehmigung, Qualitätssicherung und Bereitstellung von MLflow-Modellen.

MLflow-Projekte: Ein Standardformat zum Packen von wiederverwendbarem Data-Science-Code, der mit verschiedenen Parametern ausgeführt werden kann, um Modelle zu trainieren, Daten zu visualisieren oder andere Data-Science-Aufgaben auszuführen.

MLflow-Rezepte: Vordefinierte Vorlagen zur Entwicklung hochwertiger Modelle für eine Vielzahl gängiger Aufgaben, einschließlich Klassifizierung und Regression.

2. Code-Praxis

2.1. Installieren Sie mlflow

pip install mlflow

2.2. Starten Sie mlflow

Methode 1: Befehlsfenster – nur AnsichtlokaleDaten

mlflow ui

Methode 2: Starten Sie einen Server, um die Daten jedes Laufs zu verfolgen

mlflow server

Wenn Sie Methode 2 verwenden, müssen Sie den folgenden Code auf dem Client hinzufügen

mlflow.set_tracking_uri("http://192.168.0.1:5000")
mlflow.autolog()  # Or other tracking functions

2.3. Nachdem Sie mit Methode 2 begonnen haben, stellen Sie fest, dass der folgende Ordner erstellt wurde

2.4. Greifen Sie auf mlflow zu

localhost:5000

Führen Sie den folgenden Codetest aus. Fügen Sie drei Parameter hinzu (config_value, param1 und param2), fügen Sie eine Metrik und eine Datei hinzu

log_params: Anzahl der Teilnehmer

log_metric: 加metric

log_artifact: Zugehörige Dateien hinzufügen

import os
from random import random, randint
from mlflow import log_metric, log_param, log_params, log_artifacts
import mlflow

if __name__ == "__main__":

    mlflow.set_tracking_uri("http://localhost:5000")
    # mlflow.autolog()  # Or other tracking functions

    # Log a parameter (key-value pair)
    log_param("config_value", randint(0, 100))

    # Log a dictionary of parameters
    log_params({"param1": randint(0, 100), "param2": randint(0, 100)})

    # Log a metric; metrics can be updated throughout the run
    log_metric("accuracy", random() / 2.0)
    log_metric("accuracy", random() + 0.1)
    log_metric("accuracy", random() + 0.2)

    # Log an artifact (output file)
    if not os.path.exists("outputs"):
        os.makedirs("outputs")
    with open("outputs/test.txt", "w") as f:
        f.write("hello world!")
    log_artifacts("outputs")

Anschließend finden Sie experimentelle Daten, die in mlflow angezeigt werden

Nach dem Anklicken finden Sie folgende Daten. Drei Parameter, Metrikdaten und eine Datei unter Artefakte.

Führen Sie den folgenden experimentellen Code aus

import mlflow

from sklearn.model_selection import train_test_split
from sklearn.datasets import load_diabetes
from sklearn.ensemble import RandomForestRegressor

mlflow.set_tracking_uri("http://localhost:5000")
mlflow.autolog()

db = load_diabetes()
X_train, X_test, y_train, y_test = train_test_split(db.data, db.target)

# Create and train models.
rf = RandomForestRegressor(n_estimators=100, max_depth=6, max_features=3)
rf.fit(X_train, y_train)

# Use the model to make predictions on the test dataset.
predictions = rf.predict(X_test)

Anschließend werden Sie feststellen, dass es auf dem mlflow-Server eine Ausnahme experimenteller Daten gibt.

Nehmen Sie Ihr Modell zum Testen auf den mlflow-Server

import mlflow

from sklearn.model_selection import train_test_split
from sklearn.datasets import load_diabetes
mlflow.set_tracking_uri("http://localhost:5000")


db = load_diabetes()
X_train, X_test, y_train, y_test = train_test_split(db.data, db.target)

logged_model = 'runs:/acb3db6240d04329acdbfc0b91c61eca/model'

# Load model as a PyFuncModel.
loaded_model = mlflow.pyfunc.load_model(logged_model)

predictions = loaded_model.predict(X_test[0:10])
print(predictions)

Operationsergebnis

[117.78565758 153.06072713  89.82530357 181.60250404 221.44249587
 125.6076472  106.04385223  94.37692115 105.1824106  139.17538236]

Verweise

MLflow – Eine Plattform für den Lebenszyklus des maschinellen Lernens | MLflow

おすすめ

転載: blog.csdn.net/keeppractice/article/details/133935564