Verwalten von Trainingscode mit MLflow-Ausführungen
In diesem Artikel werden MLflow-Ausführungen für die Verwaltung von Machine Learning-Trainings beschrieben. Er enthält auch Anleitungen zum Verwalten und Vergleichen von Ausführungen über Experimente hinweg.
Eine MLflow-Ausführung entspricht einer einzelnen Ausführung des Modellcodes. In jeder Ausführungsaufzeichnung werden die folgenden Informationen aufgezeichnet:
- Quelle: Name des Notebooks, das die Ausführung gestartet hat, oder der Projektname und Einstiegspunkt für die Ausführung.
- Version: Git-Commithash, wenn Notebook in einem Databricks Git-Ordner gespeichert oder über ein MLflow Project ausgeführt wird. Andernfalls Überarbeitung des Notebook.
- Start- und Endzeit: Start- und Endzeit der Ausführung.
- Parameter: Als Schlüssel-Wert-Paare gespeicherte Modellparameter. Sowohl Schlüssel als auch Werte sind Zeichenfolgen.
- Metriken: Modellauswertungsmetriken, die als Schlüssel-Wert-Paare gespeichert werden. Der Wert ist numerisch. Jede Metrik kann im Laufe der Ausführung aktualisiert werden (z. B. um nachzuverfolgen, wie die Verlustfunktion Ihres Modells konvergiert wird), und MLflow zeichnet dies auf und ermöglicht Ihnen, den Verlauf der Metrik zu visualisieren.
- Tags: Ausführungsmetadaten, die als Schlüssel-Wert-Paare gespeichert sind. Sie können Tags während und nach Abschluss einer Ausführung aktualisieren. Sowohl Schlüssel als auch Werte sind Zeichenfolgen.
- Artefakte: Ausgabedateien in einem beliebigen Format. Beispielsweise können Sie Bilder, Modelle (z. B. ein pickled scikit-learn-Modell) und Datendateien (z. B. eine Parquet-Datei) als Artefakt aufzeichnen.
Alle MLflow-Ausführungen werden im aktiven Experiment protokolliert. Wenn Sie ein Experiment nicht explizit als aktives Experiment festgelegt haben, werden Ausführungen im Notebookexperiment protokolliert.
Ansichtsausführungen
Sie können entweder über die übergeordnete Seite „Experiment“ oder direkt über das Notebook, das die Ausführung erstellt hat, auf eine Ausführung zugreifen.
Klicken Sie auf der Seite „Experiment“ in der Tabelle „Ausführungen“ auf die Startzeit einer Ausführung.
Klicken Sie im Notebook neben dem Datum und der Uhrzeit der Ausführung in der Seitenleiste „Experimentausführungen“ auf .
Auf dem Ausführungsbildschirm werden die für die Ausführung verwendeten Parameter, die Metriken, die sich aus der Ausführung ergeben, und alle Tags oder Notizen angezeigt. Um Notizen, Parameter, Metriken oder Tags für diese Ausführung anzuzeigen, klicken Sie links neben der Bezeichnung auf .
Sie greifen auch auf Artefakte zu, die von einer Ausführung auf diesem Bildschirm gespeichert wurden.
Codeausschnitte für die Vorhersage
Wenn Sie ein Modell von einer Ausführung protokollieren, wird das Modell im Abschnitt Artefakte dieser Seite angezeigt. Um Codeausschnitte anzuzeigen, die veranschaulichen, wie das Modell geladen und verwendet wird, um Vorhersagen für Spark- und Pandas-Datenrahmen zu treffen, klicken Sie auf den Modellnamen.
Anzeigen des Notebook- oder Git-Projekts, das für eine Ausführung verwendet wird
So zeigen Sie die Version des Notebooks an, das eine Ausführung erstellt hat:
- Klicken Sie auf der Seite „Experiment“ auf den Link in der Spalte Quelle.
- Klicken Sie auf der Seite „Ausführung“ auf den Link neben Quelle.
- Klicken Sie im Notebook in der Seitenleiste „Experimentausführungen“ auf das Symbol Notebook im Feld für diese Experimentausführung.
Die Version des Notebooks, das der Ausführung zugeordnet ist, wird im Hauptfenster mit einer Hervorhebungsleiste angezeigt, die das Datum und die Uhrzeit der Ausführung anzeigt.
Wenn die Ausführung remote über ein Git-Projekt gestartet wurde, klicken Sie auf den Link im Feld Git-Commit, um die spezifische Version des Projekts zu öffnen, das bei der Ausführung verwendet wurde. Der Link im Feld Quelle öffnet die Hauptverzweigung des Git-Projekts, das bei der Ausführung verwendet wurde.
Hinzufügen eines Tags zu einer Ausführung
Tags sind Schlüssel-Wert-Paare, die Sie erstellen und später verwenden können, um nach Ausführungen zu suchen.
Klicken Sie auf der Ausführungsseite auf , wenn noch nicht geöffnet. Die Tabelle „Tags“ wird angezeigt.
Klicken Sie in die Felder Name und Wert, und geben Sie den Schlüssel und Wert für Ihr Tag ein.
Klicken Sie auf Hinzufügen.
Bearbeiten oder Löschen eines Tags für eine Ausführung
Um ein vorhandenes Tag zu bearbeiten oder zu löschen, verwenden Sie die Symbole in der Spalte Aktionen.
Reproduzieren der Softwareumgebung einer Ausführung
Sie können die genaue Softwareumgebung für die Ausführung reproduzieren, indem Sie auf Ausführung reproduzieren klicken. Das folgende Dialogfeld wird angezeigt:
Wenn Sie die Standardeinstellungen verwenden und auf Bestätigen klicken:
- Das Notebook wird daraufhin an dem im Dialogfeld angezeigten Speicherort geklont.
- Wenn der ursprüngliche Cluster noch vorhanden ist, wird das geklonte Notebook an den ursprünglichen Cluster angefügt, und der Cluster wird gestartet.
- Wenn der ursprüngliche Cluster nicht mehr vorhanden ist, wird ein neuer Cluster mit der gleichen Konfiguration, einschließlich aller installierten Bibliotheken, erstellt und gestartet. Das Notebook wird an den neuen Cluster angefügt.
Sie können einen anderen Speicherort für das geklonte Notebook auswählen und die Clusterkonfiguration und die installierten Bibliotheken überprüfen:
- Klicken Sie auf Ordner bearbeiten, um einen anderen Ordner zum Speichern des geklonten Notebooks auszuwählen.
- Klicken Sie auf Spezifikation anzeigen, um die Clusterspezifikation anzuzeigen. Deaktivieren Sie diese Option, um nur das Notebook und nicht den Cluster zu klonen.
- Klicken Sie auf Bibliotheken anzeigen, um die im ursprünglichen Cluster installierten Bibliotheken anzuzeigen. Wenn es Ihnen nicht wichtig ist, die gleichen Bibliotheken wie auf dem ursprünglichen Cluster zu installieren, deaktivieren Sie diese Option.
Verwalten von Ausführungen
Umbenennen von Ausführungen
Um eine Ausführung umzubenennen, klicken Sie auf in der oberen rechten Ecke der Seite „Ausführung“, und wählen Sie Umbenennen aus.
Filtern von Ausführungen
Sie können basierend auf Parameter- oder Metrikwerten nach Ausführungen suchen. Sie können auch basierend auf Tags nach Ausführungen suchen.
Um nach Ausführungen zu suchen, die mit einem Ausdruck übereinstimmen, der Parameter- und Metrikwerte enthält, geben Sie eine Abfrage in das Suchfeld ein, und klicken Sie auf Suchen. Einige Beispiele für die Abfragesyntax:
metrics.r2 > 0.3
params.elasticNetParam = 0.5
params.elasticNetParam = 0.5 AND metrics.avg_areaUnderROC > 0.3
MIN(metrics.rmse) <= 1
MAX(metrics.memUsage) > 0.9
LATEST(metrics.memUsage) = 0 AND MIN(metrics.rmse) <= 1
Standardmäßig werden Metrikwerte auf Grundlage des zuletzt protokollierten Werts gefiltert. Mit
MIN
oderMAX
können Sie basierend auf den minimalen bzw. maximalen Metrikwerten nach Ausführungen suchen. Minimale und maximale Metrikwerte gibt es nur bei den nach August 2024 protokollierten Ausführungen.Um mittels Tag nach Ausführungen zu suchen, geben Sie Tags im folgenden Format ein:
tags.<key>="<value>"
. Zeichenfolgenwerte müssen wie gezeigt in Anführungszeichen eingeschlossen werden.tags.estimator_name="RandomForestRegressor"
tags.color="blue" AND tags.size=5
Schlüssel und Werte können Leerzeichen enthalten. Wenn der Schlüssel Leerzeichen enthält, müssen Sie ihn wie gezeigt in Backticks einschließen.
tags.`my custom tag` = "my value"
Sie können Ausführungen auch nach ihrem Status (Aktiv oder Gelöscht) und danach filtern, ob der Ausführung eine Modellversion zugeordnet ist. Treffen Sie dazu Ihre Auswahl aus den Dropdownmenüs Status bzw. Erstellt um.
Herunterladen von Ausführungen
Wählen Sie mindestens eine Ausführung aus.
Klicken Sie auf CSV herunterladen. Eine CSV-Datei mit den folgenden Feldern wird heruntergeladen:
Run ID,Name,Source Type,Source Name,User,Status,<parameter1>,<parameter2>,...,<metric1>,<metric2>,...
Löschen von Ausführungen
Sie können Ausführungen mithilfe der Databricks Mosaik AI-Benutzeroberfläche mit den folgenden Schritten löschen:
- Wählen Sie im Experiment mindestens eine Ausführung aus, indem Sie auf das Kontrollkästchen links neben der jeweiligen Ausführung klicken.
- Klicken Sie auf Löschen.
- Wenn es sich bei der Ausführung um eine übergeordnete Ausführung handelt, entscheiden Sie, ob Sie auch Nachfolgerausführungen löschen möchten. Diese Option ist standardmäßig ausgewählt.
- Klicken Sie auf Löschen, um den Vorgang zu bestätigen. Gelöschte Ausführungen werden 30 Tage lang gespeichert. Wählen Sie zum Anzeigen gelöschter Ausführungen im Feld „Status“ die Option Gelöscht aus.
Ausführen des Massenlöschvorgangs für Ausführungen basierend auf der Erstellungszeit
Sie können Python verwenden, um Ausführungen eines Experiments, die vor oder bei einem UNIX-Zeitstempel erstellt wurden, in Massen zu löschen.
Mit Databricks Runtime 14.1 oder höher können Sie die mlflow.delete_runs
-API aufrufen, um Ausführungen zu löschen und die Anzahl der gelöschten Ausführungen zurückzugeben.
Im Folgenden sind die mlflow.delete_runs
-Parameter aufgeführt:
experiment_id
: Dies ist die ID des Experiments, das die zu löschenden Ausführungen enthält.max_timestamp_millis
: Dies ist der maximale Erstellungszeitstempel in Millisekunden seit der UNIX-Zeit zum Löschen von Ausführungen. Es werden nur Ausführungen gelöscht, die vor oder zu diesem Zeitstempel erstellt wurden.max_runs
: Optional. Eine positive ganze Zahl, die die maximale Anzahl der zu löschenden Ausführungen angibt. Der maximal zulässige Wert für max_runs beträgt 10000. Ohne Angabe wird fürmax_runs
standardmäßig 10000 verwendet.
import mlflow
# Replace <experiment_id>, <max_timestamp_ms>, and <max_runs> with your values.
runs_deleted = mlflow.delete_runs(
experiment_id=<experiment_id>,
max_timestamp_millis=<max_timestamp_ms>,
max_runs=<max_runs>
)
# Example:
runs_deleted = mlflow.delete_runs(
experiment_id="4183847697906956",
max_timestamp_millis=1711990504000,
max_runs=10
)
Mit Databricks Runtime 13.3 LTS oder einer früheren Version können Sie den folgenden Clientcode in einem Azure Databricks-Notebook ausführen.
from typing import Optional
def delete_runs(experiment_id: str,
max_timestamp_millis: int,
max_runs: Optional[int] = None) -> int:
"""
Bulk delete runs in an experiment that were created prior to or at the specified timestamp.
Deletes at most max_runs per request.
:param experiment_id: The ID of the experiment containing the runs to delete.
:param max_timestamp_millis: The maximum creation timestamp in milliseconds
since the UNIX epoch for deleting runs. Only runs
created prior to or at this timestamp are deleted.
:param max_runs: Optional. A positive integer indicating the maximum number
of runs to delete. The maximum allowed value for max_runs
is 10000. If not specified, max_runs defaults to 10000.
:return: The number of runs deleted.
"""
from mlflow.utils.databricks_utils import get_databricks_host_creds
from mlflow.utils.request_utils import augmented_raise_for_status
from mlflow.utils.rest_utils import http_request
json_body = {"experiment_id": experiment_id, "max_timestamp_millis": max_timestamp_millis}
if max_runs is not None:
json_body["max_runs"] = max_runs
response = http_request(
host_creds=get_databricks_host_creds(),
endpoint="/api/2.0/mlflow/databricks/runs/delete-runs",
method="POST",
json=json_body,
)
augmented_raise_for_status(response)
return response.json()["runs_deleted"]
In der API-Dokumentation zur Azure Databricks Experimente-API finden Sie Parameter und Rückgabewertspezifikationen zum Löschen von Ausführung basierend auf der Erstellungszeit.
Wiederherstellen von Ausführungen
Sie können zuvor gelöschte Ausführungen mithilfe der Databricks Mosaik AI-Benutzeroberfläche wiederherstellen.
- Wählen Sie auf der Seite Experiment im Feld Status die Option Gelöscht aus, um gelöschte Ausführungen anzuzeigen.
- Wählen Sie mindestens eine Ausführung aus, indem Sie auf das Kontrollkästchen links neben der jeweiligen Ausführung klicken.
- Klicken Sie auf Wiederherstellen.
- Klicken Sie zum Bestätigen auf Wiederherstellen. Um die wiederhergestellten Ausführung anzuzeigen, wählen Sie im Feld „Status“ die Option Aktiv aus.
Ausführungen basierend auf der Löschzeit in Massen wiederherstellen
Sie können Python auch verwenden, um Ausführungen eines Experiments, die zu oder nach einem UNIX-Zeitstempel gelöscht wurden, in Massen wiederherzustellen.
Mit Databricks Runtime 14.1 oder höher können Sie die mlflow.restore_runs
-API aufrufen, um Ausführungen wiederherzustellen und die Anzahl der wiederhergestellten Ausführungen zurückzugeben.
Im Folgenden sind die mlflow.restore_runs
-Parameter aufgeführt:
experiment_id
: Dies ist die ID des Experiments, das die wiederherzustellenden Ausführungen enthält.min_timestamp_millis
: Dies ist der minimale Löschzeitstempel in Millisekunden seit der UNIX-Zeit für die Wiederherstellung von Ausführungen. Nur Ausführungen, die zu oder nach diesem Zeitstempel gelöscht werden, werden wiederhergestellt.max_runs
: Optional. Eine positive ganze Zahl, die die maximale Anzahl der zu wiederherzustellenden Ausführungen angibt. Der maximal zulässige Wert für max_runs beträgt 10000. Ohne Angabe liegt der Wert für max_runs standardmäßig bei 10000.
import mlflow
# Replace <experiment_id>, <min_timestamp_ms>, and <max_runs> with your values.
runs_restored = mlflow.restore_runs(
experiment_id=<experiment_id>,
min_timestamp_millis=<min_timestamp_ms>,
max_runs=<max_runs>
)
# Example:
runs_restored = mlflow.restore_runs(
experiment_id="4183847697906956",
min_timestamp_millis=1711990504000,
max_runs=10
)
Mit Databricks Runtime 13.3 LTS oder einer früheren Version können Sie den folgenden Clientcode in einem Azure Databricks-Notebook ausführen.
from typing import Optional
def restore_runs(experiment_id: str,
min_timestamp_millis: int,
max_runs: Optional[int] = None) -> int:
"""
Bulk restore runs in an experiment that were deleted at or after the specified timestamp.
Restores at most max_runs per request.
:param experiment_id: The ID of the experiment containing the runs to restore.
:param min_timestamp_millis: The minimum deletion timestamp in milliseconds
since the UNIX epoch for restoring runs. Only runs
deleted at or after this timestamp are restored.
:param max_runs: Optional. A positive integer indicating the maximum number
of runs to restore. The maximum allowed value for max_runs
is 10000. If not specified, max_runs defaults to 10000.
:return: The number of runs restored.
"""
from mlflow.utils.databricks_utils import get_databricks_host_creds
from mlflow.utils.request_utils import augmented_raise_for_status
from mlflow.utils.rest_utils import http_request
json_body = {"experiment_id": experiment_id, "min_timestamp_millis": min_timestamp_millis}
if max_runs is not None:
json_body["max_runs"] = max_runs
response = http_request(
host_creds=get_databricks_host_creds(),
endpoint="/api/2.0/mlflow/databricks/runs/restore-runs",
method="POST",
json=json_body,
)
augmented_raise_for_status(response)
return response.json()["runs_restored"]
In der API-Dokumentation zur Azure Databricks Experimente-API finden Sie Parameter und Rückgabewertspezifikationen zum Wiederherstellen von Ausführung basierend auf der Löschzeit.
Vergleichen von Ausführungen
Sie können Läufe aus einem einzelnen Experiment oder aus mehreren Experimenten vergleichen. Auf der Seite Läufe vergleichenwerden Informationen zu den ausgewählten Ausführungen in Grafik- und Tabellarformaten angezeigt. Sie können auch Visualisierungen von Ausführungsergebnissen und Tabellen mit Ausführungsinformationen, Ausführungsparametern und Metriken erstellen.
Zum Erstellen einer Visualisierung:
- Wählen Sie den Zeichnungstyp (Parallelkoordinatendiagramm, Punktdiagramm oder Konturdiagramm) aus.
Wählen Sie für ein Parallelkoordinatendiagramm die Parameter und Metriken aus, die gezeichnet werden sollen. Von hier aus können Sie Beziehungen zwischen den ausgewählten Parametern und Metriken identifizieren, wodurch Sie den Hyperparameter-Optimierungsbereich für Ihre Modelle besser definieren können.
Wählen Sie für ein Punktdiagramm oder eine Konturdiagramm den Parameter oder die Metrik aus, die auf jeder Achse angezeigt werden soll.
Die Tabellen Parameterund Metrikenzeigen die Ausführungsparameter und Metriken aller ausgewählten Ausführungen an. Die Spalten in diesen Tabellen werden durch die tabelle Ausführen-Details unmittelbar oben identifiziert. Der Einfachheit halber können Sie Parameter und Metriken, die in allen ausgewählten Ausführungen identisch sind, ausblenden, indem Sie die Option umschalten.
Vergleichen von Läufen aus einem einzelnen Experiment
- Wählen Sie auf der Experimentseite zwei oder mehr Ausführungsläufe aus, indem Sie links neben der Ausführung auf das Kontrollkästchen klicken, oder markieren Sie alle Ausführungen, indem Sie das Kontrollkästchen oben in der Spalte aktivieren.
- Klicken Sie auf Vergleichen. Der Bildschirm „Vergleichen von
<N>
Ausführungen“ wird angezeigt.
Vergleichen Sie Läufe aus mehreren Experimenten
- Wählen Sie auf der Seite Experimente die Experimente aus, die Sie vergleichen möchten, indem Sie links neben dem Experimentnamen auf das Feld klicken.
- Klicken Sie auf Vergleichen (n) (n ist die Anzahl der ausgewählten Experimente). Ein Bildschirm wird angezeigt, auf dem alle Läufe aus den ausgewählten Experimenten angezeigt werden.
- Wählen Sie zwei oder mehr Ausführungsläufe aus, indem Sie links neben der Ausführung auf das Kontrollkästchen klicken, oder markieren Sie alle Ausführungen, indem Sie das Kontrollkästchen oben in der Spalte aktivieren.
- Klicken Sie auf Vergleichen. Der Bildschirm „Vergleichen von
<N>
Ausführungen“ wird angezeigt.
Kopieren von Ausführungen zwischen Arbeitsbereichen
Zum Importieren oder Exportieren von MLflow-Ausführungen in oder aus Ihrem Databricks-Arbeitsbereich können Sie das communitygesteuerte Open Source Projekt MLflow Export-Import verwenden.