Delen via


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.

  • Maak een Azure Machine Learning-werkruimte.

  • 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-mlextensie (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 mlextensie 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.

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.

  1. 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:

    1. Ga naar Azure Machine Learning-studio
    2. Klik op de rechterbovenhoek van de pagina -> Configuratiebestand downloaden.
    3. Sla het bestand config.json op in dezelfde map waaraan u werkt.
  2. 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:

  1. 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")
    
  2. 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.

    register-mlflow-model

  3. Selecteer het tabblad Artefacten om alle modelbestanden weer te geven die zijn afgestemd op het MLflow-modelschema (conda.yaml, MLmodel, model.pkl).

    model-schema

  4. Selecteer MLmodel om het MLmodel-bestand te zien dat is gegenereerd door de uitvoering.

    MLmodel-schema

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:

  1. Selecteer Resourcegroepen links in Azure Portal.

    Verwijderen in Azure Portal

  2. Selecteer de resourcegroep die u eerder hebt gemaakt uit de lijst.

  3. Selecteer Resourcegroep verwijderen.

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