Par Maxime Jumelle
CTO & Co-Founder
Publié le 18 janv. 2022
Catégorie MLOps
MLflow est une plateforme open source qui permet de gérer le cycle de vie des modèles de Machine Learning. En particulier, grâce à MLflow, les modèles qui ont été entraînés à une date spécifique ainsi que les hyper-paramètres associés pourront être stockés, monitorés et réutilisés de manière efficace.
Un des principaux avantages est l'intégration avec des frameworks Python existants comme Scikit-Learn, XGBoost ou encore TensorFlow, rendant l'outil utilisable dans de nombreuses situations. De plus, son API Python est simple à utiliser, permettant de l'intégrer rapidement dans des projets existants.
Rappelons tout d'abord le workflow en Data Science : la première étape de collecte des données et suivie d'une étape de transformation des données, puis de la modélisation pour maximiser une métrique de performance qui jugera de la qualité de l'algorithme employé.
Être productif en Data Science n'est pas de tout repos pour les raisons suivantes.
À lire aussi : découvrez notre formation MLOps
Beaucoup de pain points que MLflow va justement chercher à résoudre.
MLflow cherche à améliorer la productivité en offrant la possibilité de ré-entraîner, réutiliser et déployer des modèles en agissant sur un point central (plateforme MLflow) où tout l'historique du modèle sera conservé.
Tout d'abord, MLflow est language-agnostic, c'est-à-dire que les modèles peuvent être codés en Python, R, Java ou encore C++ et envoyés sur MLflow. Ensuite, il n'y a aucun pré-requis concernant la librairie de Machine Learning : que vous soyez adeptes de scikit-learn
ou de tensorflow
, tout sera compatible.
Quatre composants résident sous MLflow.
Pour installer MLflow en local, il suffit juste d'exécuter pip install mlflow
.
Dans cet exemple Python, nous chargeons des fichiers CSV qui correspondent aux sous-ensembles d'entraînement et de test.
1import os 2import numpy as np 3import pandas as pd 4 5import mlflow 6import mlflow.sklearn # Wrapper pour scikit-learn 7 8from lightgbm.sklearn import LGBMClassifier 9from sklearn.metrics import f1_score 10 11X_train = pd.read_csv("~/data/X_train.csv") 12X_test = pd.read_csv("~/data/X_test.csv") 13y_train = pd.read_csv("~/data/y_train.csv").values.flatten() 14y_test = pd.read_csv("~/data/y_test.csv").values.flatten()
Ensuite, nous pouvons définir l'URL de tracking MLflow avec set_tracking_uri
, puis définir l'expérience avec set_experiment
. Une expérience MLflow correspond à tous les modèles pour un même projet.
Ensuite, nous pouvons démarrer une exécution avec start_run
: tout ce qui sera produit (configuration, métriques, modèle, etc) sera associé à cette exécution, améliorant grandement le tracking.
1# Identification de l'interface MLflow 2mlflow.set_tracking_uri("file://" + os.path.expanduser('~/mlruns')) 3# Identification du nom du projet MLflow 4mlflow.set_experiment("experiment_blent") 5 6with mlflow.start_run() as run: 7 model = LGBMClassifier(**hyp_params, objective="binary", verbose=-1) 8 model.fit(X_train, y_train) 9 10 # On calcule le score du modèle sur le test 11 score = f1_score(y_test, model.predict(X_test)) 12 13 mlflow.log_params(hyp_params) 14 mlflow.log_metric("f1", score) 15 16 print(mlflow.get_artifact_uri()) 17 mlflow.sklearn.log_model(model, "model")
En exécutant ce code, nous avons déclenché un run avec mlflow.start_run()
. L'intérêt d'utiliser with
est qu'en sortant de l'indentation, le run MLflow sera automatiquement terminé. Nous allons envoyer plusieurs informations vers MLflow.
log_params
.log_metric
.scikit-learn
avec log_model
.En visualisant l'interface web MLflow, nous voyons le modèle apparaître avec les informations associées.
En cliquant sur la date d'exécution, nous avons accès à plus de détails ainsi qu'aux fichiers stockés (ici le modèle), que l'on appelle des artifacts.
MLflow peut également stocker des images, notamment des graphiques qui permettront de contrôler la qualité d'un modèle de Machine Learning.
Le Model Registry (registre de modèles) est un composant de MLflow qui permet de gérer des versions de modèles de Machine Learning, en proposant également des stages (états).
À lire aussi : découvrez notre formation MLOps
C'est un composant particulièrement utile pour gérer le cycle de vie des modèles, car le cycle staging, production et archive est couramment appliqué lorsque des modèles sont mis à jour régulièrement. Sous MLflow, l'onglet Models permet d'afficher tous les modèles enregistrés.
Là-aussi, il est très facile d'interagir avec MLflow en Python.
1# On envoie le modèle vers le registry 2result = mlflow.register_model( 3 "runs:/{}/artifacts/model".format(run.run_id), "model_blent" 4) 5print(result.version) 6 7# On tag le modèle en verison staging 8client = MlflowClient() 9client.transition_model_version_stage( 10 name="model_blent", version=int(version), stage="Staging" 11)
De manière générale, MLflow peut être utilisé aussi bien dans les environnements de production, qu'en développement local. En effet, nous avons vu qu'il est très facile d'installer MLflow en local, ce qui permet de l'utiliser dès la création d'un projet jusqu'à sa mise en production.
De plus en plus de Data Scientists utilisent MLflow, que ce soit pour historiser les itérations du cycle Machine Learning, ou pour utiliser le registre de modèles en environnement de production. Cet outil devient indispensable dans les entreprises qui souhaitent améliorer leur efficacité opérationnelle sur la gestion des projets ML.
La formation MLOps de Blent utilise MLflow en tant que plateforme de tracking et de registre de modèles de Data Science. Elle est utilisée dans différents environnements, en pré-production et en production.
Cette formation couvre également de nombreux aspects de l'approche MLOps, comme la création de projets code source adaptés à la Data Science, l'automatisation de pipelines de Machine Learning ou l'exposition de modèles scalables sur Kubernetes.
Vous souhaitez vous former au MLOps ?
Articles similaires
6 oct. 2021
MLOps
Maxime Jumelle
CTO & Co-Founder
Lire l'article
11 févr. 2021
MLOps
Maxime Jumelle
CTO & Co-Founder
Lire l'article
9 déc. 2020
MLOps
Maxime Jumelle
CTO & Co-Founder
Lire l'article
60 rue François 1er
75008 Paris
Blent est une plateforme 100% en ligne pour se former aux métiers Tech & Data.
Organisme de formation n°11755985075.
Data Engineering
À propos
Gestion des cookies
© 2023 Blent.ai | Tous droits réservés