Experimenten en modellen bijhouden met MLflow
Bijhouden is het proces van het opslaan van relevante informatie over experimenten. In dit artikel leert u hoe u MLflow gebruikt voor het bijhouden van experimenten en uitvoeringen in Azure Machine Learning-werkruimten.
Sommige methoden die beschikbaar zijn in de MLflow-API, zijn mogelijk niet beschikbaar wanneer ze zijn verbonden met Azure Machine Learning. Zie ondersteuningsmatrix voor het uitvoeren van query's en experimenten voor meer informatie over ondersteunde en niet-ondersteunde bewerkingen. U kunt ook meer informatie krijgen over de ondersteunde MLflow-functies in Azure Machine Learning uit het artikel MLflow en Azure Machine Learning.
Notitie
- Zie Azure Databricks ML-experimenten bijhouden met MLflow en Azure Machine Learning om experimenten bij te houden die worden uitgevoerd in Azure Databricks.
- Als u experimenten wilt bijhouden die worden uitgevoerd in Azure Synapse Analytics, raadpleegt u Azure Synapse Analytics ML-experimenten bijhouden met MLflow en Azure Machine Learning.
Vereisten
Een Azure-abonnement hebben met de gratis of betaalde versie van Azure Machine Learning.
Als u Azure CLI- en Python-opdrachten wilt uitvoeren, installeert u Azure CLI v2 en de Azure Machine Learning SDK v2 voor Python. De
ml
extensie voor Azure CLI wordt automatisch geïnstalleerd wanneer u voor het eerst een Azure Machine Learning CLI-opdracht uitvoert.
Installeer het MLflow SDK-pakket
mlflow
en de Azure Machine Learning-invoegtoepassingazureml-mlflow
voor MLflow als volgt:pip install mlflow azureml-mlflow
Tip
U kunt het
mlflow-skinny
pakket gebruiken. Dit is een lichtgewicht MLflow-pakket zonder SQL-opslag-, server-, UI- of data science-afhankelijkheden. Dit pakket wordt aanbevolen voor gebruikers die voornamelijk de MLflow-mogelijkheden voor tracering en logboekregistratie nodig hebben zonder de volledige suite met functies te importeren, inclusief implementaties.Een Azure Machine Learning-werkruimte maken Zie Resources maken die u nodig hebt om aan de slag te gaan om een werkruimte te maken. Controleer de toegangsmachtigingen die u nodig hebt om uw MLflow-bewerkingen uit te voeren in uw werkruimte.
Als u externe tracering wilt uitvoeren of experimenten wilt bijhouden die buiten Azure Machine Learning worden uitgevoerd, configureert u MLflow zodat deze verwijst naar de tracerings-URI van uw Azure Machine Learning-werkruimte. Zie MLflow configureren voor Azure Machine Learning voor meer informatie over het verbinden van MLflow met uw werkruimte.
Het experiment configureren
MLflow organiseert informatie in experimenten en uitvoeringen. Uitvoeringen worden taken genoemd in Azure Machine Learning. Standaard wordt het logboek uitgevoerd naar een automatisch gemaakt experiment met de naam Standaard, maar u kunt configureren welk experiment moet worden bijgehouden.
Voor interactieve training, zoals in een Jupyter-notebook, gebruikt u de opdracht mlflow.set_experiment()
MLflow. Met het volgende codefragment wordt bijvoorbeeld een experiment geconfigureerd:
experiment_name = 'hello-world-example'
mlflow.set_experiment(experiment_name)
De uitvoering configureren
Azure Machine Learning houdt trainingstaken bij in welke MLflow-aanroepen worden uitgevoerd. Gebruik uitvoeringen om alle verwerkingen vast te leggen die door uw taak worden uitgevoerd.
Wanneer u interactief werkt, begint MLflow met het bijhouden van uw trainingsroutine zodra u gegevens opgeeft waarvoor een actieve uitvoering is vereist. Als de functionaliteit voor automatische logboekregistratie van Mlflow bijvoorbeeld is ingeschakeld, wordt het bijhouden van MLflow gestart wanneer u een metrische waarde of parameter aanmeldt of een trainingscyclus start.
Het is echter meestal handig om de uitvoering expliciet te starten, vooral als u de totale tijd voor uw experiment in het veld Duur wilt vastleggen. Als u de uitvoering expliciet wilt starten, gebruikt u mlflow.start_run()
.
Of u nu de uitvoering handmatig start of niet, u moet de uitvoering uiteindelijk stoppen, zodat MLflow weet dat de uitvoering van het experiment is voltooid en de status van de uitvoering kan markeren als Voltooid. Als u een uitvoering wilt stoppen, gebruikt u mlflow.end_run()
.
De volgende code start een uitvoering handmatig en eindigt deze aan het einde van het notebook:
mlflow.start_run()
# Your code
mlflow.end_run()
Het is raadzaam om handmatig te starten, zodat u ze niet vergeet te beëindigen. U kunt het contextbeheerparadigma gebruiken om u te helpen de uitvoering te beëindigen.
with mlflow.start_run() as run:
# Your code
Wanneer u een nieuwe uitvoering start, mlflow.start_run()
kan het handig zijn om de run_name
parameter op te geven, die later wordt omgezet in de naam van de uitvoering in de Azure Machine Learning-gebruikersinterface. Met deze procedure kunt u de uitvoering sneller identificeren.
with mlflow.start_run(run_name="hello-world-example") as run:
# Your code
Automatische aanmelding van MLflow inschakelen
U kunt metrische gegevens, parameters en bestanden handmatig vastleggen met MLflow en u kunt ook vertrouwen op de automatische logboekregistratiemogelijkheden van MLflow. Elk machine learning-framework dat wordt ondersteund door MLflow bepaalt wat automatisch voor u moet worden bijgehouden.
Als u automatische logboekregistratie wilt inschakelen , voegt u de volgende code in vóór uw trainingscode:
mlflow.autolog()
Metrische gegevens en artefacten weergeven in uw werkruimte
De metrische gegevens en artefacten uit MLflow-logboekregistratie worden bijgehouden in uw werkruimte. U kunt ze in Azure Machine Learning-studio bekijken en openen of programmatisch openen via de MLflow SDK.
Metrische gegevens en artefacten weergeven in de studio:
Selecteer op de pagina Taken in uw werkruimte de naam van het experiment.
Selecteer op de pagina details van het experiment het tabblad Metrische gegevens .
Selecteer vastgelegde metrische gegevens om grafieken aan de rechterkant weer te geven. U kunt de grafieken aanpassen door vloeiender te maken, de kleur te wijzigen of meerdere metrische gegevens in één grafiek te tekenen. U kunt ook het formaat van de indeling wijzigen en opnieuw rangschiknen.
Zodra u de gewenste weergave hebt gemaakt, slaat u deze op voor toekomstig gebruik en deelt u deze met uw teamleden via een directe koppeling.
Gebruik mlflow.get_run()om programmatisch toegang te krijgen tot metrische gegevens, parameters en artefacten via de MLflow SDK of om query's uit te voeren op metrische gegevens, parameters en artefacten.
import mlflow
run = mlflow.get_run("<RUN_ID>")
metrics = run.data.metrics
params = run.data.params
tags = run.data.tags
print(metrics, params, tags)
Tip
In het voorgaande voorbeeld wordt alleen de laatste waarde van een gegeven metriek geretourneerd. Als u alle waarden van een bepaalde metrische waarde wilt ophalen, gebruikt u de mlflow.get_metric_history
methode. Zie Parameters en metrische gegevens ophalen uit een uitvoering voor meer informatie over het ophalen van metrische waarden.
Als u artefacten wilt downloaden die u hebt geregistreerd, zoals bestanden en modellen, gebruikt u mlflow.artifacts.download_artifacts().
mlflow.artifacts.download_artifacts(run_id="<RUN_ID>", artifact_path="helloworld.txt")
Zie Query&&compare experimenten en uitvoeringen met MLflow voor meer informatie over het ophalen of vergelijken van gegevens uit experimenten en uitvoeringen in Azure Machine Learning met behulp van MLflow.