ML-modellen bijhouden met MLflow en Azure Machine Learning
VAN TOEPASSING OP: Python SDK azureml v1
In dit artikel leert u hoe u MLflow Tracking inschakelt om Azure Machine Learning te verbinden als de back-end van uw MLflow-experimenten.
MLflow is een opensource-bibliotheek voor het beheren van de levenscyclus van uw machine learning-experimenten. MLflow Tracking is een onderdeel van MLflow dat metrische gegevens en modelartefacten van uw training bijhoudt, ongeacht de omgeving van uw experiment, lokaal op uw computer, op een extern rekendoel, een virtuele machine of een Azure Databricks-cluster.
Zie MLflow en Azure Machine Learning voor alle ondersteunde MLflow- en Azure Machine Learning-functionaliteit, waaronder ondersteuning voor MLflow-projecten (preview) en modelimplementatie.
Tip
Als u experimenten wilt bijhouden die worden uitgevoerd in Azure Databricks of Azure Synapse Analytics, raadpleegt u de toegewezen artikelen Azure Databricks ML-experimenten bijhouden met MLflow en Azure Machine Learning of Azure Synapse Analytics ML-experimenten bijhouden met MLflow en Azure Machine Learning.
Notitie
De informatie in dit document is voornamelijk bedoeld voor gegevenswetenschappers en ontwikkelaars die het modeltrainingsproces willen bewaken. Als u een beheerder bent die geïnteresseerd is in het bewaken van resourcegebruik en gebeurtenissen van Azure Machine Learning, zoals quota, voltooide trainingstaken of voltooide modelimplementaties, raadpleegt u Bewaking van Azure Machine Learning.
Vereisten
Installeer het
mlflow
-pakket.- U kunt het MLflow Skinny gebruiken. Dit is een lichtgewicht MLflow-pakket zonder SQL-opslag, server- en UI- of data science-afhankelijkheden. Dit wordt aanbevolen voor gebruikers die voornamelijk de mogelijkheden voor tracering en logboekregistratie nodig hebben zonder de volledige suite met MLflow-functies, waaronder implementaties, te importeren.
Installeer het
azureml-mlflow
-pakket.Installeer en stel Azure Machine Learning CLI (v1) in en zorg ervoor dat u de ml-extensie installeert.
Belangrijk
Sommige Azure CLI-opdrachten in dit artikel gebruiken de
azure-cli-ml
extensie (of v1) voor Azure Machine Learning. Ondersteuning voor de v1-extensie eindigt op 30 september 2025. U kunt de v1-extensie tot die datum installeren en gebruiken.U wordt aangeraden vóór 30 september 2025 over te stappen op de
ml
extensie of v2. Zie de Azure ML CLI-extensie en Python SDK v2 voor meer informatie over de v2-extensie.Azure Machine Learning SDK voor Python installeren en instellen.
Uitvoeringen bijhouden vanaf uw lokale computer of externe rekenkracht
Bijhouden met behulp van MLflow met Azure Machine Learning kunt u de vastgelegde metrische gegevens en artefacten opslaan die zijn uitgevoerd op uw lokale computer in uw Azure Machine Learning-werkruimte.
Traceringsomgeving instellen
Als u een uitvoering wilt bijhouden die niet wordt uitgevoerd op Azure Machine Learning-rekenkracht (vanaf nu 'lokaal berekenen'), moet u uw lokale berekening naar de URI voor het bijhouden van Azure Machine Learning MLflows laten verwijzen.
Notitie
Bij uitvoering op Azure Compute (Azure Notebooks, Jupyter Notebooks die worden gehost op Azure Compute Instances of Compute-clusters) hoeft u de tracerings-URI niet te configureren. Deze wordt automatisch voor u geconfigureerd.
- De Azure Machine Learning SDK gebruiken
- Een omgevingsvariabele gebruiken
- De MLflow-tracerings-URI bouwen
VAN TOEPASSING OP: Python SDK azureml v1
U kunt de azure Machine Learning MLflow-tracerings-URI ophalen met behulp van de Azure Machine Learning SDK v1 voor Python. Zorg ervoor dat de bibliotheek azureml-sdk
is geïnstalleerd in het cluster dat u gebruikt. In het volgende voorbeeld wordt de unieke MLFLow-tracerings-URI ophaalt die is gekoppeld aan uw werkruimte. Vervolgens wijst de methode set_tracking_uri()
de MLflow-tracerings-URI naar die URI.
Het configuratiebestand voor de werkruimte gebruiken:
from azureml.core import Workspace import mlflow ws = Workspace.from_config() mlflow.set_tracking_uri(ws.get_mlflow_tracking_uri())
Tip
U kunt het configuratiebestand voor de werkruimte downloaden door:
- Ga naar Azure Machine Learning-studio
- Klik op de rechterbovenhoek van de pagina -> Configuratiebestand downloaden.
- Sla het bestand
config.json
op in dezelfde map waaraan u werkt.
Gebruik de abonnements-id, de naam van de resourcegroep en de werkruimtenaam:
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())
Experimentnaam instellen
Alle MLflow-uitvoeringen worden geregistreerd bij het actieve experiment. Standaard worden uitvoeringen geregistreerd bij een experiment met de naam Default
dat automatisch voor u wordt gemaakt. Als u het experiment wilt configureren waaraan u wilt werken, gebruikt u de MLflow-opdracht mlflow.set_experiment()
.
experiment_name = 'experiment_with_mlflow'
mlflow.set_experiment(experiment_name)
Tip
Wanneer u taken indient met behulp van de Azure Machine Learning SDK, kunt u de naam van het experiment instellen met behulp van de eigenschap experiment_name
wanneer u deze indient. U hoeft deze niet te configureren voor uw trainingsscript.
Trainingsuitvoering starten
Nadat u de naam van het MLflow-experiment hebt ingesteld, kunt u de trainingsuitvoering starten met start_run()
. Gebruik vervolgens log_metric()
om de MLflow-logboekregistratie-API te activeren en te beginnen met het vastleggen van de metrische gegevens voor de training.
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")
Voor meer informatie over het vastleggen van metrische gegevens, parameters en artefacten in een uitvoering met behulp van de MLflow-weergave Logboekregistratie en weergave van metrische gegevens.
Uitvoeringen bijhouden die worden uitgevoerd op Azure Machine Learning
VAN TOEPASSING OP: Python SDK azureml v1
Met externe uitvoeringen (taken) kunt u uw modellen op een robuustere en terugkerende manier trainen. Ze kunnen ook gebruikmaken van krachtigere berekeningen, zoals Machine Learning Compute-clusters. Zie Rekendoelen gebruiken voor modeltraining voor meer informatie over verschillende rekenopties.
Wanneer u uitvoeringen verzendt, configureert Azure Machine Learning MLflow automatisch om te werken met de werkruimte waarin de uitvoering wordt uitgevoerd. Dit betekent dat de MLflow-tracerings-URI niet hoeft te worden geconfigureerd. Bovendien worden experimenten automatisch benoemd op basis van de details van de indiening van het experiment.
Belangrijk
Wanneer u trainingstaken verzendt naar Azure Machine Learning, hoeft u de MLflow-tracerings-URI niet te configureren voor uw trainingslogica, omdat deze al voor u is geconfigureerd. U hoeft de naam van het experiment niet te configureren in uw trainingsroutine.
Een trainingsroutine maken
Eerst moet u een src
submap maken en een bestand maken met uw trainingscode in een train.py
bestand in de src
submap. Al uw trainingscode gaat naar de submap van src
, met inbegrip van train.py
.
De trainingscode wordt opgehaald uit dit MLflow-voorbeeld in de Azure Machine Learning-voorbeeldopslagplaats.
Kopieer deze code naar het bestand:
# 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()
Het experiment configureren
U moet Python gebruiken om het experiment in te dienen bij Azure Machine Learning. Configureer in een notebook- of Python-bestand uw reken- en trainingsomgeving met de Environment
klasse.
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
Bouw ScriptRunConfig
vervolgens met uw externe berekening als het rekendoel.
from azureml.core import ScriptRunConfig
src = ScriptRunConfig(source_directory="src",
script=training_script,
compute_target="<COMPUTE_NAME>",
environment=env)
Gebruik met deze configuratie voor berekenings- en trainingsuitvoering de Experiment.submit()
methode om een uitvoering te verzenden. Met deze methode wordt de MLflow-tracerings-URI automatisch ingesteld en wordt de logboekregistratie van MLflow naar uw werkruimte doorsturen.
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)
Metrische gegevens en artefacten weergeven in uw werkruimte
De metrische gegevens en artefacten uit MLflow-logboekregistratie worden bijgehouden in uw werkruimte. Als u ze op elk gewenst moment wilt bekijken, gaat u naar uw werkruimte en zoekt u het experiment op naam in uw werkruimte in Azure Machine Learning-studio. Of voer de onderstaande code uit.
Metrische gegevens voor uitvoering ophalen met behulp van 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)
Als u de artefacten van een uitvoering wilt bekijken, kunt u MlFlowClient.list_artifacts() gebruiken
client.list_artifacts(run_id)
Als u een artefact naar de huidige map wilt downloaden, kunt u MLFlowClient.download_artifacts() gebruiken
client.download_artifacts(run_id, "helloworld.txt", ".")
Voor meer informatie over het ophalen van informatie uit experimenten en uitvoeringen in Azure Machine Learning met behulp van de MLflow-weergave Experimenten beheren en uitvoeringen met MLflow.
Vergelijken en query's uitvoeren
Vergelijk en voer een query uit op alle MLflow-uitvoeringen in uw Azure Machine Learning-werkruimte met de volgende code. Meer informatie over het uitvoeren van query's met 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)
Automatische logboekregistratie
Met Azure Machine Learning en MLFlow kunnen gebruikers automatisch metrische gegevens, modelparameters en modelartefacten registreren bij het trainen van een model. Er worden verschillende populaire machine learning-bibliotheken ondersteund.
Als u automatische logboekregistratie wilt inschakelen , voegt u de volgende code in vóór uw trainingscode:
mlflow.autolog()
Meer informatie over automatische logboekregistratie met MLflow.
Modellen beheren
Registreer en volg uw modellen met het Azure Machine Learning-modelregister, dat het MLflow-modelregister ondersteunt. Azure Machine Learning-modellen zijn afgestemd op het MLflow-modelschema, zodat u deze modellen eenvoudig kunt exporteren en importeren in verschillende werkstromen. De MLflow-gerelateerde metagegevens, zoals de uitvoerings-id, worden ook bijgehouden met het geregistreerde model voor traceerbaarheid. Gebruikers kunnen trainingsuitvoeringen verzenden, registreren en modellen implementeren die zijn geproduceerd op basis van MLflow-uitvoeringen.
Zie MLflow-modellen implementeren en registreren als u uw model met productieklaar wilt implementeren en registreren in één stap.
Voer de volgende stappen uit om een model te registreren en weer te geven vanuit een uitvoering:
Zodra een uitvoering is voltooid, roept u de
register_model()
methode aan.# 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")
Bekijk het geregistreerde model in uw werkruimte met Azure Machine Learning-studio.
In het volgende voorbeeld heeft het geregistreerde model
my-model
MLflow-traceringsmetagegevens getagd.Selecteer het tabblad Artefacten om alle modelbestanden weer te geven die zijn afgestemd op het MLflow-modelschema (conda.yaml, MLmodel, model.pkl).
Selecteer MLmodel om het MLmodel-bestand te zien dat is gegenereerd door de uitvoering.
Resources opschonen
Als u niet van plan bent om de vastgelegde metrische gegevens en artefacten in uw werkruimte te gebruiken, is de mogelijkheid om ze afzonderlijk te verwijderen momenteel niet beschikbaar. Verwijder in plaats daarvan de resourcegroep die het opslagaccount en de werkruimte bevat, zodat er geen kosten in rekening worden gebracht:
Selecteer Resourcegroepen links in Azure Portal.
Selecteer de resourcegroep die u eerder hebt gemaakt uit de lijst.
Selecteer Resourcegroep verwijderen.
Voer de naam van de resourcegroup in. Selecteer daarna Verwijderen.
Voorbeeldnotebooks
De MLflow met Azure Machine Learning-notebooks laten zien en uitbreiden op concepten die in dit artikel worden gepresenteerd. Zie ook de communitygestuurde opslagplaats, AzureML-Examples.
Volgende stappen
- Modellen implementeren met MLflow.
- Bewaak uw productiemodellen voor gegevensdrift.
- Azure Databricks-uitvoeringen bijhouden met MLflow.
- Beheer uw modellen.