Sledování vývoje modelů pomocí MLflow
Sledování MLflow umožňuje protokolovat poznámkové bloky a trénovací datové sady, parametry, metriky, značky a artefakty související s trénováním modelu strojového učení nebo hlubokého učení. Ukázkový poznámkový blok, který vám umožní začít s MLflow, najdete v kurzu: Kompletní modely ML v Azure Databricks.
Sledování MLflow pomocí experimentů a spuštění
Proces vývoje modelu je iterativní a při vývoji a optimalizaci modelu může být náročné sledovat svou práci. V Azure Databricks můžete použít sledování MLflow, které vám pomůže sledovat proces vývoje modelu, včetně zkoušených nastavení parametrů nebo jejich kombinací a jejich dopadu na výkon modelu.
Sledování MLflow používá experimenty a spouští k protokolování a sledování vývoje modelů strojového učení a hlubokého učení. Provoz je jediné spuštění kódu modelu. Během spuštění MLflow můžete protokolovat parametry a výsledky modelu. Experiment je kolekce souvisejících spuštění. V experimentu můžete porovnat a filtrovat spuštění, abyste pochopili, jak model funguje a jak jeho výkon závisí na nastavení parametrů, vstupních datech atd.
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.
API pro sledování MLflow
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.
MLflow je předinstalovaný v clusterech ML Databricks Runtime. 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.
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 proměnné prostředí a DATABRICKS_HOST
proměnné prostředí, najdete v tématu DATABRICKS_TOKEN
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")
Záznamy k experimentu
MLflow může automaticky protokolovat trénovací kód napsaný v mnoha architekturách strojového učení a hlubokého učení. Toto je nejjednodušší způsob, jak začít používat sledování MLflow. Podívejte se na příklad poznámkového bloku.
Pokud chcete mít větší kontrolu nad tím, které parametry a metriky se protokolují, nebo k protokolování dalších artefaktů, jako jsou soubory CSV nebo grafy, použijte rozhraní API pro protokolování MLflow. Podívejte se na příklad poznámkového bloku.
Sledování vývoje modelů pomocí automatickéhologování
Tento ukázkový poznámkový blok ukazuje, jak používat automatické přihlašování s scikit-learn. Informace o automatickém zaznamenávání s dalšími knihovnami Pythonu najdete v tématu Automaticky zaznamenávat tréninkové běhy vMLflow.
Automatické logování poznámkového bloku Pythonu pro MLflow
Sledování vývoje modelů pomocí rozhraní API protokolování
Tento ukázkový notebook ukazuje, jak používat rozhraní API pro logování v Pythonu. MLflow má také rozhraní REST, R a Java API.
Poznámkový blok pythonového rozhraní API pro protokolování MLflow
Zaznamenání spuštění do experimentu ve pracovním prostoru
Ve výchozím nastavení jsou při trénování modelu v Databricksovém poznámkovém bloku běhy automaticky protokolovány do experimentu daného poznámkového bloku. 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. Abyste zaznamenali běhy do experimentu v pracovním prostoru, použijte ve svém poznámkovém bloku nebo při volání rozhraní API kód podobný následujícímu:
experiment_name = "/Shared/name_of_experiment/"
mlflow.set_experiment(experiment_name)
Pokyny k vytvoření experimentu pracovního prostoru najdete v tématu Vytvoření 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.
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 sledovat vývoj modelů pomocí MLflow.