Sledování modelů ML pomocí MLflow a Azure Machine Learningu
PLATÍ PRO:Sada Python SDK azureml v1
V tomto článku se dozvíte, jak povolit sledování MLflow pro připojení služby Azure Machine Learning jako back-endu experimentů MLflow.
MLflow je opensourcová knihovna pro správu životního cyklu experimentů strojového učení. Sledování MLflow je součástí MLflow, která protokoluje a sleduje metriky trénovacích běhů a artefakty modelu bez ohledu na prostředí experimentu – místně na vašem počítači, ve vzdáleném výpočetním cíli, na virtuálním počítači nebo v clusteru Azure Databricks.
Viz MLflow a Azure Machine Learning , kde najdete všechny podporované funkce MLflow a Azure Machine Learning, včetně podpory projektů MLflow (Preview) a nasazení modelu.
Tip
Pokud chcete sledovat experimenty spuštěné v Azure Databricks nebo Azure Synapse Analytics, projděte si vyhrazené články Sledování experimentů Azure Databricks ML pomocí MLflow a Azure Machine Learning nebo Sledování experimentů Azure Synapse Analytics ML pomocí MLflow a Azure Machine Learning.
Poznámka
Informace v tomto dokumentu jsou primárně určené odborníkům na data a vývojářům, kteří chtějí monitorovat proces trénování modelu. Pokud jste správce, který má zájem o monitorování využití prostředků a událostí ze služby Azure Machine Learning, jako jsou kvóty, dokončené úlohy trénování nebo dokončená nasazení modelu, přečtěte si téma Monitorování služby Azure Machine Learning.
Požadavky
Nainstalujte balíček
mlflow
.- Můžete použít MLflow Skinny , což je jednoduchý balíček MLflow bez úložiště SQL, serveru, uživatelského rozhraní nebo závislostí datových věd. To se doporučuje uživatelům, kteří primárně potřebují funkce sledování a protokolování bez importu úplné sady funkcí MLflow, včetně nasazení.
Nainstalujte balíček
azureml-mlflow
.Nainstalujte a nastavte rozhraní příkazového řádku služby Azure Machine Learning (v1) a nezapomeňte nainstalovat rozšíření ml.
Důležité
Některé příkazy Azure CLI v tomto článku používají
azure-cli-ml
rozšíření , nebo v1 pro Azure Machine Learning. Podpora rozšíření v1 skončí 30. září 2025. Do tohoto data budete moct nainstalovat a používat rozšíření v1.Doporučujeme přejít na
ml
rozšíření , nebo v2 do 30. září 2025. Další informace o rozšíření v2 najdete v tématech Rozšíření Azure ML CLI a Python SDK v2.Nainstalujte a nastavte sadu Azure Machine Learning SDK pro Python.
Sledování spuštění z místního počítače nebo vzdálených výpočetních prostředků
Sledování s využitím MLflow se službou Azure Machine Learning umožňuje ukládat protokolovaná metriky a spuštění artefaktů, která se spustila na místním počítači, do pracovního prostoru služby Azure Machine Learning.
Nastavení prostředí pro sledování
Pokud chcete sledovat spuštění, které neběží na výpočetních prostředcích služby Azure Machine Learning (od této chvíle se označuje jako "místní výpočetní prostředky"), musíte místní výpočetní prostředky nasměrovat na identifikátor URI sledování MLflow služby Azure Machine Learning.
Poznámka
Při spuštění na Výpočetních prostředcích Azure (Azure Notebooks, Jupyter Notebooks hostovaných ve výpočetních instancích Azure nebo výpočetních clusterech) nemusíte konfigurovat identifikátor URI sledování. Nakonfiguruje se automaticky za vás.
- Použití sady SDK služby Azure Machine Learning
- Použití proměnné prostředí
- Sestavení identifikátoru URI sledování MLflow
PLATÍ PRO:Sada Python SDK azureml v1
Identifikátor URI pro sledování MLflow služby Azure Machine Learning můžete získat pomocí sady Azure Machine Learning SDK v1 pro Python. Ujistěte se, že máte knihovnu azureml-sdk
nainstalovanou v clusteru, který používáte. Následující ukázka získá jedinečný identifikátor URI sledování MLFLow přidružený k vašemu pracovnímu prostoru. Metoda set_tracking_uri()
pak na tento identifikátor URI odkazuje na sledovací identifikátor URI MLflow.
Použití konfiguračního souboru pracovního prostoru:
from azureml.core import Workspace import mlflow ws = Workspace.from_config() mlflow.set_tracking_uri(ws.get_mlflow_tracking_uri())
Tip
Konfigurační soubor pracovního prostoru si můžete stáhnout pomocí:
- Přejděte na studio Azure Machine Learning.
- Klikněte do pravého rohu stránky –> Stáhnout konfigurační soubor.
- Uložte soubor
config.json
do stejného adresáře, na kterém pracujete.
Pomocí ID předplatného, názvu skupiny prostředků a názvu pracovního prostoru:
from azureml.core import Workspace import mlflow #Enter details of your Azure Machine Learning workspace subscription_id = '<SUBSCRIPTION_ID>' resource_group = '<RESOURCE_GROUP>' workspace_name = '<AZUREML_WORKSPACE_NAME>' ws = Workspace.get(name=workspace_name, subscription_id=subscription_id, resource_group=resource_group) mlflow.set_tracking_uri(ws.get_mlflow_tracking_uri())
Nastavit název experimentu
Všechna spuštění MLflow se protokolují do aktivního experimentu. Ve výchozím nastavení se spuštění protokolují do experimentu s názvem Default
, který se automaticky vytvoří pro vás. Ke konfiguraci experimentu, na který chcete pracovat, použijte příkaz mlflow.set_experiment()
MLflow .
experiment_name = 'experiment_with_mlflow'
mlflow.set_experiment(experiment_name)
Tip
Při odesílání úloh pomocí sady Azure Machine Learning SDK můžete při odesílání nastavit název experimentu pomocí vlastnosti experiment_name
. Nemusíte ho konfigurovat ve svém trénovacím skriptu.
Spustit trénovací běh
Po nastavení názvu experimentu MLflow můžete spustit trénovací běh pomocí start_run()
příkazu . Pak pomocí aktivujte log_metric()
rozhraní API protokolování MLflow a začněte protokolovat metriky trénovacích běhů.
import os
from random import random
with mlflow.start_run() as mlflow_run:
mlflow.log_param("hello_param", "world")
mlflow.log_metric("hello_metric", random())
os.system(f"echo 'hello world' > helloworld.txt")
mlflow.log_artifact("helloworld.txt")
Podrobnosti o tom, jak protokolovat metriky, parametry a artefakty v běhu pomocí MLflow, najdete v tématu Protokolování a zobrazení metrik.
Sledování spuštění spuštěných ve službě Azure Machine Learning
PLATÍ PRO:Sada Python SDK azureml v1
Vzdálená spuštění (úlohy) umožňují trénovat modely robustnějším a opakovaným způsobem. Můžou také využívat výkonnější výpočetní prostředky, jako jsou výpočetní clustery služby Machine Learning. Informace o různých možnostech výpočetních prostředků najdete v tématu Použití cílových výpočetních objektů pro trénování modelu .
Při odesílání spuštění Azure Machine Learning automaticky nakonfiguruje MLflow pro práci s pracovním prostorem, ve kterém běží. To znamená, že není potřeba konfigurovat identifikátor URI sledování MLflow. Experimenty se navíc automaticky pojmenovávají na základě podrobností o odeslání experimentu.
Důležité
Při odesílání trénovacích úloh do služby Azure Machine Learning nemusíte konfigurovat identifikátor URI sledování MLflow pro vaši trénovací logiku, protože už je nakonfigurovaný. Název experimentu nemusíte konfigurovat ani v rutině trénování.
Vytvoření rutiny trénování
Nejprve byste měli vytvořit src
podadresář a vytvořit soubor s trénovacím kódem train.py
v souboru v src
podadresáři. Veškerý trénovací kód půjde do podadresáře src
, včetně train.py
.
Trénovací kód je převzatý z tohoto příkladu MLflow v ukázkovém úložišti Azure Machine Learning.
Zkopírujte do souboru tento kód:
# imports
import os
import mlflow
from random import random
# define functions
def main():
mlflow.log_param("hello_param", "world")
mlflow.log_metric("hello_metric", random())
os.system(f"echo 'hello world' > helloworld.txt")
mlflow.log_artifact("helloworld.txt")
# run functions
if __name__ == "__main__":
# run main function
main()
Konfigurace experimentu
K odeslání experimentu do služby Azure Machine Learning budete muset použít Python. V poznámkovém bloku nebo souboru Pythonu nakonfigurujte výpočetní a trénovací běhové prostředí s Environment
třídou .
from azureml.core import Environment
from azureml.core.conda_dependencies import CondaDependencies
env = Environment(name="mlflow-env")
# Specify conda dependencies with scikit-learn and temporary pointers to mlflow extensions
cd = CondaDependencies.create(
conda_packages=["scikit-learn", "matplotlib"],
pip_packages=["azureml-mlflow", "pandas", "numpy"]
)
env.python.conda_dependencies = cd
Pak vytvořte ScriptRunConfig
objekt se vzdáleným výpočetním objektem jako cílovým výpočetním objektem.
from azureml.core import ScriptRunConfig
src = ScriptRunConfig(source_directory="src",
script=training_script,
compute_target="<COMPUTE_NAME>",
environment=env)
S touto konfigurací spuštění výpočetních Experiment.submit()
prostředků a trénování použijte k odeslání spuštění metodu . Tato metoda automaticky nastaví identifikátor URI sledování MLflow a směruje protokolování z MLflow do vašeho pracovního prostoru.
from azureml.core import Experiment
from azureml.core import Workspace
ws = Workspace.from_config()
experiment_name = "experiment_with_mlflow"
exp = Experiment(workspace=ws, name=experiment_name)
run = exp.submit(src)
Zobrazení metrik a artefaktů v pracovním prostoru
Metriky a artefakty z protokolování MLflow se sledují ve vašem pracovním prostoru. Pokud je chcete kdykoli zobrazit, přejděte do pracovního prostoru a vyhledejte experiment podle názvu v pracovním prostoru v studio Azure Machine Learning. Nebo spusťte následující kód.
Načtení metriky spuštění pomocí MLflow get_run()
from mlflow.tracking import MlflowClient
# Use MlFlow to retrieve the run that was just completed
client = MlflowClient()
run_id = mlflow_run.info.run_id
finished_mlflow_run = MlflowClient().get_run(run_id)
metrics = finished_mlflow_run.data.metrics
tags = finished_mlflow_run.data.tags
params = finished_mlflow_run.data.params
print(metrics,tags,params)
K zobrazení artefaktů spuštění můžete použít MlFlowClient.list_artifacts().
client.list_artifacts(run_id)
Ke stažení artefaktu do aktuálního adresáře můžete použít MLFlowClient.download_artifacts().
client.download_artifacts(run_id, "helloworld.txt", ".")
Další podrobnosti o tom, jak načítat informace z experimentů a spuštění ve službě Azure Machine Learning pomocí MLflow, najdete v zobrazení Správa experimentů a spuštění pomocí MLflow.
Porovnání a dotazování
Porovnejte a dotazujte všechna spuštění MLflow ve vašem pracovním prostoru Azure Machine Learning pomocí následujícího kódu. Přečtěte si další informace o dotazování spuštění pomocí MLflow.
from mlflow.entities import ViewType
all_experiments = [exp.experiment_id for exp in MlflowClient().list_experiments()]
query = "metrics.hello_metric > 0"
runs = mlflow.search_runs(experiment_ids=all_experiments, filter_string=query, run_view_type=ViewType.ALL)
runs.head(10)
Automatické protokolování
Pomocí Azure Machine Learning a MLFlow můžou uživatelé při trénování modelu automaticky protokolovat metriky, parametry modelu a artefakty modelu. Podporují se různé oblíbené knihovny strojového učení .
Pokud chcete povolit automatické protokolování , vložte před trénovací kód následující kód:
mlflow.autolog()
Přečtěte si další informace o automatickém protokolování pomocí MLflow.
Správa modelů
Zaregistrujte a sledujte své modely pomocí registru modelů služby Azure Machine Learning, který podporuje registr modelů MLflow. Modely Azure Machine Learning jsou sladěné se schématem modelu MLflow, což usnadňuje export a import těchto modelů napříč různými pracovními postupy. Metadata související s MLflow, jako je ID spuštění, se také sledují s registrovaným modelem pro sledovatelnost. Uživatelé můžou odesílat trénovací spuštění, registrovat a nasazovat modely vytvořené ze spuštění MLflow.
Pokud chcete nasadit a zaregistrovat model připravený pro produkční prostředí v jednom kroku, přečtěte si téma Nasazení a registrace modelů MLflow.
Pokud chcete zaregistrovat a zobrazit model ze spuštění, postupujte následovně:
Po dokončení spuštění zavolejte metodu
register_model()
.# the model folder produced from a run is registered. This includes the MLmodel file, model.pkl and the conda.yaml. model_path = "model" model_uri = 'runs:/{}/{}'.format(run_id, model_path) mlflow.register_model(model_uri,"registered_model_name")
Zobrazte zaregistrovaný model v pracovním prostoru pomocí studio Azure Machine Learning.
V následujícím příkladu má zaregistrovaný model
my-model
označená metadata sledování MLflow.Výběrem karty Artifacts (Artefakty ) zobrazíte všechny soubory modelu, které jsou zarovnané se schématem modelu MLflow (conda.yaml, MLmodel, model.pkl).
Výběrem MLmodel zobrazíte soubor MLmodel vygenerovaný spuštěním.
Vyčištění prostředků
Pokud ve svém pracovním prostoru neplánujete používat protokolované metriky a artefakty, není v současné době k dispozici možnost je odstranit jednotlivě. Místo toho odstraňte skupinu prostředků, která obsahuje účet úložiště a pracovní prostor, aby se vám neúčtovaly žádné poplatky:
Úplně nalevo na webu Azure Portal vyberte Skupiny prostředků.
V seznamu vyberte skupinu prostředků, kterou jste vytvořili.
Vyberte Odstranit skupinu prostředků.
Zadejte název skupiny prostředků. Vyberte Odstranit.
Příklady poznámkových bloků
Poznámkové bloky MLflow s Azure Machine Learning ukazují a rozšiřují koncepty uvedené v tomto článku. Projděte si také úložiště řízené komunitou , Příklady AzureML.
Další kroky
- Nasazení modelů pomocí MLflow
- Monitorujte produkční modely z důvodu posunu dat.
- Sledování spuštění Azure Databricks pomocí MLflow
- Spravujte své modely.