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.
import os import numpy as np import pandas as pd import mlflow import mlflow.sklearn # Wrapper pour scikit-learn from lightgbm.sklearn import LGBMClassifier from sklearn.metrics import f1_score X_train = pd.read_csv("~/data/X_train.csv") X_test = pd.read_csv("~/data/X_test.csv") y_train = pd.read_csv("~/data/y_train.csv").values.flatten() y_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.
# Identification de l'interface MLflow mlflow.set_tracking_uri("file://" + os.path.expanduser('~/mlruns')) # Identification du nom du projet MLflow mlflow.set_experiment("experiment_blent") with mlflow.start_run() as run: model = LGBMClassifier(**hyp_params, objective="binary", verbose=-1) model.fit(X_train, y_train) # On calcule le score du modèle sur le test score = f1_score(y_test, model.predict(X_test)) mlflow.log_params(hyp_params) mlflow.log_metric("f1", score) print(mlflow.get_artifact_uri()) 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.
# On envoie le modèle vers le registry result = mlflow.register_model( "runs:/{}/artifacts/model".format(run.run_id), "model_blent" ) print(result.version) # On tag le modèle en verison staging client = MlflowClient() client.transition_model_version_stage( name="model_blent", version=int(version), stage="Staging" )
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
Tu as probablement déjà entendu parler de Kubernetes : c'est un outil extrêmement populaire dans le Cloud et qui est devenu, en quelques années, la référence en terme de déploiement d'applications dans le Cloud. Mais pourquoi (et surtout comment) Kubernetes est devenu la solution incontournable ? Et surtout, pour un Data Scientist, quel est le rapport avec Kubernetes et le Machine Learning ?
Maxime Jumelle
CTO & Co-Founder
Lire l'article
11 févr. 2021
C'est l'un des profils les plus demandés par les entreprises depuis quelques années. Le Machine Learning Engineer s'est imposé comme le profil idéal pour industrialiser et mettre en production des projets Data Science. En plus de ses compétences déjà solides en Machine Learning, il utilise les outils et services du Cloud pour déployer des modèles et des API sur des infrastructures complexes.
Maxime Jumelle
CTO & Co-Founder
Lire l'article
9 déc. 2020
L'AutoML est une pratique courante dans les projets Data Scientist qui consiste à automatiser le création des modèles de Machine Learning. Cela va permettre de gagner du temps puisque cette pratique va tester à la fois plusieurs méthodes de transformations des données, mais aussi plusieurs modèles de Machine Learning pour ensuite les comparer et conserver le plus performant.
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
IA Générative
MLOps
Cloud & DevOps
À propos
Gestion des cookies
© 2024 Blent.ai | Tous droits réservés