Freigeben über


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 Externer Link.

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 Nach rechts zeigender Pfeil.

Sie greifen auch auf Artefakte zu, die von einer Ausführung auf diesem Bildschirm gespeichert wurden.

Ausführung anzeigen

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.

Codeschnipsel vorhersagen

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 Symbol der Notebook-Version 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.

  1. Klicken Sie auf der Ausführungsseite auf Symbol „Tag“, wenn noch nicht geöffnet. Die Tabelle „Tags“ wird angezeigt.

    Tagtabelle

  2. Klicken Sie in die Felder Name und Wert, und geben Sie den Schlüssel und Wert für Ihr Tag ein.

  3. Klicken Sie auf Hinzufügen.

    Tag 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.

Tagaktionen

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:

Ausführungsdialog reproduzieren

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 das Symbol mit den drei Punkten 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 oder MAX 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.

Filtern von Ausführungen

Herunterladen von Ausführungen

  1. Wählen Sie mindestens eine Ausführung aus.

  2. 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:

  1. Wählen Sie im Experiment mindestens eine Ausführung aus, indem Sie auf das Kontrollkästchen links neben der jeweiligen Ausführung klicken.
  2. Klicken Sie auf Löschen.
  3. 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.
  4. 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ür max_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.

  1. Wählen Sie auf der Seite Experiment im Feld Status die Option Gelöscht aus, um gelöschte Ausführungen anzuzeigen.
  2. Wählen Sie mindestens eine Ausführung aus, indem Sie auf das Kontrollkästchen links neben der jeweiligen Ausführung klicken.
  3. Klicken Sie auf Wiederherstellen.
  4. 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:

  1. Wählen Sie den Zeichnungstyp (Parallelkoordinatendiagramm, Punktdiagramm oder Konturdiagramm) aus.
    1. 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.

      Visualisierung der Ausführungsseite vergleichen

    2. 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 Schaltfläche „Nur Diff anzeigen“ umschalten.

Tabellen der Ausführungsseite vergleichen

Vergleichen von Läufen aus einem einzelnen Experiment

  1. 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.
  2. Klicken Sie auf Vergleichen. Der Bildschirm „Vergleichen von <N> Ausführungen“ wird angezeigt.

Vergleichen Sie Läufe aus mehreren Experimenten

  1. 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.
  2. 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.
  3. 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.
  4. 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.