Suivre les métriques avec MLflow

Effectué

Lorsque vous entraînez un modèle avec un script, vous pouvez inclure MLflow dans les scripts pour suivre tous les paramètres, métriques et artefacts. Lorsque vous exécutez le script en tant que travail dans Azure Machine Learning, vous pouvez passer en revue tous les paramètres et sorties d’entrée pour chaque exécution.

Comprendre MLflow

MLflow est une plateforme open source conçue pour gérer le cycle de vie complet du Machine Learning. Comme il s’agit d’open source, il peut être utilisé lors de l’entraînement de modèles sur différentes plateformes. Ici, nous allons découvrir comment intégrer MLflow aux travaux Azure Machine Learning.

Il existe deux options pour suivre les travaux de Machine Learning avec MLflow :

  • Activer la journalisation automatique à l’aide de mlflow.autolog()
  • Utiliser des fonctions de journalisation pour suivre les métriques personnalisées à l’aide de mlflow.log_*

Avant de pouvoir utiliser l’une de ces options, vous devez configurer l’environnement pour utiliser MLflow.

Inclure MLflow dans l’environnement

Pour utiliser MLflow pendant une tâche de formation, les packages mlflow et azureml-mlflow pip doivent être installés sur le nœud de calcul exécutant le script. Par conséquent, vous devez inclure ces deux packages dans l’environnement. Vous pouvez créer un environnement en faisant référence à un fichier YAML qui décrit l’environnement Conda. Dans le cadre de l’environnement Conda, vous pouvez inclure ces deux packages.

Par exemple, dans cet environnement, mlflow et azureml-mlflow sont installés à l’aide de pip :

name: mlflow-env
channels:
  - conda-forge
dependencies:
  - python=3.10
  - pip
  - pip:
    - numpy
    - pandas
    - scikit-learn
    - matplotlib
    - mlflow
    - azureml-mlflow

Une fois l’environnement défini et inscrit, veillez à y faire référence lors de l’envoi d’un travail.

Activer la journalisation automatique

Lorsque vous utilisez une bibliothèque courante pour l'apprentissage automatique, vous pouvez activer la journalisation automatique dans MLflow. L’autologging journalise les paramètres, les métriques et les artefacts de modèle sans que personne n’ait besoin de spécifier ce qui doit être journalisé.

La journalisation automatique est prise en charge pour les bibliothèques suivantes :

  • Scikit-learn
  • TensorFlow et Keras
  • XGBoost
  • LightGBM
  • Spark
  • Fastai
  • Pytorch

Pour activer l’autologging, ajoutez le code suivant à votre script d’entraînement :

import mlflow

mlflow.autolog()

Enregistrez les métriques avec MLflow

Dans votre script d’entraînement, vous pouvez décider de la métrique personnalisée que vous souhaitez journaliser avec MLflow.

Selon le type de valeur que vous souhaitez journaliser, utilisez la commande MLflow pour stocker la métrique avec l’exécution de l’expérience :

  • mlflow.log_param(): Enregistre un paramètre clé-valeur unique. Utilisez cette fonction pour un paramètre d’entrée que vous souhaitez journaliser.
  • mlflow.log_metric(): Enregistrer une métrique clé-valeur unique. La valeur doit être un nombre. Utilisez cette fonction pour toute sortie que vous souhaitez stocker avec l’exécution.
  • mlflow.log_figure(): Enregistre directement une figure Matplotlib en tant qu'artefact. Utilisez cette fonction pour journaliser les tracés sans les enregistrer sur le disque en premier.
  • mlflow.log_image(): Enregistre un objet image Numpy ou PIL en tant qu'artefact. Utilisez cette fonction pour enregistrer directement les images sans les enregistrer sur le disque.

Pour ajouter MLflow à un script d’entraînement existant, vous pouvez ajouter le code suivant :

import mlflow

reg_rate = 0.1
mlflow.log_param("Regularization rate", reg_rate)

Conseil / Astuce

Pour obtenir une vue d’ensemble complète de l’utilisation de MLflow Tracking, lisez la documentation MLflow.

Envoi du travail

Enfin, vous devez soumettre le script d’entraînement en tant que travail dans Azure Machine Learning. Lorsque vous utilisez MLflow dans un script d’entraînement, tous les paramètres, métriques et artefacts suivis sont stockés avec l’exécution du travail. Vous pouvez les consulter pour chaque exécution après avoir soumis la tâche.

Vous configurez la tâche comme d’habitude. Vous devez uniquement vous assurer que l’environnement auquel vous faites référence dans le travail inclut les packages nécessaires, et le script décrit les métriques que vous souhaitez journaliser.