Sledování trénovacích běhů strojového učení a hlubokého učení

Komponenta sledování MLflow umožňuje protokolovat vlastnosti zdroje, parametry, metriky, značky a artefakty související s trénováním strojového učení nebo modelu hlubokého učení. Pokud chcete začít s MLflow, vyzkoušejte jeden z kurzů rychlého startu MLflow.

Sledování MLflow pomocí experimentů a spuštění

Sledování MLflow vychází ze dvou konceptů, experimentů a spuštění:

Poznámka:

Od 27. března 2024 ukládá MLflow limit kvóty pro celkový počet parametrů, značek a kroků metrik pro všechna existující a nová spuštění a celkový počet spuštění pro všechny existující a nové experimenty, viz omezení prostředků. Pokud dosáhnete kvóty spuštění podle experimentu, Služba Databricks doporučuje odstranit spuštění, která už nepotřebujete používat rozhraní API pro spuštění odstranění v Pythonu. Pokud dosáhnete jiných limitů kvót, služba Databricks doporučuje upravit strategii protokolování tak, aby zůstala pod limitem. Pokud požadujete zvýšení tohoto limitu, spojte se s týmem účtu Databricks s stručným vysvětlením vašeho případu použití, proč navrhované přístupy ke zmírnění rizika nefungují a nový limit, který požadujete.

Rozhraní API pro sledování MLflow protokoluje parametry, metriky, značky a artefakty ze spuštění modelu. Rozhraní API pro sledování komunikuje se serverem pro sledování MLflow. Při použití Databricks protokoluje data server sledování hostovaný službou Databricks. Hostovaný sledovací server MLflow má rozhraní PYTHON, Java a R API.

Poznámka:

MLflow se instaluje do clusterů Databricks Runtime ML. Pokud chcete používat MLflow v clusteru Databricks Runtime, musíte knihovnu mlflow nainstalovat. Pokyny k instalaci knihovny do clusteru najdete v tématu Instalace knihovny v clusteru. Konkrétní balíčky, které se mají nainstalovat pro MLflow, jsou:

  • V případě Pythonu vyberte PyPI zdroje knihovny a zadejte mlflow do pole Balíček .
  • V poli R vyberte CRAN zdroje knihovny a zadejte mlflow do pole Balíček .
  • Pro Scala nainstalujte tyto dva balíčky:
    • Vyberte Knihovna Source Maven a zadejte org.mlflow:mlflow-client:1.11.0 do pole Souřadnice .
    • Vyberte Zdroj knihovny PyPI a zadejte mlflow do pole Balíček .

Kde se protokolují běhy MLflow

Všechna spuštění MLflow se protokolují do aktivního experimentu, který lze nastavit některým z následujících způsobů:

Pokud není nastavený žádný aktivní experiment, spuštění se do experimentu poznámkového bloku zaprotokolují.

Pokud chcete výsledky experimentu protokolovat na vzdáleně hostovaný server MLflow Tracking v jiném pracovním prostoru než na serveru, ve kterém experiment spouštíte, nastavte identifikátor URI sledování tak, aby odkaz na vzdálený pracovní prostor používal mlflow.set_tracking_uri(), a nastavte cestu k experimentu ve vzdáleném pracovním prostoru pomocí mlflow.set_experiment().

mlflow.set_tracking_uri(<uri-of-remote-workspace>)
mlflow.set_experiment("path to experiment in remote workspace")

Pokud experimenty spouštíte místně a chcete výsledky experimentu protokolovat na server Pro sledování MLflow Databricks, zadejte instanci pracovního prostoru Databricks (DATABRICKS_HOST) a token pat-access (DATABRICKS_TOKENDatabricks). Dále můžete nastavit identifikátor URI sledování tak, aby odkaz na pracovní prostor používal mlflow.set_tracking_uri(), a nastavit cestu k experimentu pomocí mlflow.set_experiment(). Podrobnosti o tom, kde najít hodnoty pro DATABRICKS_HOST proměnné prostředí a DATABRICKS_TOKEN proměnné prostředí, najdete v tématu Provedení ověřování tokenů pat azure Databricks.

Následující příklad kódu ukazuje nastavení těchto hodnot:


os.environ["DATABRICKS_HOST"] = "https://dbc-1234567890123456.cloud.databricks.com" # set to your server URI
os.environ["DATABRICKS_TOKEN"] = "dapixxxxxxxxxxxxx"

mlflow.set_tracking_uri("databricks")
mlflow.set_experiment("/your-experiment")

Ukázkový poznámkový blok protokolování

Tento poznámkový blok ukazuje, jak protokolovat spuštění do experimentu poznámkového bloku a do experimentu pracovního prostoru. Do experimentu poznámkového bloku je možné protokolovat pouze spuštění MLflow zahájená v poznámkovém bloku. MLflow se spouští z libovolného poznámkového bloku nebo z rozhraní API, která se dají protokolovat do experimentu pracovního prostoru. Informace o zobrazení protokolovaných spuštění najdete v tématu Zobrazení experimentu poznámkového bloku a zobrazení experimentu pracovního prostoru.

Protokol MLflow spouští poznámkový blok

Získat poznámkový blok

Ke spuštění spuštění a záznamu dat o spuštění a záznamu dat spuštění můžete použít rozhraní PYTHON, Javu nebo Scala a rozhraní API jazyka R. Podrobnosti najdete v ukázkových poznámkových blocích MLflow.

Přístup k serveru pro sledování MLflow mimo Azure Databricks

Můžete také zapisovat a číst ze serveru pro sledování mimo Azure Databricks, například pomocí rozhraní příkazového řádku MLflow. Viz Přístup k serveru pro sledování MLflow mimo Azure Databricks.

Analýza spuštění MLflow prostřednictvím kódu programu

K MLflow můžete přistupovat programově spouštět data pomocí následujících dvou rozhraní API datového rámce:

Tento příklad ukazuje, jak pomocí klienta Pythonu MLflow sestavit řídicí panel, který v průběhu času vizualizuje změny v metrikách vyhodnocení, sleduje počet spuštění spuštěných konkrétním uživatelem a měří celkový počet spuštění napříč všemi uživateli:

Proč se metriky a výstupy trénování modelu můžou lišit

Mnoho algoritmů použitých v ML má náhodný prvek, například vzorkování nebo náhodné počáteční podmínky v samotném algoritmu. Při trénování modelu pomocí jednoho z těchto algoritmů nemusí být výsledky s každým spuštěním stejné, i když spustíte spuštění se stejnými podmínkami. Mnoho knihoven nabízí mechanismus počátečního nastavení pro opravu počátečních podmínek těchto stochastických prvků. Mohou však existovat další zdroje variace, které nejsou řízeny semeny. Některé algoritmy jsou citlivé na pořadí dat a distribuované algoritmy ML můžou být ovlivněny také rozdělením dat. Obecně platí, že tato varianta není v procesu vývoje modelu důležitá a není důležitá.

K řízení variant způsobených rozdíly v řazení a dělení použijte funkce PySpark repartition a sortWithinPartitions.

Příklady sledování MLflow

Následující poznámkové bloky ukazují, jak trénovat několik typů modelů a sledovat trénovací data v MLflow a jak ukládat data sledování v Delta Lake.