Hantera träningskod med MLflow-körningar

I den här artikeln beskrivs MLflow-körningar för hantering av maskininlärningsträning. Den innehåller också vägledning om hur du hanterar och jämför körningar mellan experiment.

En MLflow-körning motsvarar en enda körning av modellkod. Varje körning registrerar följande information:

  • Källa: Namnet på anteckningsboken som startade körningen eller projektnamnet och startpunkten för körningen.
    • Version: Git commit-hash om notebook-filen lagras i en Databricks Git-mapp eller körs från ett MLflow-projekt. Annars notebook-revision.
    • Start- och sluttid: Start- och sluttid för körningen.
    • Parametrar: Modellparametrar sparas som nyckel/värde-par. Både nycklar och värden är strängar.
    • Mått: Modellutvärderingsmått som sparats som nyckel/värde-par. Värdet är numeriskt. Varje mått kan uppdateras under körningen (till exempel för att spåra hur modellens förlustfunktion konvergerar) och MLflow-poster och låter dig visualisera måttets historik.
    • Taggar: Kör metadata som sparats som nyckel/värde-par. Du kan uppdatera taggar under och efter att en körning har slutförts. Både nycklar och värden är strängar.
    • Artefakter: Utdatafiler i valfritt format. Du kan till exempel spela in bilder, modeller (till exempel en inlagd scikit-learn-modell) och datafiler (till exempel en Parquet-fil) som en artefakt.

Alla MLflow-körningar loggas till det aktiva experimentet. Om du inte uttryckligen har angett ett experiment som det aktiva experimentet loggas körningar till notebook-experimentet.

Visa körningar

Du kan komma åt en körning antingen från dess överordnade experimentsida eller direkt från notebook-filen som skapade körningen.

Klicka på starttiden för en körning i tabellen körningar på experimentsidan.

I anteckningsboken klickar du Extern länk bredvid datum och tid för körningen i sidofältet Experimentkörningar.

körningsskärmen visas de parametrar som används för körningen, måtten som är resultatet av körningen och eventuella taggar eller anteckningar. Om du vill visa anteckningar, parametrar, mått eller taggar för den här körningen klickar du högerpil till vänster om etiketten.

Du får också åtkomst till artefakter som sparats från en körning på den här skärmen.

Visa körning

Kodfragment för förutsägelse

Om du loggar en modell från en körning visas modellen i avsnittet Artefakter på den här sidan. Om du vill visa kodfragment som illustrerar hur du läser in och använder modellen för att göra förutsägelser på Spark och Pandas DataFrames klickar du på modellnamnet.

förutsäga kodfragment

Visa anteckningsboken eller Git-projektet som används för en körning

Så här visar du versionen av notebook-filen som skapade en körning:

  • På experimentsidan klickar du på länken i kolumnen Källa .
  • På körningssidan klickar du på länken bredvid Källa.
  • I sidofältet Experimentkörningar i anteckningsboken klickar du på anteckningsboksikonen Ikon för notebook-version i rutan för experimentkörningen.

Den version av notebook-filen som är associerad med körningen visas i huvudfönstret med ett markeringsfält som visar datum och tid för körningen.

Om körningen startades via fjärranslutning från ett Git-projekt klickar du på länken i fältet Git Commit för att öppna den specifika versionen av projektet som användes i körningen. Länken i fältet Källa öppnar huvudgrenen för Git-projektet som användes i körningen.

Lägga till en tagg i en körning

Taggar är nyckel/värde-par som du kan skapa och använda senare för att söka efter körningar.

  1. På körningssidan klickar du på Taggikon om den inte redan är öppen. Tabellen taggar visas.

    taggtabell

  2. Klicka i fälten Namn och Värde och ange nyckeln och värdet för taggen.

  3. Klicka på Lägg till.

    lägg till tagg

Redigera eller ta bort en tagg för en körning

Om du vill redigera eller ta bort en befintlig tagg använder du ikonerna i kolumnen Åtgärder .

tagga åtgärder

Återskapa programvarumiljön för en körning

Du kan återskapa den exakta programvarumiljön för körningen genom att klicka på Återskapa körning. Följande dialogruta visas:

Dialogrutan Återskapa körning

När du klickar på Bekräfta med standardinställningarna:

  • Anteckningsboken klonas till den plats som visas i dialogrutan.
  • Om det ursprungliga klustret fortfarande finns är den klonade notebook-filen kopplad till det ursprungliga klustret och klustret startas.
  • Om det ursprungliga klustret inte längre finns skapas och startas ett nytt kluster med samma konfiguration, inklusive alla installerade bibliotek. Anteckningsboken är kopplad till det nya klustret.

Du kan välja en annan plats för den klonade notebook-filen och granska klusterkonfigurationen och installerade bibliotek:

  • Om du vill välja en annan mapp för att spara den klonade anteckningsboken klickar du på Redigera mapp.
  • Om du vill se klusterspecifikationen klickar du på Visa specifikation. Om du bara vill klona notebook-filen och inte klustret avmarkerar du det här alternativet.
  • Om du vill se biblioteken som är installerade i det ursprungliga klustret klickar du på Visa bibliotek. Om du inte bryr dig om att installera samma bibliotek som i det ursprungliga klustret avmarkerar du det här alternativet.

Hantera körningar

Byt namn på körning

Om du vill byta namn på en körning klickar du treknappsikon i det övre högra hörnet på körningssidan och väljer Byt namn.

Filterkörningar

Du kan söka efter körningar baserat på parameter- eller måttvärden. Du kan också söka efter körningar efter tagg.

  • Om du vill söka efter körningar som matchar ett uttryck som innehåller parameter- och måttvärden anger du en fråga i sökfältet och klickar på Sök. Några exempel på frågesyntax är:

    metrics.r2 > 0.3

    params.elasticNetParam = 0.5

    params.elasticNetParam = 0.5 AND metrics.avg_areaUnderROC > 0.3

  • Om du vill söka efter körningar efter tagg anger du taggar i formatet: tags.<key>="<value>". Strängvärden måste omges av citattecken som visas.

    tags.estimator_name="RandomForestRegressor"

    tags.color="blue" AND tags.size=5

    Både nycklar och värden kan innehålla blanksteg. Om nyckeln innehåller blanksteg måste du omsluta den i backticks som du ser.

    tags.`my custom tag` = "my value"
    

Du kan också filtrera körningar baserat på deras tillstånd (aktiv eller borttagen) och baserat på om en modellversion är associerad med körningen. Gör detta genom att göra dina val från listrutorna Tillstånd respektive Tid skapad .

Filterkörningar

Nedladdningskörningar

  1. Välj en eller flera körningar.

  2. Klicka på Ladda ned CSV. En CSV-fil som innehåller följande fält laddas ned:

    Run ID,Name,Source Type,Source Name,User,Status,<parameter1>,<parameter2>,...,<metric1>,<metric2>,...
    

Ta bort körningar

Du kan ta bort körningar med hjälp av Databricks Machine Learning-användargränssnittet med följande steg:

  1. I experimentet väljer du en eller flera körningar genom att klicka i kryssrutan till vänster om körningen.
  2. Klicka på Ta bort.
  3. Om körningen är en överordnad körning bestämmer du om du också vill ta bort underordnade körningar. Det här alternativet är markerat som standard.
  4. Bekräfta genom att klicka på Ta bort . Borttagna körningar sparas i 30 dagar. Om du vill visa borttagna körningar väljer du Borttaget i fältet Tillstånd.

Massborttagningskörningar baserat på skapandetiden

Du kan använda Python för att massradera körningar av ett experiment som skapades före eller vid en UNIX-tidsstämpel. Med Databricks Runtime 14.1 eller senare kan du anropa API:et mlflow.delete_runs för att ta bort körningar och returnera antalet borttagna körningar.

Följande är parametrarna mlflow.delete_runs :

  • experiment_id: ID:t för experimentet som innehåller de körningar som ska tas bort.
  • max_timestamp_millis: Den maximala tidsstämpeln för skapande i millisekunder sedan UNIX-epoken för att ta bort körningar. Endast körningar som skapats före eller vid den här tidsstämpeln tas bort.
  • max_runs:Valfri. Ett positivt heltal som anger det maximala antalet körningar som ska tas bort. Det högsta tillåtna värdet för max_runs är 10000. Om det inte anges max_runs är standardvärdet 10000.
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
)

Med Databricks Runtime 13.3 LTS eller tidigare kan du köra följande klientkod i en Azure Databricks Notebook.

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"]

Se dokumentationen för API:et för Azure Databricks-experiment för parametrar och returnera värdespecifikationer för att ta bort körningar baserat på skapandetiden.

Återställningskörningar

Du kan återställa tidigare borttagna körningar med hjälp av Användargränssnittet för Databricks Machine Learning.

  1. På sidan Experiment väljer du Borttaget i fältet Tillstånd för att visa borttagna körningar.
  2. Markera en eller flera körningar genom att klicka i kryssrutan till vänster om körningen.
  3. Klicka på Återställ.
  4. Bekräfta genom att klicka på Återställ . Om du vill visa de återställde körningarna väljer du Aktiv i fältet Tillstånd.

Massåterställning körs baserat på borttagningstiden

Du kan också använda Python för att massåterställningskörningar av ett experiment som togs bort vid eller efter en UNIX-tidsstämpel. Med Databricks Runtime 14.1 eller senare kan du anropa API:et mlflow.restore_runs för att återställa körningar och returnera antalet återställda körningar.

Följande är parametrarna mlflow.restore_runs :

  • experiment_id: ID:t för experimentet som innehåller de körningar som ska återställas.
  • min_timestamp_millis: Den minsta tidsstämpeln för borttagning i millisekunder sedan UNIX-epoken för återställning av körningar. Endast körningar som tas bort vid eller efter att den här tidsstämpeln har återställts.
  • max_runs:Valfri. Ett positivt heltal som anger det maximala antalet körningar som ska återställas. Det högsta tillåtna värdet för max_runs är 10000. Om det inte anges max_runs standardvärdet 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
)

Med Databricks Runtime 13.3 LTS eller tidigare kan du köra följande klientkod i en Azure Databricks Notebook.

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"]

Se dokumentationen för API:et för Azure Databricks-experiment för parametrar och returvärdespecifikationer för återställning av körningar baserat på borttagningstid.

Jämföra körningar

Du kan jämföra körningar från ett enda experiment eller från flera experiment. Sidan Jämföra körningar visar information om de valda körningarna i grafiskt och tabellformat. Du kan också skapa visualiseringar av körningsresultat och tabeller med körningsinformation, körningsparametrar och mått.

Så här skapar du en visualisering:

  1. Välj ritningstyp (parallella koordinater, punktdiagram eller konturdiagram).
    1. För ett parallellkoordinatdiagram väljer du de parametrar och mått som ska ritas. Härifrån kan du identifiera relationer mellan de valda parametrarna och måtten, vilket hjälper dig att bättre definiera hyperparameterns justeringsutrymme för dina modeller.

      jämföra sidvisualisering för körningar

    2. För ett punktdiagram eller konturdiagram väljer du parametern eller måttet som ska visas på varje axel.

Tabellerna Parametrar och Mått visar körningsparametrar och mått från alla valda körningar. Kolumnerna i dessa tabeller identifieras av tabellen Kör information direkt ovan. För enkelhetens skull kan du dölja parametrar och mått som är identiska i alla valda körningar genom att växla Visa endast diff-knapp.

jämföra sidtabeller för körningar

Jämföra körningar från ett enda experiment

  1. På experimentsidan markerar du två eller flera körningar genom att klicka i kryssrutan till vänster om körningen eller markera alla körningar genom att markera kryssrutan överst i kolumnen.
  2. Klicka på Jämför. Skärmen Jämföra <N> körningar visas.

Jämföra körningar från flera experiment

  1. På experimentsidan väljer du de experiment som du vill jämföra genom att klicka i rutan till vänster om experimentnamnet.
  2. Klicka på Jämför (n) (n är antalet experiment som du har valt). En skärm visas som visar alla körningar från experimenten som du har valt.
  3. Markera två eller flera körningar genom att klicka i kryssrutan till vänster om körningen eller markera alla körningar genom att markera kryssrutan överst i kolumnen.
  4. Klicka på Jämför. Skärmen Jämföra <N> körningar visas.

Kopiera körningar mellan arbetsytor

Om du vill importera eller exportera MLflow-körningar till eller från databricks-arbetsytan kan du använda det communitydrivna öppen källkod projektet MLflow Export-Import.