Metrische gegevens bijhouden met MLflow

Voltooid

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.