MLflow : définition, composants et exemple de tracking
La plateforme open source qui suit les expériences, versionne les modèles et prépare leur déploiement : composants, exemple avec scikit-learn, Model Registry, usages pour les LLM et différences avec Kubeflow.
Par Équipe Blent· Mis à jour le · 14 min de lecture· Niveau intermédiaire
MLflow en bref
- Type
- Plateforme open source de MLOps
- Créateur
- Databricks, 2018
- Gouvernance
- Projet de la Linux Foundation
- Licence
- Apache 2.0
- Langages
- Python, R, Java, API REST
- Composants
- Tracking, Models, Model Registry, serving
- Offres managées
- Databricks, Amazon SageMaker, Azure Machine Learning
Définition : MLflow
MLflow est une plateforme open source de gestion du cycle de vie des modèles de machine learning, créée par Databricks en 2018 et hébergée par la Linux Foundation. Elle enregistre les paramètres, métriques et artefacts de chaque entraînement pour comparer les expériences, empaquette les modèles dans un format standard indépendant de la bibliothèque utilisée, et les versionne dans un registre central avant leur déploiement. Compatible avec scikit-learn, PyTorch, XGBoost ou Transformers, MLflow s'utilise en local, sur un serveur partagé ou via des offres managées, et s'est étendu au suivi et à l'évaluation des applications fondées sur des LLM.
En une phrase : MLflow garde la trace de chaque entraînement, versionne les modèles et les prépare au déploiement, quelle que soit la bibliothèque utilisée.
Dans cette définition
Qu'est-ce que MLflow ?
MLflow est né d'un constat partagé par la plupart des équipes data : entraîner un modèle de machine learning est la partie la mieux outillée du travail. Retrouver quels paramètres ont produit le meilleur score trois semaines plus tard, transmettre le modèle à l'équipe qui le déploie ou savoir quelle version tourne en production l'est beaucoup moins. MLflow apporte une réponse standard à ces trois problèmes.
Le projet a été présenté par Databricks en juin 2018, puis confié à la Linux Foundation en 2020. Il est publié sous licence Apache 2.0. Sa force tient à son approche peu intrusive : MLflow ne demande ni de changer de bibliothèque, ni d'adopter une infrastructure particulière. Il s'ajoute à un script ou à un notebook existant, en local comme sur un serveur partagé.
Dans une démarche MLOps, MLflow occupe la couche de gestion du cycle de vie : traçabilité des expériences, format de modèle, registre et déploiement simple. Il ne gère pas l'exécution des traitements sur un cluster, rôle que remplissent des outils comme Kubeflow ou Airflow. Depuis 2025, il couvre aussi le suivi des applications fondées sur des LLM.
À retenir : MLflow répond à la question « d'où vient ce modèle et comment le réutiliser ? ». Il trace, empaquette et versionne, mais n'orchestre pas.
Exemple : tracer un entraînement scikit-learn
Le script suivant entraîne une forêt aléatoire, enregistre ses paramètres et ses métriques, puis enregistre le modèle dans le Model Registry. Il suppose un serveur de tracking lancé en local avec mlflow server --host 127.0.0.1 --port 5000.
import mlflow
from mlflow import MlflowClient
from mlflow.models import infer_signature
from sklearn.datasets import load_breast_cancer
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score, f1_score
from sklearn.model_selection import train_test_split
mlflow.set_tracking_uri("http://127.0.0.1:5000")
mlflow.set_experiment("detection-tumeurs")
X, y = load_breast_cancer(return_X_y=True, as_frame=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
params = {"n_estimators": 200, "max_depth": 6, "random_state": 42}
with mlflow.start_run(run_name="random-forest-v1"):
model = RandomForestClassifier(**params).fit(X_train, y_train)
preds = model.predict(X_test)
mlflow.log_params(params)
mlflow.log_metrics({
"accuracy": accuracy_score(y_test, preds),
"f1": f1_score(y_test, preds),
})
model_info = mlflow.sklearn.log_model(
sk_model=model,
name="model",
signature=infer_signature(X_test, preds),
registered_model_name="detection-tumeurs-rf",
)
# Désigner cette version comme celle à déployer
client = MlflowClient()
client.set_registered_model_alias(
"detection-tumeurs-rf", "champion", model_info.registered_model_version
)
Le run apparaît dans l'interface avec ses paramètres, ses deux métriques et le modèle sauvegardé. La signature décrit les colonnes attendues en entrée, ce qui permet de valider les requêtes au moment du serving. L'argument registered_model_name crée une nouvelle version dans le registre, et l'alias champion indique laquelle doit être utilisée. Pour aller plus vite, mlflow.sklearn.autolog() enregistre automatiquement paramètres, métriques et modèle sans appel explicite.
Le modèle est ensuite servi ou empaqueté en ligne de commande, en le désignant par son alias :
export MLFLOW_TRACKING_URI=http://127.0.0.1:5000
# API REST locale sur le port 5001 (endpoint /invocations)
mlflow models serve -m "models:/detection-tumeurs-rf@champion" -p 5001 --env-manager local
# Image Docker prête à déployer
mlflow models build-docker -m "models:/detection-tumeurs-rf@champion" -n detection-tumeurs:1
L'image produite peut être déployée comme n'importe quel conteneur Docker, sur un serveur ou dans un cluster. Notre article MLflow : tout savoir sur l'outil indispensable du MLOps propose une prise en main plus détaillée.
Les composants de MLflow
MLflow est organisé en briques indépendantes : on peut n'en utiliser qu'une seule.
- Tracking : l'API et l'interface qui enregistrent les runs. Les métadonnées sont stockées dans une base (fichiers locaux, SQLite, PostgreSQL, MySQL) et les artefacts dans un système de fichiers ou un stockage objet comme S3.
- Models : le format d'empaquetage. Un modèle MLflow est un dossier qui contient les fichiers du modèle, un fichier
MLmodellistant ses flavors, sa signature et ses dépendances. La flavorpyfuncoffre une interfacepredictcommune à tous les modèles. - Model Registry : le registre central des modèles. Chaque enregistrement crée une version, à laquelle on associe des alias, des tags et une description. Les alias ont remplacé les anciennes étapes Staging et Production, plus rigides.
- Serving : le déploiement d'un modèle en API REST locale, en image Docker ou vers des plateformes cloud. Le format MLflow est aussi reconnu par des outils de serving tiers comme KServe.
- Projects : un format de description d'un projet (point d'entrée, environnement) pour le rendre réexécutable. Cette brique historique est aujourd'hui moins mise en avant que les autres.
MLflow et l'IA générative
Les versions récentes, à partir de MLflow 3 sorti en 2025, ont ajouté un ensemble de fonctionnalités consacrées aux applications génératives. Le tracing enregistre le détail de chaque requête d'une application LLM : appels au modèle, recherches dans un index, outils invoqués, latence et tokens consommés, avec une instrumentation automatique pour plusieurs fournisseurs et frameworks. L'évaluation mesure la qualité des réponses sur un jeu de questions, notamment à l'aide de LLM juges. Un registre de prompts permet enfin de versionner les prompts comme on versionne les modèles. Ces fonctionnalités rapprochent MLflow des outils de LLMOps ; leur périmètre évolue rapidement d'une version à l'autre.
À quoi sert MLflow ?
MLflow sert à rendre le travail de modélisation traçable, reproductible et transmissible aux équipes qui déploient.
Suivi des expériences
Historiser des centaines d'entraînements et retrouver les paramètres d'un résultat.
Optimisation d'hyperparamètres
Enregistrer chaque essai d'une recherche automatique et comparer leurs performances.
Registre de modèles
Centraliser les versions validées et désigner celle qui doit tourner en production.
Industrialisation
Fournir aux équipes de déploiement un modèle empaqueté avec ses dépendances.
Audit et conformité
Savoir quelles données, quel code et quels paramètres ont produit un modèle déployé.
Applications LLM
Tracer les appels d'une application générative et évaluer la qualité de ses réponses.
Quels sont les avantages de MLflow ?
MLflow s'est imposé par sa simplicité d'adoption : quelques lignes suffisent pour en tirer un bénéfice immédiat.
- Prise en main rapide : un pip install et quelques appels suffisent pour tracer un entraînement.
- Indépendant des bibliothèques : scikit-learn, PyTorch, XGBoost, Transformers et bien d'autres.
- Format de modèle standard, qui découple l'entraînement du déploiement.
- Registre de modèles intégré, avec versions et alias.
- Open source et largement adopté, avec des offres managées chez plusieurs fournisseurs cloud.
- Utilisable seul sur un poste comme sur un serveur partagé par toute une équipe.
Quelles sont les limites de MLflow ?
MLflow couvre la gestion du cycle de vie, pas l'exécution des traitements ni l'infrastructure qui les porte.
- Pas d'orchestration de pipelines : l'enchaînement des étapes relève d'un autre outil.
- Le serveur open source offre une gestion des utilisateurs et des droits limitée.
- Le passage à l'échelle du serveur (base de données, stockage d'artefacts) est à concevoir soi-même.
- Le serving intégré convient aux cas simples, moins aux charges importantes ou aux GPU.
- Les runs s'accumulent vite : sans conventions de nommage et de tags, l'interface devient confuse.
MLflow vs Kubeflow : quelles différences ?
Les deux outils sont souvent cités ensemble, mais ils ne répondent pas à la même question. MLflow gère la mémoire du projet ; Kubeflow fournit l'usine qui exécute les traitements.
| Critère | MLflow | Kubeflow |
|---|---|---|
| Rôle principal | Suivi des expériences, format et registre de modèles | Exécution de pipelines et d'entraînements sur Kubernetes |
| Infrastructure requise | Aucune : un poste suffit, un serveur pour l'équipe | Un cluster Kubernetes |
| Prise en main | Quelques lignes de Python | Installation et exploitation exigeantes |
| Orchestration | Absente | Pipelines en graphe, planification, mise en cache |
| Registre de modèles | Central et mature | Composant dédié, plus récent |
| Public cible | Data scientists, équipes de toutes tailles | Équipes plateforme et MLOps disposant de Kubernetes |
Les deux se combinent naturellement : un pipeline Kubeflow orchestre la préparation des données et l'entraînement, et chaque étape enregistre ses runs et ses modèles dans MLflow. Pour une petite équipe sans cluster, MLflow seul, associé à un ordonnanceur simple, couvre souvent l'essentiel du besoin.
Quand utiliser MLflow ?
MLflow répond à une question simple : savez-vous dire, pour chaque modèle en production, comment il a été obtenu ?
Vous avez besoin de traçabilité
- Plusieurs personnes entraînent et comparent des modèles.
- Vous voulez un registre central des versions validées.
- Les modèles doivent passer de l'expérimentation au déploiement sans réécriture.
- L'audit ou la conformité exigent de retracer chaque modèle.
Un autre outil répond mieux au besoin
- Vous cherchez à orchestrer des pipelines sur un cluster.
- Vous devez servir des LLM à grande échelle sur GPU.
- Le projet se limite à un modèle unique, entraîné une fois.
- Votre plateforme cloud fournit déjà un suivi intégré qui vous suffit.
Outils et alternatives autour de MLflow
MLflow s'insère dans une chaîne MLOps qui comprend des outils d'orchestration, de serving et de suivi concurrents.
- Orchestration
Kubeflow
Plateforme ML sur Kubernetes, complémentaire pour exécuter les pipelines.
- Bibliothèque
scikit-learn
Bibliothèque de machine learning dont MLflow trace automatiquement les entraînements.
- Déploiement
Docker
MLflow peut construire une image de serving à partir d'un modèle du registre.
- Serving
KServe
Serving de modèles sur Kubernetes, capable de servir des modèles au format MLflow.
- Orchestration
Apache Airflow
Orchestrateur de workflows pour planifier entraînements et réentraînements.
- Alternative
Weights & Biases
Plateforme commerciale de suivi d'expériences, très utilisée en deep learning.
- Observabilité LLM
Langfuse
Alternative open source pour tracer et évaluer des applications LLM.
- Plateforme managée
Databricks
La plateforme de l'éditeur d'origine, qui intègre MLflow en service managé.
Les concepts à connaître autour de MLflow
MLflow outille plusieurs pratiques du MLOps : ces notions expliquent ce qu'il trace et pourquoi.
- Machine LearningLa discipline dont MLflow gère les expériences et les modèles.
- CI/CDL'automatisation des tests et des déploiements, appliquée ici aux modèles.
- Optimisation des hyperparamètresLa recherche automatique de la meilleure configuration, dont chaque essai est un run.
- Data driftLa dérive des données en production, qui déclenche un réentraînement.
- LLMOpsL'adaptation des pratiques MLOps aux applications fondées sur des LLM.
- Validation croiséeLa méthode d'évaluation dont les scores sont enregistrés comme métriques.
Ressources pour approfondir MLflow
Trois articles du blog Blent pour mettre en place MLflow et le replacer dans une démarche MLOps.
- Guide
MLflow : tout savoir sur l'outil indispensable du MLOps
Les composants de MLflow et une prise en main complète en Python.
Lire l'article - Production
Détecter le Data Drift et le Concept Drift en production
Surveiller un modèle déployé et savoir quand le réentraîner.
Lire l'article - LLM
LLMOps : le MLOps appliqué aux LLM
Ce qui change quand le modèle à industrialiser est un LLM.
Lire l'article
Questions fréquentes
Questions fréquentes
Expertise
À propos de l'auteur
Équipe Blent
Les ingénieurs et mentors Blent conçoivent, évaluent et mettent en production des modèles de machine learning, et forment chaque année des centaines de professionnels au MLOps.
Sources et méthodologie
- Documentation officielle MLflow (Tracking, Models, Model Registry, GenAI)
- Annonce de MLflow par Databricks, juin 2018
- Retours d'expérience des projets et formations Blent
Comment fonctionne MLflow ?
MLflow accompagne un modèle en cinq étapes, de la première expérience jusqu'à sa mise à disposition en production.
Tracer les expériences
Chaque entraînement devient un run, rattaché à une expérience. On y enregistre les hyperparamètres, les métriques, les artefacts (graphiques, fichiers) et la version du code, manuellement ou avec l'autologging.
Comparer les runs
L'interface web affiche les runs côte à côte, trie par métrique et trace l'évolution des courbes. On identifie rapidement la meilleure configuration et ce qui l'a produite.
Empaqueter le modèle
Le modèle est sauvegardé au format MLflow Models : ses fichiers, ses dépendances, sa signature d'entrée et de sortie, et une ou plusieurs flavors qui indiquent comment le charger.
Enregistrer dans le registre
Le Model Registry attribue un numéro de version à chaque modèle enregistré et permet de lui associer des alias (champion, challenger), des tags et une description.
Déployer
Une version du registre peut être servie en API REST, transformée en image Docker, chargée dans un job batch ou déployée sur une plateforme de serving.