Správa trénovacího kódu pomocí spuštění MLflow

Tento článek popisuje spuštění MLflow pro správu trénování strojového učení. Obsahuje také pokyny ke správě a porovnání spuštění napříč experimenty.

Spuštění MLflow odpovídá jedinému spuštění kódu modelu. Každé spuštění zaznamenává následující informace:

  • Zdroj: Název poznámkového bloku, který spustil spuštění nebo název projektu a vstupní bod spuštění.
    • Verze: Hodnota hash potvrzení Gitu, pokud je poznámkový blok uložený ve složce Git Databricks nebo spuštěný z projektu MLflow. V opačném případě revize poznámkového bloku.
    • Počáteční a koncový čas: Počáteční a koncový čas spuštění
    • Parametry: Parametry modelu uložené jako páry klíč-hodnota Klíče i hodnoty jsou řetězce.
    • Metriky: Metriky vyhodnocení modelu uložené jako páry klíč-hodnota Hodnota je číselná. Každou metriku je možné aktualizovat v průběhu běhu (například ke sledování toho, jak se funkce ztráty modelu konverguje) a záznamy MLflow a umožňuje vizualizovat historii metriky.
    • Značky: Spusťte metadata uložená jako páry klíč-hodnota. Značky můžete aktualizovat během a po dokončení spuštění. Klíče i hodnoty jsou řetězce.
    • Artefakty: Výstupní soubory v libovolném formátu Můžete například zaznamenávat obrázky, modely (například model pickled scikit-learn) a datové soubory (například soubor Parquet) jako artefakt.

Všechna spuštění MLflow se protokolují do aktivního experimentu. Pokud jste experiment explicitně nenastavili jako aktivní experiment, spuštění se do experimentu poznámkového bloku zaprotokolují.

Zobrazení spuštění

Ke spuštění můžete přistupovat buď z nadřazené stránky experimentu, nebo přímo z poznámkového bloku, který spuštění vytvořil.

Na stránce experimentu klikněte v tabulce spuštění na počáteční čas spuštění.

V poznámkovém bloku klikněte na bočním panelu Spuštění experimentu na Externí odkaz datum a čas spuštění.

Na obrazovce spuštění se zobrazí parametry použité pro spuštění, metriky, které jsou výsledkem spuštění, a všechny značky nebo poznámky. Pokud chcete pro toto spuštění zobrazit poznámky, parametry, metriky nebo značky , klikněte vlevo šipka směřující doprava od popisku.

K artefaktům uloženým ze spuštění na této obrazovce se dostanete také.

Zobrazení spuštění

Fragmenty kódu pro predikci

Pokud protokolujete model ze spuštění, zobrazí se model v části Artefakty na této stránce. Pokud chcete zobrazit fragmenty kódu, které ilustrují načtení a použití modelu k vytváření předpovědí v datových rámcích Spark a pandas, klikněte na název modelu.

predikce fragmentů kódu

Zobrazení poznámkového bloku nebo projektu Gitu použitého ke spuštění

Zobrazení verze poznámkového bloku, který vytvořil spuštění:

  • Na stránce experimentu klikněte na odkaz ve sloupci Zdroj .
  • Na stránce spuštění klikněte na odkaz vedle položky Zdroj.
  • V poznámkovém bloku klikněte na bočním panelu Spuštění experimentu na ikonu Ikona verze poznámkového bloku poznámkového bloku v poli pro spuštění experimentu.

Verze poznámkového bloku přidruženého ke spuštění se zobrazí v hlavním okně s panelem zvýraznění s datem a časem spuštění.

Pokud se spuštění spustilo vzdáleně z projektu Git, kliknutím na odkaz v poli Potvrzení Gitu otevřete konkrétní verzi projektu použitého ve spuštění. Odkaz v poli Zdroj otevře hlavní větev projektu Git použitého při spuštění.

Přidání značky ke spuštění

Značky jsou páry klíč-hodnota, které můžete vytvořit a použít později k hledání spuštění.

  1. Na stránce spuštění klikněte, Ikona značky pokud ještě není otevřený. Zobrazí se tabulka značek.

    tabulka značek

  2. Klikněte do polí Název a Hodnota a zadejte klíč a hodnotu značky.

  3. Klikněte na tlačítko Přidat.

    přidání značky

Úprava nebo odstranění značky pro spuštění

Pokud chcete upravit nebo odstranit existující značku, použijte ikony ve sloupci Akce .

akce značek

Reprodukujte softwarové prostředí spuštění.

Přesné softwarové prostředí pro spuštění můžete reprodukovat kliknutím na příkaz Reprodukovat spustit. Zobrazí se následující dialogové okno:

Dialogové okno Reprodukovat spuštění

Při použití výchozího nastavení klepněte na tlačítko Potvrdit:

  • Poznámkový blok se naklonuje do umístění zobrazeného v dialogovém okně.
  • Pokud původní cluster stále existuje, klonovaný poznámkový blok se připojí k původnímu clusteru a cluster se spustí.
  • Pokud původní cluster již neexistuje, vytvoří se a spustí nový cluster se stejnou konfigurací, včetně nainstalovaných knihoven. Poznámkový blok je připojený k novému clusteru.

Pro klonovaný poznámkový blok můžete vybrat jiné umístění a zkontrolovat konfiguraci clusteru a nainstalované knihovny:

  • Pokud chcete vybrat jinou složku pro uložení naklonovaného poznámkového bloku, klikněte na Upravit složku.
  • Pokud chcete zobrazit specifikaci clusteru, klikněte na Zobrazit specifikaci. Pokud chcete klonovat jenom poznámkový blok, ne cluster, zrušte zaškrtnutí této možnosti.
  • Pokud chcete zobrazit knihovny nainstalované v původním clusteru, klikněte na Zobrazit knihovny. Pokud vás nezajímá instalace stejných knihoven jako v původním clusteru, zrušte zaškrtnutí této možnosti.

Správa spuštění

Přejmenovat spuštění

Chcete-li přejmenovat spuštění, klikněte Ikona se třemi tlačítky v pravém horním rohu stránky spuštění a vyberte Přejmenovat.

Spuštění filtru

Spuštění můžete vyhledat na základě hodnot parametrů nebo metrik. Můžete také vyhledat spuštění podle značky.

  • Pokud chcete vyhledat spuštění, která odpovídají výrazu obsahujícímu hodnoty parametrů a metrik, zadejte dotaz do vyhledávacího pole a klikněte na Hledat. Mezi příklady syntaxe dotazů patří:

    metrics.r2 > 0.3

    params.elasticNetParam = 0.5

    params.elasticNetParam = 0.5 AND metrics.avg_areaUnderROC > 0.3

  • Pokud chcete vyhledat spuštění podle značky, zadejte značky ve formátu: tags.<key>="<value>". Řetězcové hodnoty musí být uzavřeny v uvozovkách, jak je znázorněno.

    tags.estimator_name="RandomForestRegressor"

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

    Klíče i hodnoty můžou obsahovat mezery. Pokud klíč obsahuje mezery, musíte ho uzavřít do backtick, jak je znázorněno.

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

Můžete také filtrovat spuštění podle jejich stavu (Aktivní nebo Odstraněno) a na základě toho, jestli je k běhu přidružená verze modelu. Uděláte to tak, že provedete výběr z rozevíracích nabídek Stav a Čas vytvoření .

Spuštění filtru

Stahování spuštění

  1. Vyberte jedno nebo více spuštění.

  2. Klikněte na Stáhnout CSV. Soubor CSV obsahující následující pole ke stažení:

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

Odstranění spuštění

Spuštění můžete odstranit pomocí uživatelského rozhraní Učení Databricks Machine pomocí následujícího postupu:

  1. V experimentu vyberte jedno nebo více spuštění kliknutím do zaškrtávacího políčka vlevo od spuštění.
  2. Klepněte na tlačítko Odstranit.
  3. Pokud je spuštěním nadřazené spuštění, rozhodněte se, jestli chcete odstranit také následná spuštění. Ve výchozím nastavení je tato možnost vybrána.
  4. Kliknutím na Odstranit potvrďte. Odstraněná spuštění se ukládají po dobu 30 dnů. Pokud chcete zobrazit odstraněná spuštění, vyberte v poli Stát možnost Odstraněno .

Hromadné odstranění se spouští na základě času vytvoření.

Python můžete použít k hromadnému odstranění spuštění experimentu vytvořeného před časovým razítkem nebo systém UNIX. Pomocí Databricks Runtime 14.1 nebo novější můžete volat mlflow.delete_runs rozhraní API k odstranění spuštění a vrácení počtu odstraněných spuštění.

Následují mlflow.delete_runs parametry:

  • experiment_id: ID experimentu obsahujícího spuštění, která se mají odstranit.
  • max_timestamp_millis: Maximální časové razítko vytváření v milisekundách od systém UNIX epochy pro odstranění spuštění. Odstraní se pouze spuštění vytvořená před nebo v tomto časovém razítku.
  • max_runs:Volitelné. Kladné celé číslo označující maximální počet spuštění, která se mají odstranit. Maximální povolená hodnota pro max_runs je 1 0000. Pokud není zadáno, max_runs výchozí hodnota je 1 0000.
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
)

Pomocí Databricks Runtime 13.3 LTS nebo starší můžete v poznámkovém bloku Azure Databricks spustit následující klientský kód.

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

V dokumentaci k rozhraní API služby Azure Databricks Experiments najdete parametry a specifikace návratových hodnot pro odstranění spuštění na základě času vytvoření.

Obnovení běhů

Dříve odstraněná spuštění můžete obnovit pomocí uživatelského rozhraní Učení Databricks Machine.

  1. Na stránce Experiment vyberte Možnost Odstraněno v poli Stát, aby se zobrazila odstraněná spuštění.
  2. Kliknutím na zaškrtávací políčko vlevo od spuštění vyberte jedno nebo více spuštění.
  3. Klikněte na Obnovit.
  4. Kliknutím na Obnovit potvrďte. Pokud chcete zobrazit obnovená spuštění, vyberte v poli Stát aktivní .

Hromadné obnovení se spouští na základě času odstranění.

Python můžete použít také k hromadnému obnovení spuštění experimentu, který byl odstraněn v systém UNIX časovém razítku nebo po nich. Pomocí databricks Runtime 14.1 nebo novějšího můžete volat mlflow.restore_runs rozhraní API k obnovení spuštění a vrátit počet obnovených spuštění.

Následují mlflow.restore_runs parametry:

  • experiment_id: ID experimentu obsahujícího spuštění k obnovení.
  • min_timestamp_millis: Minimální časové razítko odstranění v milisekundách od systém UNIX epochy obnovení. Spustí se pouze po obnovení tohoto časového razítka nebo po tomto časovém razítku.
  • max_runs:Volitelné. Kladné celé číslo, které označuje maximální počet spuštění k obnovení. Maximální povolená hodnota pro max_runs je 1 0000. Pokud není zadáno, max_runs výchozí hodnota 1 0000.
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
)

Pomocí Databricks Runtime 13.3 LTS nebo starší můžete v poznámkovém bloku Azure Databricks spustit následující klientský kód.

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

Informace o parametrech a návratových specifikacích pro obnovení spuštění na základě času odstranění najdete v dokumentaci k rozhraní API služby Azure Databricks Experiments.

Porovnání spuštění

Můžete porovnat spuštění z jednoho experimentu nebo z několika experimentů. Stránka Porovnání spuštění obsahuje informace o vybraných spuštěních v grafických a tabulkových formátech. Můžete také vytvářet vizualizace výsledků spuštění a tabulek informací o spuštění, parametrů spuštění a metrik.

Vytvoření vizualizace:

  1. Vyberte typ grafu (paralelní souřadnice, bodový graf nebo obrysový graf).
    1. Pro graf paralelních souřadnic vyberte parametry a metriky, které se mají vykreslit. Odtud můžete identifikovat vztahy mezi vybranými parametry a metrikami, což vám pomůže lépe definovat prostor pro ladění hyperparametrů pro vaše modely.

      porovnání vizualizace stránky spuštění

    2. U bodového grafu nebo obrysového grafu vyberte parametr nebo metriku, které se mají zobrazit na každé ose.

Tabulky Parametry a metriky zobrazují parametry spuštění a metriky ze všech vybraných spuštění. Sloupce v těchto tabulkách jsou identifikované tabulkou Podrobností o spuštění bezprostředně nad ní. Pro zjednodušení můžete skrýt parametry a metriky, které jsou identické ve všech vybraných spuštěních přepnutím Tlačítko Zobrazit pouze rozdíl.

compare runs page tables

Porovnání spuštění z jednoho experimentu

  1. Na stránce experimentu vyberte dvě nebo více spuštění tak, že kliknete na zaškrtávací políčko vlevo od spuštění nebo zaškrtnete všechna spuštění zaškrtnutím políčka v horní části sloupce.
  2. Klikněte na Porovnat. Zobrazí se obrazovka Porovnání <N> spuštění.

Porovnání spuštění z několika experimentů

  1. Na stránce Experimenty vyberte experimenty, které chcete porovnat, kliknutím do pole nalevo od názvu experimentu.
  2. Klikněte na Porovnat (n) (n je počet experimentů, které jste vybrali). Zobrazí se obrazovka zobrazující všechna spuštění z vybraných experimentů.
  3. Vyberte dvě nebo více spuštění kliknutím na zaškrtávací políčko vlevo od spuštění nebo zaškrtnutím políčka v horní části sloupce zaškrtněte všechna spuštění.
  4. Klikněte na Porovnat. Zobrazí se obrazovka Porovnání <N> spuštění.

Kopírování probíhá mezi pracovními prostory

K importu nebo exportu MLflow do nebo z pracovního prostoru Databricks můžete použít opensourcový opensourcový projekt MLflow Export-Import řízené komunitou.