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.
Experiment MLflow je primární jednotka organizace a řízení přístupu pro spuštění MLflow. Všechna spuštění MLflow patří do experimentu. Experimenty umožňují vizualizovat, vyhledávat a porovnávat spuštění a stahovat artefakty a metadata spuštění pro analýzu v jiných nástrojích.
Spuštění MLflow odpovídá jedinému spuštění kódu modelu.
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 .
- Vyberte Knihovna Source Maven a zadejte
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ů:
- Použijte příkaz mlflow.set_experiment().
experiment_id
Použijte parametr v příkazu mlflow.start_run().- Nastavte jednu z proměnných prostředí MLflow MLFLOW_EXPERIMENT_NAME nebo MLFLOW_EXPERIMENT_ID.
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_TOKEN
Databricks). 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
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:
- Klient MLflow Python search_runs rozhraní API vrátí datový rámec pandas.
- Zdroj dat experimentu MLflow vrátí datový rámec Apache Spark.
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.