Lexique · Frameworks / outils IA

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.

Comment fonctionne MLflow ?

MLflow accompagne un modèle en cinq étapes, de la première expérience jusqu'à sa mise à disposition en production.

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

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.

python
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 :

bash
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 MLmodel listant ses flavors, sa signature et ses dépendances. La flavor pyfunc offre une interface predict commune à 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èreMLflowKubeflow
Rôle principalSuivi des expériences, format et registre de modèlesExécution de pipelines et d'entraînements sur Kubernetes
Infrastructure requiseAucune : un poste suffit, un serveur pour l'équipeUn cluster Kubernetes
Prise en mainQuelques lignes de PythonInstallation et exploitation exigeantes
OrchestrationAbsentePipelines en graphe, planification, mise en cache
Registre de modèlesCentral et matureComposant dédié, plus récent
Public cibleData 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 ?

Pertinent si

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.
Moins adapté si

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.

Les concepts à connaître autour de MLflow

MLflow outille plusieurs pratiques du MLOps : ces notions expliquent ce qu'il trace et pourquoi.

Ressources pour approfondir MLflow

Trois articles du blog Blent pour mettre en place MLflow et le replacer dans une démarche MLOps.

Questions fréquentes

Questions fréquentes

Oui, MLflow est open source sous licence Apache 2.0 et utilisable gratuitement, y compris en entreprise. Vous payez seulement l'infrastructure qui héberge le serveur de tracking et les artefacts. Des versions managées existent chez Databricks, AWS ou Azure, facturées selon l'offre.

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