Lexique · Frameworks / outils IA

Kubeflow : définition, composants et exemple de pipeline

La plateforme open source qui exécute tout le cycle de vie du machine learning sur Kubernetes : notebooks, pipelines, hyperparamétrage, entraînement distribué et serving, avec un exemple de pipeline en Python.

Par Équipe Blent· Mis à jour le · 14 min de lecture· Niveau avancé

Kubeflow en bref

Type
Plateforme ML open source sur Kubernetes
Origine
Google, annoncé fin 2017
Gouvernance
Projet de la CNCF
Licence
Apache 2.0
Composants clés
Pipelines, Notebooks, Katib, Trainer, Model Registry
SDK
kfp (Kubeflow Pipelines, Python)
Prérequis
Un cluster Kubernetes et l'équipe pour l'exploiter

Définition : Kubeflow

Kubeflow est une plateforme open source dédiée au machine learning sur Kubernetes, initiée par Google en 2017 et aujourd'hui portée par la Cloud Native Computing Foundation. Elle rassemble des composants qui couvrent le cycle de vie d'un modèle : environnements de notebooks, pipelines décrits en Python et exécutés en conteneurs, recherche d'hyperparamètres avec Katib, entraînement distribué sur plusieurs nœuds et GPU, puis serving avec KServe. Chaque étape tourne dans des pods Kubernetes, ce qui apporte portabilité, passage à l'échelle et mutualisation des ressources, au prix d'une exploitation exigeante réservée aux équipes qui maîtrisent Kubernetes.

En une phrase : Kubeflow transforme un cluster Kubernetes en plateforme de machine learning, des notebooks jusqu'au serving des modèles.

Dans cette définition

Qu'est-ce que Kubeflow ?

Kubeflow part d'une idée simple : si Kubernetes est devenu le standard pour exécuter des applications en conteneurs, il peut aussi devenir le socle commun des traitements de machine learning. Préparation des données, entraînement, évaluation et serving deviennent des charges de travail Kubernetes comme les autres, planifiées sur un cluster partagé.

Le projet a été annoncé par Google en décembre 2017. À l'origine, il visait surtout à simplifier l'exécution d'entraînements TensorFlow sur Kubernetes, avant de s'ouvrir à tous les frameworks et de s'étendre à l'ensemble du cycle de vie des modèles. Il a rejoint la Cloud Native Computing Foundation comme projet en incubation en 2023, puis a atteint le statut de projet gradué en 2026.

Kubeflow n'est pas un outil unique mais un ensemble de composants, utilisables ensemble ou séparément. Il s'adresse aux équipes plateforme et MLOps qui veulent offrir un environnement de machine learning commun sur leur propre infrastructure. Pour une équipe réduite, un outil plus léger comme MLflow, centré sur le suivi des expériences, est souvent un meilleur point de départ.

À retenir : Kubeflow ne remplace pas Kubernetes, il le spécialise. Chaque notebook, étape de pipeline, essai d'hyperparamètres ou modèle servi tourne dans des pods du cluster.

Comment fonctionne Kubeflow ?

Kubeflow accompagne un projet de machine learning en cinq étapes, toutes exécutées sous forme de conteneurs sur le même cluster.

  1. Installer la plateforme

    Kubeflow se déploie sur un cluster Kubernetes existant, soit en plateforme complète à partir des manifestes officiels ou d'une distribution, soit composant par composant, par exemple Kubeflow Pipelines seul.

  2. Explorer dans un notebook

    Kubeflow Notebooks fournit à chaque data scientist un environnement Jupyter, VS Code ou RStudio qui tourne dans un pod, avec CPU, mémoire et GPU alloués à la demande.

  3. Décrire le pipeline

    Avec le SDK kfp, chaque étape devient un composant Python exécuté dans son propre conteneur. Le pipeline relie les composants par leurs entrées et sorties, puis est compilé en fichier YAML.

  4. Entraîner et optimiser

    Les pipelines s'exécutent sur le cluster avec mise en cache des étapes. Katib lance des recherches d'hyperparamètres, Kubeflow Trainer répartit les entraînements sur plusieurs nœuds et GPU.

  5. Servir le modèle

    Le modèle validé est exposé en API par KServe, qui gère l'autoscaling, le déploiement progressif de nouvelles versions et les runtimes adaptés aux LLM.

Les composants de Kubeflow

Le périmètre de Kubeflow a évolué au fil des années. Voici les briques que l'on rencontre le plus souvent.

  • Kubeflow Pipelines (KFP) : le moteur de pipelines. Un pipeline est un graphe d'étapes, chacune exécutée dans son propre conteneur, avec suivi des artefacts, des métriques et mise en cache des étapes inchangées. C'est le composant le plus utilisé, souvent installé seul.
  • Kubeflow Notebooks : des environnements de développement (Jupyter, VS Code, RStudio) lancés dans des pods, avec les ressources du cluster.
  • Katib : l'optimisation automatique des hyperparamètres et la recherche d'architecture, avec plusieurs stratégies dont l'optimisation bayésienne.
  • Kubeflow Trainer : l'entraînement distribué de modèles PyTorch, TensorFlow, XGBoost ou JAX sur plusieurs nœuds et GPU, y compris pour le fine-tuning de LLM. Il succède au Training Operator.
  • KServe : le serving de modèles. Né dans Kubeflow sous le nom de KFServing, il est désormais un projet CNCF indépendant, toujours intégré à la plateforme. Notre article sur KServe détaille son fonctionnement.
  • Model Registry : un registre des modèles et de leurs versions, composant plus récent que celui de MLflow.
  • Tableau de bord central et profils : l'interface web commune et la gestion multi-utilisateurs, chaque utilisateur ou équipe disposant de son espace de noms Kubernetes.

Exemple : un pipeline d'entraînement avec le SDK kfp

Le pipeline suivant prépare un jeu de données, entraîne un modèle puis enregistre sa métrique de précision. Chaque fonction décorée par @dsl.component s'exécute dans son propre conteneur, avec les paquets indiqués. Il utilise la version 2 du SDK (paquet kfp).

python
import kfp
from kfp import compiler, dsl


@dsl.component(base_image="python:3.11", packages_to_install=["pandas", "scikit-learn"])
def prepare_data(dataset: dsl.Output[dsl.Dataset]):
    from sklearn.datasets import load_breast_cancer

    df = load_breast_cancer(as_frame=True).frame
    df.to_csv(dataset.path, index=False)


@dsl.component(base_image="python:3.11", packages_to_install=["pandas", "scikit-learn", "joblib"])
def train(
    dataset: dsl.Input[dsl.Dataset],
    n_estimators: int,
    model: dsl.Output[dsl.Model],
    metrics: dsl.Output[dsl.Metrics],
):
    import joblib
    import pandas as pd
    from sklearn.ensemble import RandomForestClassifier
    from sklearn.model_selection import train_test_split

    df = pd.read_csv(dataset.path)
    X, y = df.drop(columns="target"), df["target"]
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

    clf = RandomForestClassifier(n_estimators=n_estimators, random_state=42).fit(X_train, y_train)
    metrics.log_metric("accuracy", float(clf.score(X_test, y_test)))
    joblib.dump(clf, model.path)


@dsl.pipeline(name="detection-tumeurs")
def training_pipeline(n_estimators: int = 200):
    data_task = prepare_data()
    train_task = train(dataset=data_task.outputs["dataset"], n_estimators=n_estimators)
    train_task.set_cpu_limit("2").set_memory_limit("4G")


# Compilation en YAML, puis soumission au serveur Kubeflow Pipelines
compiler.Compiler().compile(training_pipeline, package_path="training_pipeline.yaml")

client = kfp.Client(host="http://localhost:8080")
client.create_run_from_pipeline_package(
    "training_pipeline.yaml",
    arguments={"n_estimators": 300},
    experiment_name="detection-tumeurs",
)

Plusieurs mécanismes apparaissent dans ce court exemple. Les entrées et sorties typées (Dataset, Model, Metrics) indiquent à Kubeflow quels artefacts transmettre d'une étape à l'autre : il les stocke dans un stockage objet et les relie dans son interface. Les dépendances entre étapes se déduisent de ces échanges, sans avoir à les déclarer. Les limites de ressources se fixent étape par étape, ce qui permet d'attribuer un GPU uniquement à l'entraînement. Enfin, le fichier YAML compilé est portable : il peut être versionné, soumis à un autre cluster ou exécuté par un service managé compatible.

Pour accéder au serveur en local, on expose son interface depuis le cluster :

bash
kubectl port-forward -n kubeflow svc/ml-pipeline-ui 8080:80

En pratique, l'étape d'entraînement peut aussi enregistrer ses paramètres et son modèle dans un serveur MLflow : Kubeflow exécute, MLflow garde la mémoire des expériences.

À quoi sert Kubeflow ?

Kubeflow s'adresse aux organisations qui veulent une plateforme de machine learning commune, construite sur leur propre infrastructure Kubernetes.

  • Plateforme ML interne

    Offrir à plusieurs équipes data des notebooks, pipelines et GPU partagés sur un même cluster.

  • Pipelines de réentraînement

    Réentraîner et réévaluer un modèle à intervalle régulier ou à l'arrivée de nouvelles données.

  • Hyperparamétrage à grande échelle

    Lancer des dizaines d'essais en parallèle avec Katib et retenir la meilleure configuration.

  • Entraînement distribué

    Entraîner ou fine-tuner un modèle volumineux sur plusieurs nœuds équipés de GPU.

  • Serving multi-modèles

    Exposer modèles classiques et LLM derrière une même couche de serving avec KServe.

  • Cloud hybride ou sur site

    Disposer de la même plateforme ML dans plusieurs clouds ou dans un centre de données.

Quels sont les avantages de Kubeflow ?

Kubeflow tire parti de tout ce que Kubernetes apporte, appliqué aux besoins spécifiques du machine learning.

  • Couverture de bout en bout : notebooks, pipelines, hyperparamètres, entraînement, serving.
  • Portabilité : la même plateforme tourne sur tout cluster Kubernetes, en cloud ou sur site.
  • Mutualisation des ressources, notamment des GPU, entre équipes et projets.
  • Pipelines reproductibles, versionnés et mis en cache, chaque étape dans son conteneur.
  • Composants utilisables séparément : on peut n'adopter que Pipelines ou que KServe.
  • Projet open source gouverné par la CNCF et soutenu par de nombreux contributeurs.

Quelles sont les limites de Kubeflow ?

La puissance de Kubeflow s'accompagne d'une complexité qui dépasse souvent les moyens d'une petite équipe.

  • Installation et mises à jour lourdes : nombreux composants, dépendances (Istio, gestion de l'authentification) et versions à aligner.
  • Nécessite une solide maîtrise de Kubernetes, rare dans les équipes data.
  • Chaque étape d'un pipeline doit être conteneurisée, ce qui ralentit les itérations rapides.
  • Coût d'infrastructure fixe élevé, même pour une faible activité.
  • Écosystème hétérogène : maturité et documentation varient d'un composant à l'autre.

Une plateforme exigeante à exploiter

La principale objection à Kubeflow n'est pas fonctionnelle, elle est opérationnelle. La plateforme complète réunit une dizaine de composants, chacun avec ses contrôleurs, ses ressources personnalisées et ses mises à jour, auxquels s'ajoutent un service mesh (Istio), un système d'authentification et un stockage d'artefacts. Aligner les versions de l'ensemble avec celle du cluster Kubernetes demande un effort continu.

Plusieurs stratégies permettent de limiter cette charge :

  • N'installer que le nécessaire : Kubeflow Pipelines seul, ou KServe seul, couvre souvent le besoin principal sans la plateforme complète.
  • S'appuyer sur une distribution : des éditeurs et fournisseurs cloud proposent des versions packagées, testées et maintenues.
  • Déléguer l'exécution : un service managé comme Vertex AI Pipelines exécute des pipelines écrits avec le SDK kfp sans cluster à administrer.
  • Gérer la plateforme comme du code : versionner les manifestes et les déployer selon une approche GitOps rend les mises à jour reproductibles.

Notre article Kubernetes et Machine Learning revient sur les raisons qui font de Kubernetes le socle de ces plateformes, et sur les compétences qu'il exige.

Kubeflow et MLflow : comment les combiner ?

La fiche MLflow compare les deux outils critère par critère. Le tableau ci-dessous adopte un autre angle : dans une plateforme qui utilise les deux, qui fait quoi à chaque étape du cycle de vie ?

ÉtapeRôle de KubeflowRôle de MLflow
ExplorationFournit les notebooks et les ressources (CPU, GPU)Enregistre les runs lancés depuis le notebook
Préparation des donnéesExécute les étapes du pipeline en conteneursPeut conserver les jeux de données comme artefacts
HyperparamétrageKatib lance et parallélise les essaisHistorise chaque essai et ses métriques
EntraînementKubeflow Trainer distribue le calcul sur le clusterTrace paramètres, métriques et modèle produit
Validation et registreModel Registry de Kubeflow, plus récentModel Registry mature, versions et alias
ServingKServe expose le modèle avec autoscalingFournit un format de modèle que KServe sait servir

Cette répartition est fréquente parce qu'elle exploite le point fort de chacun : la puissance d'exécution de Kubeflow sur Kubernetes, et la simplicité de suivi et de versionnement de MLflow. Une équipe peut aussi démarrer avec MLflow seul, puis ajouter Kubeflow lorsque le volume de traitements justifie une plateforme sur cluster.

Quand adopter Kubeflow ?

La vraie question n'est pas l'intérêt fonctionnel de Kubeflow, mais la capacité de votre organisation à l'exploiter.

Pertinent si

Vous construisez une plateforme ML

  • Kubernetes est déjà votre socle et une équipe plateforme l'exploite.
  • Plusieurs équipes data doivent partager ressources et GPU.
  • Vos pipelines doivent tourner sur votre infrastructure, en cloud ou sur site.
  • Vous entraînez des modèles distribués ou servez de nombreux modèles.
Moins adapté si

Un outillage plus léger suffira

  • L'équipe compte quelques data scientists sans expertise Kubernetes.
  • Un suivi d'expériences comme MLflow couvre l'essentiel du besoin.
  • Un service managé de votre fournisseur cloud est acceptable.
  • Vous n'avez que quelques modèles, réentraînés rarement.

Outils et alternatives autour de Kubeflow

Kubeflow s'appuie sur l'écosystème Kubernetes et se combine ou se compare à d'autres outils MLOps.

Les concepts à connaître pour comprendre Kubeflow

Kubeflow se trouve au croisement du cloud native et du machine learning : ces notions éclairent son fonctionnement.

Ressources pour approfondir Kubeflow

Trois articles du blog Blent pour comprendre le machine learning sur Kubernetes, du pipeline au serving.

Questions fréquentes

Questions fréquentes

Oui, Kubeflow est open source sous licence Apache 2.0. Le coût réel tient à l'infrastructure (le cluster Kubernetes, souvent avec GPU) et au temps d'exploitation de la plateforme. Des distributions commerciales et des services managés existent pour réduire cette charge.

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 Kubeflow (Pipelines, Katib, Trainer, Notebooks)
  • Annonces de la CNCF sur l'incubation (2023) puis la graduation (2026) de Kubeflow
  • Retours d'expérience des projets et formations Blent