Mlflow a été présenté à l'occasion du Spark+AI Summit 2018. Il s'agit d'une plateforme open source développée par Databricks permettant de gérer le cycle de vie des modèles de Machine Learning.
MLflow permet aux Machine Learning Engineer, comme aux utilisateurs moins techniques, de suivre les informations liées à l’entraînement et à la mise en production des modèles de machine learning. Un autre des avantages de cette plateforme est qu’elle intègre des frameworks reconnus en machine learning tels que Scikit-Learn, PyTorch ou encore TensorFlow.
Problématiques d'un projet Machine Learning
La réalisation d’un projet de Machine Learning (ML) est compliquée pour les équipes en science des données. Elles sont confrontées à plusieurs défis.
Tout d’abord, il y a de nombreux outils et versions différents utilisés depuis la préparation des données jusqu’à l’entraînement des modèles. Cela peut causer des problèmes de compatibilité et de gestion.
Ensuite, il est difficile de suivre et de comprendre comment les modèles de ML sont entraînés en raison de la multitude de paramètres possibles. Que vous travailliez seul ou en équipe, savoir exactement comment chaque modèle a été entraîné devient un casse-tête.
De plus, il est souvent difficile de réutiliser le code sans des instructions détaillées. Que vous partagiez votre code avec un développeur pour une utilisation en production ou que vous deviez revenir sur un projet antérieur pour le débugger, il est essentiel de pouvoir reproduire les étapes du processus de ML.
Enfin, mettre un modèle en production peut être compliqué en raison des nombreux outils de déploiement et des environnements variés requis, ainsi que le développement en continue du modèle avec l’intégration de nouvelles données. Cela ajoute une couche de complexité supplémentaire au processus global.
Les différents outils de MLflow
Pour répondre à ces principales problématiques, MLflow propose trois composants principaux dans la version gratuite :
MLflow Tracking
MLflow Tracking est un des composants offrant une interface permettant d’enregistrer et de suivre les détails des expériences menées lors du développement et de l’entraînement de modèles de Machine Learning.
Cette fonctionnalité est essentielle pour la gestion des expériences et la documentation des différentes itérations et exécutions d’un modèle. Elle permet d’enregistrer les paramètres, métriques, artefacts et résultats associés à chaque exécution du modèle, fournissant une trace claire et organisée des expérimentations. En utilisant MLflow Tracking, les utilisateurs peuvent enregistrer les différentes versions des modèles et les comparaisons entre les différentes configurations de ces modèles. Les informations enregistrées incluent les hyperparamètres utilisés, les métriques de performance, les détails sur les données d’entraînement, ainsi que les artefacts tels que les visualisations, les fichiers de configuration ou tout autre élément pertinent.
MLflow Projects
MLflow Projects est un composant offrant un moyen de structurer et de déployer des projets de Machine Learning de manière reproductible. Cette fonctionnalité vise à résoudre les problèmes de gestion des dépendances, de reproductibilité et de configuration d’environnement rencontrés fréquemment dans les projets d’apprentissage automatique.
En utilisant MLflow Projects, les utilisateurs peuvent définir et organiser des projets ML sous une structure standardisée. Ils peuvent spécifier les dépendances et les exigences du projet en utilisant un environnement Conda, permettant ainsi de s’assurer que l’environnement d’exécution est correctement configuré. Les projets MLflow peuvent contenir plusieurs points d’entrée, ce qui signifie qu’ils peuvent être exécutés via la ligne de commande en spécifiant différents scénarios d’exécution ou en paramétrant des configurations spécifiques. Cela facilite la gestion des expériences et l’exécution reproductible des modèles.
L’un des avantages majeurs de MLflow Projects est sa capacité à fonctionner en tandem avec d’autres composants de MLflow, notamment MLflow Tracking. Lorsque MLflow Tracking est utilisé dans un projet MLflow, il enregistre les versions du projet exécutées ainsi que tous les paramètres, ce qui simplifie la reproductibilité du code.
MLflow Models
MLflow Models est un composant clé de la plateforme MLflow qui se concentre sur la gestion, la transition et le déploiement des modèles ML. Ce module offre des fonctionnalités pour conditionner et enregistrer les modèles ML dans un format standardisé, appelé « flavors« , afin de faciliter leur déploiement sur une variété de plateformes. Les flavors de MLflow Models représentent différents formats ou environnements dans lesquels un modèle peut être exécuté ou déployé. Par exemple, un modèle peut avoir plusieurs saveurs, telles que TensorFlow, PyTorch, Scikit-Learn, ou des formats spécifiques pour le déploiement sur des serveurs REST, des plateformes cloud (comme Azure ML, AWS SageMaker), ou encore pour l’inférence sur Apache Spark.
MLflow Models permet également de versionner et de gérer différents modèles, enregistrant les métadonnées associées à chaque modèle, y compris les paramètres, les métriques de performance, ainsi que les artefacts et les données d’entraînement. Il fournit une structure claire pour gérer ces versions de modèles, facilitant leur suivi et leur déploiement dans divers environnements. Un aspect important de MLflow Models est sa capacité à rappeler automatiquement les détails du projet et de l’exécution à partir desquels les modèles ont été produits. Cette fonctionnalité contribue à maintenir un lien étroit entre les modèles déployés et leur historique, ce qui est crucial pour comprendre la provenance et la performance des modèles utilisés dans des environnements de production.
Aller plus loin
MLflow est donc devenu un incontournable dans les entreprises en facilitant les différents projets ML tout au long de leurs cycles de vie. Vous pouvez vous former d’avantage à cet outil en intégrant la formation Machine Learning Engineer de DataScientest.