Sdílet prostřednictvím


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ů:

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

Získat poznámkový blok

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

Získat poznámkový blok

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:

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.