Durchsuchen von Läufen in MLflow

Durchsuchen Von Laufen In Mlflow



Um die Machine-Learning-Experimente zu verfolgen und zu verwalten, bietet MLflow eine umfangreiche Plattform. Die Möglichkeit, Läufe zu durchsuchen, ist eine der Hauptfunktionen von MLflow. Dadurch ist es möglich, die entwickelten Experimente zu identifizieren und so zu organisieren, dass die Informationen bei Bedarf einfach gefunden werden können. Wir können Ausführungen mithilfe der MLflow-Such-API anhand verschiedener Kriterien durchsuchen, darunter die folgenden:
  • Experiment-ID oder Name
  • Lauf-ID
  • Parameter und Werte
  • Metriken und Werte
  • Stichworte
  • Andere Attribute, die den Läufen zugeordnet sind

Mithilfe der MLflow-Such-API können Ausführungen nach Status, Startzeit, Endzeit und Dauer gefiltert werden. Dadurch ist es einfacher, viele Läufe zu filtern und bestimmte Läufe zu finden, an denen die Benutzer interessiert sind.

MLflow-Suchfunktion

Verwenden Sie die Funktion mlflow.search_runs(), um auf die MLflow-Such-API zuzugreifen. Diese Funktion akzeptiert eine Vielzahl von Argumenten wie die folgenden:







  • Die Experiment-ID oder der Name
  • Filtern Sie Zeichenfolge oder Text
  • Die maximale Anzahl der zurückzugebenden Läufe wird durch das Argument max_results angegeben

Eine vereinfachte Variante der SQL-WHERE-Klausel (Structured Query Language) ist die Filterzeichenfolge oder der Filtertext. Es kann verwendet werden, um die Kriterien anzugeben, nach denen wir die Läufe sortieren möchten.



Syntax der MLflow Search_Runs()-Funktion

Im folgenden Beispiel muss die tatsächliche ID oder der Name des Experiments, in dem wir suchen möchten, durch „experiment_id oder experiment_name“ ersetzt werden. Die Variable search_criteria ermöglicht die Eingabe der Suchkriterien nach Wunsch. Diese Kriterien können durch Metriken, Tags, Parameter oder zusätzliche Merkmale bestimmt werden. Die grundlegende Syntax der Funktion search_runs() lautet wie folgt:



# Importieren Sie die mlflow-Such-API, um die Funktion search_runs zu verwenden

importieren mlflow

# Geben Sie eine Experiment-ID oder einen Namen an (dies ist optional; )

exp_id = „Experiment-ID oder NAME“

# Definieren Sie die Suchkriterien für Läufe

Suchbegriff = „metrics.accuracy > 0,8 UND params.learning_rate = ‚0,01‘ UND params.efficiency_rate > ‚80‘“

# Führen Sie die Suche durch

läuft = mlflow. search_runs ( experiment_ids = exp_id , filter_string = Suchbegriff )

# Zeigen Sie die Ergebnisse an

drucken ( 'Suchergebnisse:' )

drucken ( läuft )

Führen Sie eine Suche anhand zahlreicher Kriterien durch

1. Suche nach Metrikwert

Läufe können mithilfe des Metrikfelds in der MLflow-Such-API nach den Werten bestimmter Metriken gefiltert werden. Im Metrikfeld wird eine Sammlung von durch Kommas getrennten Metriknamen angezeigt. Die folgende Filterzeichenfolge findet beispielsweise alle Läufe mit einem Genauigkeitswert von mehr als 0,9:





Metriken. Genauigkeit > 0,9

Die vollständige Liste der zur Verwendung im Metrikfeld verfügbaren Metriken ist wie folgt:

  • Genauigkeit
  • auc
  • f1
  • Präzision
  • abrufen
  • Karte
  • logloss
  • Klassifizierungsfehler
  • multi_class_logloss

Darüber hinaus können Benutzer die Läufe mithilfe des Metrikfelds nach dem Wertebereich einer Metrik filtern. Die nächste Filterzeichenfolge findet beispielsweise alle Läufe, deren Genauigkeitsmaß einen Wert zwischen 0,4 und 0,8 aufweist:



Metriken. Genauigkeit ZWISCHEN 0,4 UND 0,8

Im Metrikfeld kombinieren die AND- und OR-Operatoren die Metriken, um die Läufe mit Metrikgenauigkeit und f1-Werten über 0,3 und 0,8 zu finden:

Metriken. Genauigkeit > 0,3 UND-Metriken. f1 > 0,8

2. Suche nach Parameterwert

Nutzen Sie das Feld „params“ in der MLflow-Such-API, um eine Suche nach einem Parameterwert durchzuführen. Die Parameternamen und -werte werden im Feld params mit Kommas aufgelistet. In diesem Beispiel findet die oben genannte Filterzeichenfolge alle Läufe mit dem Parameter num_boost_round, die den Wert 100 haben:

Parameter. num_boost_round = '100'

Einige weitere Beispiele für Suchzeichenfolgen für Parameterwerte:

  • params.num_boost_round = 900
  • params.learning_rate ZWISCHEN 0,001 UND 0,01
  • params.num_boost_round=’70’ UND params.learning_rate=’0.01′

3. Suche nach Tags

Hier ist ein Beispiel für eine Suche mit Tags:

Suchkriterium = 'tags.mlflow.source.type = 'Wörterbuch''

Beispiel für die Matrix- und Parameterwerte zur Ausführung der Funktion Mlflow.search_runs()

Lassen Sie uns ein Beispiel für die Einrichtung eines MLflow-Experiments, die Protokollierung von Ausführungen und die anschließende Verwendung von mlflow.search_runs() zum Initiieren einer Suche durcharbeiten. Um den Code vollständig zu verstehen, gehen Sie folgendermaßen vor:

Schritt 1: Erstellen Sie ein MLflow-Experiment

Wir beginnen mit der Einrichtung eines MLflow-Experiments. Es ruft das vorhandene Experiment ab, wenn das Experiment bereits existiert. Wenn nicht, wird ein neues erstellt.

Code-Erklärung:

Die MLflow-Bibliothek wird in der ersten Zeile des Codes importiert und experiment_name wird in der nächsten Zeile auf „My First MLflow Experiment“ gesetzt. Wenn der experiment_name an die Funktion „mlflow.get_experiment_by_name“ übergeben wird, gibt diese Funktion „None“ zurück, wenn das Experiment nicht existiert, andernfalls ein Objekt des Experiments.

Überprüfen Sie, ob das Experiment in der Bedingungsanweisung vorhanden ist. Wenn das Experiment bereits existiert, legen Sie die experiment_id fest. Andernfalls verwenden Sie „mlflow.create_experiment“, um ein neues Experiment zu erstellen. Die Experiment-ID wird von dieser Funktion zurückgegeben. Zeigen Sie am Ende des Experiments die Experiment-ID auf dem Konsolen- oder Terminalbildschirm an. Kopieren Sie den folgenden Code in den Editor und speichern Sie die Datei unter dem gewünschten Namen und mit der Erweiterung „.py“:

# mlflow-Bibliothek importieren

importieren mlflow

# Erstellen oder rufen Sie das Experiment ab

exp_name = „Mein erstes MLflow-Experiment“

# Rufen Sie das Experiment nach Namen mit der mlflow-Funktion get_experiment_by_name ab

exp = mlflow. get_experiment_by_name ( exp_name )

# Überprüfen Sie, ob das Experiment noch nicht existiert

Wenn exp Ist Keiner :

# Erstellen Sie ein neues Experiment und übergeben Sie den Experimentnamen an die Funktion mlflow.create_experiment

exp_id = mlflow. create_experiment ( exp_name )

# Zeigen Sie die Erfolgsmeldung auf dem Bildschirm an

drucken ( „Experiment existiert nicht. Experiment erfolgreich erstellt!“ )

anders :

# Rufen Sie die experiment_id des vorhandenen Experiments ab

exp_id = exp. experiment_id

drucken ( „Experiment existiert bereits!“ )

# Experiment-ID anzeigen

drucken ( „Experiment-ID:“ , exp_id )

Starten Sie nun das Programm in der Eingabeaufforderung oder im Terminalfenster mit dem Python-Compiler und geben Sie „Python“ und dann den Dateinamen ein, in diesem Fall „MyFirstMlflowExperiment.py“. Wenn das Experiment zum ersten Mal ausgeführt wird, ist es noch nicht vorhanden. Daher erstellt MLFlow eine und gibt die Experiment-ID auf dem Konsolenbildschirm aus:

Führen Sie den Code erneut aus, um sicherzustellen, dass keine neuen Experimente erstellt werden, und um die ID bereits vorhandener Experimente anzuzeigen. Der folgende Screenshot zeigt, dass das Experiment bereits existiert:

Schritt 2: Protokollieren Sie die Läufe mit Metriken und Parametern

Versuchen wir nun, einige Durchläufe mit den Metriken und Parametern für das gerade erstellte Experiment zu protokollieren. In einem realen Szenario entwickeln wir die Modelle für maschinelles Lernen und zeichnen am Ende jedes Laufs die relevanten Informationen wie Metriken und Parameter auf. Hier wird die Genauigkeit als Matrixwert verwendet und beträgt in diesem Fall 0,95. Die Parameterwerte für Lern- und Effizienzrate betragen 0,01 bzw. 90. Hier ist der Code:

# Starten Sie einen MLflow-Lauf, um Metriken und Parameter zu protokollieren

mit mlflow. starte den Lauf ( experiment_id = exp_id ) :

# Ihr Code für maschinelles Lernen hier (dies ist nur ein simuliertes Beispiel)

model_accuracy = 0,95

machine_learning_rate = 0,01

Effizienzrate = 90

# Protokollmetriken und Parameter

mlflow. log_metric ( 'Genauigkeit' , model_accuracy )

mlflow. log_param ( 'Lernrate' , machine_learning_rate )

mlflow. log_param ( „efficiency_rate“ , Effizienzrate )

Das Ergebnis, wenn der oben genannte Code ausgeführt wird, ist hier zu sehen. Das Ergebnis ist das gleiche wie zuvor:

Schritt 3: Führen Sie eine Suche mit Mlflow.search_runs() durch

Abschließend führen wir anhand einiger Parameter eine Suche nach den protokollierten Läufen durch und zeigen die Ergebnisse auf dem Terminalbildschirm an:

# Definieren Sie die Suchkriterien für Läufe

define_search_criteria = „metrics.accuracy > 0,8 UND params.learning_rate = ‚0,01‘ UND params.efficiency_rate = ‚90‘“

# Führen Sie die Suche durch

läuft = mlflow. search_runs ( experiment_ids = exp_id , filter_string = define_search_criteria )

# Zeigen Sie die Ergebnisse an

drucken ( 'Suchergebnisse:' )

drucken ( läuft )

Durch die Ausführung der Funktion „search_runs“ wird eine Warnung erzeugt, die sich auf das Git-Tool bezieht:


Fügen Sie oben in der Python-Datei Code hinzu, um diese Warnung zu deaktivieren. Hier ist der kurze Abschnitt des Codes:

importieren mlflow

importieren Du

Du . etwa [ „GIT_PYTHON_REFRESH“ ] = 'ruhig'

Die Funktion „mlflow.search_runs“ wird erfolgreich ausgeführt, sobald diese Codezeilen hinzugefügt wurden:

Abschluss

Mit der Funktion „mlflow.search_runs“ können Benutzer die Experimente zum maschinellen Lernen schnell erkunden und auswerten, viele Durchläufe analysieren und die optimalen Hyperparametervariationen oder -modelle ermitteln, die zu den gewünschten Ergebnissen führen. Es ist ein effektives Werkzeug zur Überwachung, Planung und Analyse des maschinellen Lernworkflows.