Cours
Le MLOps est une brique essentielle du machine learning : il automatise l’entraînement et le déploiement des modèles. Cette automatisation accélère le cycle de développement et de mise en production tout en réduisant les risques d’erreur. Le MLOps permet aussi de surveiller les performances des modèles et d’identifier en amont les problèmes à corriger en production.
En 2022, l’écosystème MLOps regroupe de nombreux outils et services qui aident les organisations à automatiser la construction, l’entraînement et le déploiement de modèles de machine learning. Conçus pour fonctionner ensemble, ils rendent les processus MLOps plus efficaces et plus faciles à piloter. MLflow fait partie de ces outils incontournables — et nous allons l’explorer dans cet article.
MLflow est une plateforme open source couvrant tout le cycle de vie du machine learning. Elle permet aux data scientists de suivre leurs expériences, de reproduire les exécutions et d’exposer leurs modèles via des endpoints. Dans cet article, nous verrons en détail ce qu’est MLflow et comment exploiter cette plateforme open source pour suivre et déployer vos expériences de machine learning.
Pour aller plus loin sur le MLOps, consultez notre tutoriel Machine Learning, pipelines, déploiement et MLOps.
Qu’est-ce que MLflow
MLflow est une plateforme open source pour gérer de bout en bout le cycle de vie du machine learning. Elle offre un espace centralisé pour suivre les expériences, partager le code et les modèles, et déployer ces derniers en production. MLflow inclut également plusieurs algorithmes et packages pour les principaux outils de ML. Quatre fonctionnalités clés la composent :
- MLflow Tracking. Suit les expériences de machine learning pour enregistrer, analyser et comparer paramètres et résultats.
- MLflow Projects. Emballe le code ML dans un format réutilisable et reproductible, à partager entre data scientists ou à transférer vers la production.
- MLflow Models. Gère et déploie des modèles issus de diverses bibliothèques ML vers plusieurs plateformes de service et d’inférence, comme Amazon Sagemaker.
- MLflow Model Registry. Fournit un référentiel centralisé pour gérer collaborativement tout le cycle de vie d’un modèle MLflow, y compris le versioning, les transitions d’états et les annotations.

Source de l’image : https://www.databricks.com/wp-content/uploads/2021/02/mlflow-components2.png
MLflow n’est lié à aucune bibliothèque en particulier. Toutes les fonctions étant accessibles via une API REST et une interface en ligne de commande, vous pouvez l’utiliser avec n’importe quelle bibliothèque de ML et dans n’importe quel langage. Le projet intègre des API Python, R et Java pour plus de commodité.
Concepts clés de MLflow
MLflow Tracking
Lors de l’exécution de code de machine learning, le composant MLflow Tracking fournit une API et une interface graphique (UI) pour journaliser les paramètres, versions de code, métriques et fichiers de sortie. Vous pouvez ensuite visualiser ces enregistrements. Grâce à MLflow Tracking, vous pouvez aussi journaliser et interroger vos expériences via les API Python, REST, R et Java.
MLflow Tracking s’organise autour de runs. Chaque run enregistre les informations et métadonnées essentielles : heures de début et de fin, fichier source, paramètres, artefacts, métriques, tags, etc.
Vous pouvez journaliser vos runs via les API Python, R ou Java de MLflow depuis n’importe quel environnement d’exécution : un programme autonome, une instance cloud distante ou un notebook interactif.
Vous pouvez également regrouper des runs au sein d’expériences, c’est-à-dire des collections de runs réunis pour un objectif précis. Vous pouvez créer une expérience via l’interface en ligne de commande (CLI), la méthode mlflow.create_experiment() ou l’API REST. Les utilisateurs peuvent aussi créer des expériences depuis l’UI MLflow.
Selon vos besoins, les runs peuvent être enregistrés localement dans des fichiers, envoyés vers une base compatible SQLAlchemy, ou vers un serveur de tracking distant. Par défaut, l’API Python MLflow journalise localement dans le répertoire mlruns à l’endroit où votre programme s’exécute. Vous pouvez ensuite visualiser ces runs en lançant l’application mlflow ui.

Source de l’image : https://mlflow.org/docs/latest/_images/scenario_1.png
MLflow Projects
Les MLflow Projects offrent une façon structurée, réutilisable et reproductible d’organiser votre code de machine learning. Ils s’emploient avec toute bibliothèque ML et tout environnement de développement. Chaque projet est un répertoire contenant un fichier MLproject décrivant l’environnement et les paramètres, ainsi qu’un ensemble de fichiers de code ML.
MLflow prend actuellement en charge les types d’environnements de projet suivants :
- environnement Conda,
- environnement Virtualenv,
- conteneur Docker,
- environnement système.
En ajoutant un fichier MLproject (un simple fichier YAML), vous obtenez un contrôle plus fin sur le projet MLflow. Ci-dessous, un exemple de fichier MLproject :

Source : https://mlflow.org/docs/latest/projects.html#overview
Si le projet ne contient pas de fichier MLproject, MLflow applique des conventions par défaut, par exemple :
- le nom du projet est celui du répertoire ;
- l’environnement Conda est utilisé et défini dans le fichier conda.yaml, présent dans le même répertoire ;
- tout fichier .py ou .sh peut servir de point d’entrée ;
- par défaut, les points d’entrée n’ont pas de paramètres.

MLflow Models
Un MLflow Model est un format standardisé pour empaqueter des modèles de machine learning afin de les utiliser ensuite dans divers outils en aval, qu’il s’agisse d’un service temps réel via API REST ou d’un traitement par lots. MLflow Model est l’un des composants clés de MLflow. Il définit un protocole permettant d’enregistrer un modèle sous plusieurs « flavors », chacune étant comprise par un ensemble d’outils de déploiement.
Concrètement, un MLflow Model est un répertoire qui regroupe des fichiers arbitraires et un fichier MLmodel à la racine, pouvant définir plusieurs flavors sous lesquelles le modèle peut être interprété. L’ensemble constitue le MLflow Model.
La force des MLflow Models réside dans les flavors, qui servent de standard pour que les outils de déploiement comprennent le modèle. Les développeurs peuvent ainsi créer des outils interopérables avec des modèles issus de n’importe quelle bibliothèque ML, sans intégration spécifique à chaque couple outil/bibliothèque. Un flavor « standard » pris en charge par tous les outils de déploiement intégrés à MLflow est « Python Function », qui décrit comment exécuter le modèle comme une fonction Python.
Exemple de répertoire MLflow Models avec le flavor Scikit-learn :

Source de l’image : https://mlflow.org/docs/latest/models.html
MLflow prend en charge nativement les bibliothèques suivantes (comme flavors de modèles) :
- Scikit-learn
- TensorFlow
- PyTorch
- Keras
- Spark MLlib
- XGBoost
- LightGBM
- CatBoost
- Spacy
- Fastai
- Statsmodels
- Prophet
- Fonction Python (générique)
- Fonction R (générique)
- Voir la liste complète ici
MLflow Model Registry
MLflow Model Registry est un référentiel central pour stocker et versionner des modèles ML. Il permet de suivre la lignée des modèles, de les comparer et de les déployer.
Le composant Model Registry propose un ensemble d’API et une interface utilisateur pour gérer collectivement tout le cycle de vie d’un modèle MLflow.
Pour accéder au registre des modèles via l’interface utilisateur (UI) ou l’API, l’utilisation d’un backend store basé sur une base de données est requise.
Enregistrer un modèle via l’UI MLflow :

Source de l’image : https://mlflow.org/docs/latest/model-registry.html#concepts
MLflow Pipelines (expérimental)
MLflow Pipelines est une fonctionnalité récente, encore en mode expérimental.
C’est un cadre d’opinions pour structurer les workflows MLOps afin de simplifier et standardiser le développement et l’industrialisation des applications de machine learning. En facilitant l’adoption des bonnes pratiques pour produire des livrables prêts pour la production, MLflow Pipelines libère du temps aux data scientists pour se concentrer sur la qualité des modèles.
MLflow Pipelines permet aussi aux ingénieurs ML et aux équipes DevOps d’intégrer ces modèles dans des applications et de les déployer en production en toute fluidité.
MLflow Pipelines propose des templates de pipelines de qualité production pour des cas types (régression, classification) et des opérations MLOps (scoring par lots). Les pipelines sont structurés comme des dépôts git avec des fichiers de configuration en YAML et du code Python. Cette approche déclarative réduit le code passe-partout.
MLflow Pipelines implémente également un exécuteur « cache-aware » pour les étapes du pipeline, n’exécutant une étape que si le code ou la configuration correspondante a changé. Les data scientists, ingénieurs ML et équipes DevOps peuvent ainsi itérer très rapidement dans leurs domaines respectifs. Enfin, l’exécution et l’inspection des pipelines s’effectuent via des API et une interface en ligne de commande (CLI) MLflow.
|
Déployer des modèles de machine learning en production semble simple avec les outils modernes, mais se solde souvent par une déception quand les performances en production sont inférieures à celles en développement. Pour apprendre à concevoir des workflows de machine learning en Python qui tiennent dans la durée, découvrez notre cours Designing Machine Learning Workflows in Python. |
MLflow vs Kubeflow
Maintenant que vous savez ce qu’est MLflow, abordons une question fréquente : quelle est la différence entre MLflow et Kubeflow ?
D’abord, qu’est-ce que Kubeflow ?
Kubeflow est un projet open source qui regroupe un ensemble d’outils et de frameworks sélectionnés. Son objectif principal est de faciliter le développement, le déploiement et la gestion de workflows de machine learning portables et scalables.
Kubeflow s’appuie sur Kubernetes, une plateforme open source pour exécuter et orchestrer des conteneurs. Kubernetes est conçu pour fonctionner de manière cohérente sur différents environnements, ce qui est déterminant pour le fonctionnement de Kubeflow.
Pour en savoir plus sur Kubeflow, lisez notre tutoriel détaillé sur Kubeflow.
En comparant MLflow et Kubeflow, leur seul point commun est d’être open source, mais ils répondent à des besoins très différents. Kubeflow est un système d’orchestration de conteneurs pour développer, déployer et gérer des applications de machine learning sur Kubernetes. MLflow, de son côté, est une bibliothèque Python pour le suivi d’expériences et le versioning/déploiement de modèles, indépendamment de l’environnement d’orchestration.
Tutoriel MLflow
Utiliser MLflow est extrêmement simple. Il suffit de quelques lignes pour intégrer la journalisation MLflow à un code existant. Commencez par installer MLflow via pip.
# install mlflow
pip install mlflow
Créons un script Python minimal pour entraîner une régression logistique et journaliser une métrique et le modèle avec MLflow. Il s’agit d’un exemple officiel de MLflow, reproduit ici.
import numpy as np
from sklearn.linear_model import LogisticRegression
import mlflow
import mlflow.sklearn
if __name__ == "__main__":
X = np.array([-2, -1, 0, 1, 2, 1]).reshape(-1, 1)
y = np.array([0, 0, 1, 1, 1, 0])
lr = LogisticRegression()
lr.fit(X, y)
score = lr.score(X, y)
print("Score: %s" % score)
mlflow.log_metric("score", score)
mlflow.sklearn.log_model(lr, "model")
print("Model saved in run %s" % mlflow.active_run().info.run_uuid)
RÉSULTAT :
>>> Score: 0.6666666666666666
>>> Model saved in run 9def2bd1c55b4f0985aa5c050b8f71cd
Lancez l’UI MLflow en tapant « mlflow ui » dans le terminal, depuis le même répertoire que votre fichier Python.
mlflow ui
Puis rendez-vous sur https://localhost:5000 : vous obtiendrez la page suivante :

Vous voyez ici un seul enregistrement : le modèle entraîné et journalisé par le script ci-dessus. Cliquez sur son nom pour afficher la page détaillée :

|
MONTEZ EN COMPÉTENCES DÈS MAINTENANT ! INSCRIVEZ-VOUS AUJOURD’HUI au Machine Learning Scientist with Python Maîtrisez les compétences essentielles pour décrocher un poste de machine learning scientist. Enrichissez votre maîtrise de Python avec la boîte à outils nécessaire pour l’apprentissage supervisé, non supervisé et le deep learning. Vous apprendrez :
|
Conclusion
MLflow est une plateforme open source et un excellent outil pour piloter tout le cycle de vie du machine learning. Créée par Databricks, à l’origine d’Apache Spark, elle est conçue pour fonctionner avec n’importe quelle bibliothèque, algorithme ou langage.
MLflow offre de nombreux avantages aux développeurs ML et aux data scientists. Elle centralise le suivi des expériences et la gestion des projets ML — un atout pour la collaboration, car chacun peut voir le travail des autres et comparer les résultats.
MLflow peut automatiser le workflow, de la préparation des données à l’entraînement jusqu’au déploiement. Vous gagnez du temps, facilitez la reproductibilité et optimisez vos modèles.
En bref, MLflow est un outil précieux pour gérer vos projets de machine learning. Il vous aide à suivre vos expériences, automatiser vos processus et améliorer vos modèles. Si vous travaillez sur des projets ML, prenez le temps d’évaluer MLflow.
|
Si vous souhaitez monter en compétences et maîtriser les fondamentaux du machine learning et leurs applications en entreprise, découvrez notre cours Machine Learning for Business sur DataCamp. |