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.
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).
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 :
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 ?
| Étape | Rôle de Kubeflow | Rôle de MLflow |
|---|---|---|
| Exploration | Fournit les notebooks et les ressources (CPU, GPU) | Enregistre les runs lancés depuis le notebook |
| Préparation des données | Exécute les étapes du pipeline en conteneurs | Peut conserver les jeux de données comme artefacts |
| Hyperparamétrage | Katib lance et parallélise les essais | Historise chaque essai et ses métriques |
| Entraînement | Kubeflow Trainer distribue le calcul sur le cluster | Trace paramètres, métriques et modèle produit |
| Validation et registre | Model Registry de Kubeflow, plus récent | Model Registry mature, versions et alias |
| Serving | KServe expose le modèle avec autoscaling | Fournit 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.
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.
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.
- Socle
Kubernetes
L'orchestrateur de conteneurs sur lequel tourne chaque composant de Kubeflow.
- Complément
MLflow
Suivi des expériences et registre de modèles, souvent utilisé dans les pipelines Kubeflow.
- Serving
KServe
Serving de modèles sur Kubernetes, né dans Kubeflow et devenu projet CNCF à part entière.
- Réseau
Istio
Service mesh utilisé par la plateforme complète pour le routage et la sécurité.
- Conteneurs
Docker
Construction des images qui exécutent les composants des pipelines.
- Inférence LLM
vLLM
Moteur d'inférence pour LLM, utilisable comme runtime de KServe.
- Alternative
Apache Airflow
Orchestrateur généraliste de workflows, plus simple à adopter hors Kubernetes.
- Alternative
Prefect
Orchestration de workflows en Python, sans infrastructure imposée.
- Service managé
Vertex AI Pipelines
Service de Google Cloud capable d'exécuter des pipelines écrits avec le SDK kfp.
Les concepts à connaître pour comprendre Kubeflow
Kubeflow se trouve au croisement du cloud native et du machine learning : ces notions éclairent son fonctionnement.
- ContainerL'unité d'exécution de chaque étape d'un pipeline Kubeflow.
- Machine LearningLa discipline dont Kubeflow industrialise le cycle de vie.
- Optimisation bayésienneL'une des stratégies de recherche d'hyperparamètres proposées par Katib.
- Entraînement distribuéLa répartition d'un entraînement sur plusieurs machines ou GPU.
- Déploiement canaryLa mise en production progressive d'une nouvelle version de modèle avec KServe.
- GitOpsLa gestion déclarative de la plateforme et de ses manifestes depuis Git.
Ressources pour approfondir Kubeflow
Trois articles du blog Blent pour comprendre le machine learning sur Kubernetes, du pipeline au serving.
- Guide
Kubernetes et Machine Learning
Pourquoi Kubernetes est devenu le socle des plateformes de machine learning.
Lire l'article - Serving
KServe : exposer des LLM sur Kubernetes
Architecture et mise en œuvre du composant de serving issu de Kubeflow.
Lire l'article - Technique
Optimisation bayésienne : pourquoi l'utiliser en MLOps ?
La méthode de recherche d'hyperparamètres que Katib sait exécuter à grande échelle.
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 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
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.
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.
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.
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.
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.
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.