Metrische gegevens bijhouden met MLflow
Wanneer u een model traint met een script, kunt u MLflow opnemen in de scripts om parameters, metrische gegevens en artefacten bij te houden. Wanneer u het script uitvoert als een taak in Azure Machine Learning, kunt u alle invoerparameters en uitvoer voor elke uitvoering controleren.
Meer informatie over MLflow
MLflow is een opensource-platform dat is ontworpen om de volledige levenscyclus van machine learning te beheren. Omdat het open source is, kan het worden gebruikt bij het trainen van modellen op verschillende platforms. Hier verkennen we hoe we MLflow kunnen integreren met Azure Machine Learning-taken.
Er zijn twee opties om machine learning-taken bij te houden met MLflow:
- Automatisch aanmelden inschakelen met
mlflow.autolog()
- Logboekregistratiefuncties gebruiken om aangepaste metrische gegevens bij te houden met
mlflow.log_*
Voordat u een van deze opties kunt gebruiken, moet u de omgeving instellen voor het gebruik van MLflow.
MLflow opnemen in de omgeving
Als u MLflow wilt gebruiken tijdens de trainingstaak, moeten de mlflow
en azureml-mlflow
pip-pakketten worden geïnstalleerd op de berekening die het script uitvoert. Daarom moet u deze twee pakketten in de omgeving opnemen. U kunt een omgeving maken door te verwijzen naar een YAML-bestand dat de Conda-omgeving beschrijft. Als onderdeel van de Conda-omgeving kunt u deze twee pakketten opnemen.
In deze aangepaste omgeving mlflow
en azureml-mlflow
worden deze bijvoorbeeld geïnstalleerd met behulp van pip:
name: mlflow-env
channels:
- conda-forge
dependencies:
- python=3.8
- pip
- pip:
- numpy
- pandas
- scikit-learn
- matplotlib
- mlflow
- azureml-mlflow
Zodra de omgeving is gedefinieerd en geregistreerd, moet u ernaar verwijzen wanneer u een taak indient.
Automatische logboeken inschakelen
Wanneer u met een van de algemene bibliotheken voor machine learning werkt, kunt u automatisch aanmelden in MLflow inschakelen. Logboekparameters, metrische gegevens en modelartefacten automatisch vastleggen zonder dat iemand hoeft op te geven wat moet worden vastgelegd.
Autologging wordt ondersteund voor de volgende bibliotheken:
- Scikit-learn
- TensorFlow en Keras
- XGBoost
- LightGBM
- Spark
- Fastai
- Pytorch
Als u automatisch logboeken wilt inschakelen, voegt u de volgende code toe aan uw trainingsscript:
import mlflow
mlflow.autolog()
Metrische gegevens vastleggen met MLflow
In uw trainingsscript kunt u bepalen welke aangepaste metrische gegevens u wilt registreren met MLflow.
Afhankelijk van het type waarde dat u wilt registreren, gebruikt u de MLflow-opdracht om de metrische gegevens op te slaan met de uitvoering van het experiment:
mlflow.log_param()
: Log single key-value parameter. Gebruik deze functie voor een invoerparameter die u wilt registreren.mlflow.log_metric()
: Metrische gegevens met één sleutelwaarde vastleggen. De waarde moet een getal zijn. Gebruik deze functie voor uitvoer die u wilt opslaan met de uitvoering.mlflow.log_artifact()
: Een bestand vastleggen. Gebruik deze functie voor elke plot die u wilt vastleggen, sla deze eerst op als afbeeldingsbestand.
Als u MLflow wilt toevoegen aan een bestaand trainingsscript, kunt u de volgende code toevoegen:
import mlflow
reg_rate = 0.1
mlflow.log_param("Regularization rate", reg_rate)
Tip
Lees de MLflow-documentatie voor een volledig overzicht van het gebruik van MLflow Tracking.
De taak verzenden
Ten slotte moet u het trainingsscript indienen als een taak in Azure Machine Learning. Wanneer u MLflow in een trainingsscript gebruikt en als taak uitvoert, worden alle bijgehouden parameters, metrische gegevens en artefacten opgeslagen met de taakuitvoering.
U configureert de taak zoals gebruikelijk. U hoeft er alleen voor te zorgen dat de omgeving waarnaar u in de taak verwijst de benodigde pakketten bevat en het script beschrijft welke metrische gegevens u wilt registreren.