Accéder au contenu principal

Créer et déployer des pipelines de machine learning

Découvrez tout ce qu’il faut savoir sur Kubeflow et apprenez à créer et déployer des pipelines de machine learning
Actualisé 19 sept. 2026  · 11 min lire

Explorer avec l’IA

ChatGPTClaudePerplexity

En-tête du tutoriel Kubeflow

Introduction

Lorsque vous concevez un modèle de machine learning, vous pouvez oublier de prendre en compte l’infrastructure nécessaire pour l’entraîner et le servir en production. Pour des workflows de machine learning de bout en bout, il peut être difficile de gérer toutes les contraintes liées à l’application, à la plateforme et aux ressources. 

Par rapport aux déploiements web classiques, les applications de machine learning ont des besoins spécifiques. Par exemple, la phase d’entraînement est très consommatrice de ressources, tandis que l’inférence est légère et rapide. Vous aurez aussi besoin des outils et des frameworks pour exécuter l’ensemble. Un framework open source très populaire qui permet de standardiser la livraison d’applications de machine learning de bout en bout est Kubeflow.

Qu’est-ce que Kubeflow ?

Kubeflow est un projet open source qui regroupe un ensemble d’outils et de frameworks sélectionnés. Son objectif principal est de faciliter le développement, le déploiement et la gestion de workflows de machine learning portables et évolutifs. 

Kubeflow s’appuie sur Kubernetes, une plateforme open source pour exécuter et orchestrer des conteneurs. Kubernetes est conçu pour fonctionner de manière cohérente sur différents environnements, ce qui est essentiel au fonctionnement de Kubeflow. Kubeflow est pensé pour laisser Kubernetes faire ce pour quoi il excelle, afin que vous puissiez vous concentrer sur la définition et l’exécution de workflows ML : gestion des données, exécution de notebooks, entraînement et mise en service des modèles. 

Kubeflow est issu d’un projet interne de Google appelé TensorFlow Extended. Au départ, il s’agissait simplement d’un moyen plus simple d’exécuter des jobs TensorFlow sur Kubernetes, puis il a évolué vers un framework multi‑architectures et multi‑cloud pour exécuter des workflows de machine learning de bout en bout. 

Kubeflow et les workflows de machine learning

Kubeflow est une plateforme pour data scientists et ingénieurs ML qui réunit le meilleur des deux mondes. Les data scientists peuvent y expérimenter des modèles ML et orchestrer leurs expériences sur Kubernetes de la manière la plus efficace. 

Les ingénieurs machine learning peuvent utiliser Kubeflow pour déployer des systèmes ML sur divers environnements, pour le développement, les tests et la production.

Le schéma ci‑dessous illustre deux phases distinctes d’un projet de machine learning : (i) la phase d’expérimentation et (ii) la phase de production. 

Kubeflow propose de nombreux composants pour couvrir quasiment toutes les étapes du pipeline ci‑dessous. Par exemple, pour l’optimisation des hyperparamètres, Kubeflow propose un composant appelé « Katib ». Nous détaillerons les composants clés de Kubeflow plus loin dans ce tutoriel.

Workflow de machine learning

Kubeflow - workflow de machine learning

Installer Kubeflow

Deux options pour démarrer avec Kubeflow :

  1. L’installer via une distribution packagée (simple et directe).
  2. L’installer via des manifests (avancé).

Les distributions packagées sont développées et maintenues par leurs équipes respectives. Par exemple, Kubeflow sur Azure est maintenu par Microsoft. Retrouvez la liste complète des distributions dans le tableau ci‑dessous :

Distributions packagées Kubeflow

Distributions packagées Kubeflow

Trois principes de Kubeflow

Composabilité

La composabilité est un principe de conception visant à gérer les interdépendances entre composants. Kubeflow est hautement composable : vous pouvez par exemple utiliser différentes versions de TensorFlow pour différentes parties de votre pipeline de machine learning si nécessaire. 

Portabilité

La portabilité signifie que vous pouvez exécuter l’intégralité de votre projet de machine learning partout où Kubeflow tourne. La plateforme est agnostique et masque la complexité pour l’utilisateur. Écrivez votre code une fois : Kubeflow se charge de l’abstraction pour l’exécuter sur votre ordinateur portable ou sur un cluster dans le cloud.

Scalabilité

La scalabilité signifie que votre projet peut accéder à davantage de ressources lorsque c’est nécessaire et les libérer lorsqu’elles ne le sont plus. Chaque environnement peut proposer des ressources de calcul différentes comme CPU, GPU et TPU.

Entités conceptuelles Kubeflow

Entités conceptuelles Kubeflow

Composants Kubeflow

Les composants Kubeflow sont des blocs logiques qui, ensemble, constituent Kubeflow. En pratique, vous utiliserez un ou plusieurs composants dans un projet de machine learning.

Tableau de bord

Le tableau de bord central donne avant tout un accès rapide aux autres composants Kubeflow. Parmi les plus utiles :

  • Notebooks : pour gérer les serveurs de notebooks.
  • Pipelines : pour gérer les pipelines Kubeflow.
  • Experiments : pour gérer les expériences Katib.

Vue de l’interface du tableau de bord Kubeflow

Vue de l’interface du tableau de bord Kubeflow

Notebooks

Kubeflow intègre un environnement Jupyter Notebook. Les notebooks sont utiles pour réaliser des tests rapides, développer des modèles et même écrire des applications ML. 

Il n’est pas rare que les ingénieurs ML et les data scientists exécutent leurs notebooks en local et soient limités par les ressources. Disposer de notebooks sur le cluster facilite l’exécution de jobs avec une montée en charge dynamique. 

Notebooks Kubeflow

Notebooks Kubeflow

Pipelines

Kubeflow Pipelines est un composant puissant pour créer des pipelines de machine learning portables et évolutifs de bout en bout, basés sur des conteneurs Docker. 

Les pipelines de machine learning sont une suite d’étapes capables de tout gérer, de la collecte de données jusqu’à la mise en service des modèles. Chaque étape d’un pipeline est un conteneur Docker, donc portable et scalable. Chaque étape est indépendante, ce qui permet de réutiliser les composants du pipeline. 

Interface Kubeflow Pipelines

Interface Kubeflow Pipelines

Dans ce tutoriel, nous allons détailler le composant Kubeflow Pipelines et voir, avec un exemple de code, comment construire et exécuter un pipeline de machine learning avec Kubeflow.

Katib

Katib est un composant Kubeflow conçu pour l’optimisation automatique des hyperparamètres à grande échelle. Le réglage des hyperparamètres joue un rôle majeur dans la qualité des modèles, et la recherche manuelle dans l’espace des hyperparamètres peut demander beaucoup d’efforts. 

Katib vous aide à optimiser vos hyperparamètres autour d’un indicateur défini (par exemple AUC ou RMSE). C’est un moyen efficace de trouver et visualiser la configuration optimale pour préparer votre modèle à la production. 

Interface Kubeflow Katib

Interface Kubeflow Katib

Kubeflow Pipelines

Un workflow de machine learning peut comporter de nombreuses étapes, de la préparation des données à l’entraînement et l’évaluation des modèles, et plus encore. Il est difficile de suivre tout cela de manière ad hoc. 

La journalisation des expériences et le suivi des versions de modèles sans outil adapté représentent un autre défi pour les data scientists. Kubeflow Pipelines permet de développer des workflows de machine learning selon des standards composables, partageables et reproductibles.

Kubeflow est une solution native Kubernetes qui aide les data scientists à adopter une approche rigoureuse de type pipeline lorsqu’ils développent du code de machine learning et le font évoluer dans le cloud. Les objectifs finaux de Kubeflow Pipelines sont :

  • Simplifier l’orchestration de pipelines de machine learning à grande échelle 
  • Accélérer l’expérimentation, la reproductibilité et la collaboration via la multi‑tenant. L’interface Kubeflow permet de créer des groupes, d’y ajouter des utilisateurs et de gérer les droits d’accès.
  • Favoriser la réutilisation et la standardisation des différents composants ML (étapes des pipelines).

Avec Kubeflow, vous pouvez créer des solutions de machine learning de bout en bout sans tout reconstruire à chaque fois, comme avec des briques. Kubeflow gère aussi le suivi d’exécution, la planification des workflows, la journalisation des métadonnées et le versioning.

Vue d’ensemble de l’architecture

Vue d’ensemble de l’architecture Kubeflow

Concepts clés dans Kubeflow Pipelines

Pipeline

Un pipeline est une suite d’étapes clairement définies dans un workflow de machine learning (ML). Il doit préciser les entrées (paramètres) nécessaires à son exécution, ainsi que les entrées et sorties de chaque composant. Chaque composant d’un pipeline prend une entrée, la traite et fournit une sortie au composant suivant.

Un point crucial : chaque étape (composant) d’un pipeline Kubeflow est en réalité un conteneur Docker. Lorsque vous exécutez un pipeline, Kubeflow lance un ou plusieurs Pods Kubernetes correspondant aux composants du pipeline. Les pods démarrent alors le conteneur Docker qui exécute le code que vous avez écrit dans le composant.

Composant

Un composant de pipeline est un bloc de code autonome qui réalise une étape du workflow de machine learning, par exemple l’imputation de valeurs manquantes, la mise à l’échelle des données ou l’entraînement d’un modèle.

Un composant dans un pipeline Kubeflow est comparable à une fonction. Il possède donc un nom, des paramètres d’entrée et une sortie. 

Chaque composant d’un pipeline doit être packagé sous forme d’image Docker afin que chaque étape soit indépendante des autres, et que vous puissiez combiner différents frameworks et outils dans les différentes parties de vos workflows ML.

Expérience

Une expérience vous permet d’exécuter différentes configurations d’un même pipeline puis de comparer et analyser les résultats. En machine learning, il faut généralement tester plusieurs paramètres pour identifier la meilleure configuration. Les expériences de Kubeflow Pipelines sont conçues pour cela.

Graphe

Un graphe est une représentation visuelle dans l’interface Kubeflow. Il affiche les étapes qu’un run de pipeline a exécutées ou est en train d’exécuter, avec des flèches indiquant les relations parent/enfant entre les composants représentés par chaque étape. 

Trois façons de construire des pipelines dans Kubeflow 

Vous voyez désormais ce que sont les pipelines Kubeflow et leurs bénéfices pour concevoir et déployer des workflows de machine learning en production. Passons en revue trois façons de créer et déployer des pipelines avec Kubeflow.

Interface utilisateur (UI)

Vous pouvez utiliser l’interface Kubeflow pour exécuter des pipelines, importer ceux qui vous ont été partagés, consulter les artefacts et les sorties des runs, et planifier des exécutions automatisées. Voici à quoi ressemble l’interface des pipelines :

Kubeflow Pipelines

Interfaces de Kubeflow Pipelines

SDK Python officiel

Kubeflow propose un ensemble de bibliothèques Python pour développer et exécuter des pipelines ML par programmation. C’est le mode d’utilisation le plus courant de Kubeflow Pipelines.

API REST

Kubeflow fournit également des API REST pour les systèmes d’intégration et de déploiement continus. Imaginez un cas d’usage où vous souhaitez intégrer des fonctionnalités de Kubeflow Pipelines dans des systèmes ou processus d’entreprise en aval.

Tutoriel Kubeflow Pipeline

La façon la plus simple de débuter avec Kubeflow est d’utiliser une distribution packagée, autrement dit un service managé dans le cloud. Ici, nous utilisons le service Kubeflow sur GCP. Suivez ce guide officiel pour apprendre à déployer le service sur GCP. 

Une fois le déploiement réussi, vous pouvez accéder à ce tableau de bord depuis votre endpoint GCP.

Tableau de bord Kubeflow

Tableau de bord Kubeflow – déploiement sur GCP

Kubeflow Pipelines est livré avec quelques exemples. Essayons un pipeline basique de prétraitement de données en Python. Cliquez sur Pipelines dans la barre latérale gauche.

Interfaces Kubeflow Pipeline

Kubeflow Pipelines – déploiement sur GCP

Cliquez sur Créer une expérience :

Kubeflow Pipelines-GCP

Kubeflow Pipelines – déploiement sur GCP

Suivez les indications puis cliquez sur Démarrer sur l’écran d’exécution pour lancer le pipeline.

Kubeflow Pipelines – déploiement sur GCP

Kubeflow Pipelines – déploiement sur GCP

L’expérience apparaîtra dans le tableau de bord :

Kubeflow Pipelines – première expérience

Kubeflow Pipelines – déploiement sur GCP

Cliquez sur l’expérience pour voir le résultat une fois l’exécution terminée :

Premier run de pipelines

Kubeflow Pipelines – déploiement sur GCP

Vous savez désormais comment exécuter des pipelines via l’interface Kubeflow. Chaque composant du pipeline ci‑dessus est un simple script Python isolé. Dans l’exemple présenté, les étapes sont simples, comme « Print Text » ou « Sum Numbers ». 

Voyons un exemple plus complexe montrant comment coder et compiler ces composants en Python.

Créer un pipeline Kubeflow via le SDK Python

Dans cet exemple, nous allons créer un pipeline Kubeflow avec deux composants :

  • Télécharger une archive tar compressée à partir de l’URL passée en entrée,
  • Extraire tous les fichiers CSV et créer un unique DataFrame pandas avec la fonction `pd.concat`. 

Théoriquement, au lieu de scinder ce pipeline en deux étapes, nous pourrions créer une seule fonction qui prend l’URL, télécharge l’archive puis fusionne tous les fichiers CSV en un seul. 

Cependant, l’intérêt de le faire en deux étapes est de créer une étape dédiée au téléchargement de l’archive que vous pourrez réutiliser dans d’autres projets. 

Dans Kubeflow, vous pouvez définir le composant en YAML et utiliser la fonction `kfp.components.load_component_from_url` pour charger directement le composant depuis l’URL. 

Pour la première étape, chargeons le composant depuis cette URL open source.

```

web_downloader_op = kfp.components.load_component_from_url(

    'https://raw.githubusercontent.com/kubeflow/pipelines/master/components/web/Download/component-sdk-v2.yaml')

```

Pour la seconde étape, nous définissons une fonction Python :

```

@component(

    packages_to_install=['pandas==1.1.4'],

    output_component_file='component.yaml'

)

def merge_csv(tar_data: Input[Artifact], output_csv: Output[Dataset]):

  import glob

  import pandas as pd

  import tarfile




  tarfile.open(name=tar_data.path, mode="r|gz").extractall('data')

  df = pd.concat(

      [pd.read_csv(csv_file, header=None) 

       for csv_file in glob.glob('data/*.csv')])

  df.to_csv(output_csv.path, index=False, header=False)




```

Comme vous le voyez, la fonction est décorée avec l’annotation `kfp.dsl.component`. Elle permet de définir l’image du conteneur, les dépendances (ici pandas[1.1.4]) et le chemin de sauvegarde de la spécification du composant (component.yaml).

Vous pouvez maintenant chaîner ces deux composants dans un pipeline via l’opérateur `pipeline`. 

Définissez un pipeline et créez une tâche à partir d’un composant :

@dsl.pipeline(

    name='my-pipeline',

    # You can optionally specify your own pipeline_root

    # pipeline_root='gs://my-pipeline-root/example-pipeline',

)

def my_pipeline(url: str):

  web_downloader_task = web_downloader_op(url=url)

  merge_csv_task = merge_csv(tar_data=web_downloader_task.outputs['data'])

  # The outputs of the merge_csv_task can be referenced using the

  # merge_csv_task.outputs dictionary: merge_csv_task.outputs['output_csv']

```

Une fois le pipeline défini, nous pouvons le compiler. Deux méthodes existent. La première via l’interface Kubeflow.

```

kfp.compiler.Compiler(mode=kfp.dsl.PipelineExecutionMode.V2_COMPATIBLE).compile(

    pipeline_func=my_pipeline,

    package_path='pipeline.yaml')

```

Nous pouvons maintenant importer et exécuter ce fichier `pipeline.yaml` via l’interface de Kubeflow Pipelines. Autre option : exécuter le pipeline avec le client SDK de Kubeflow Pipelines.

```

client = kfp.Client()




client.create_run_from_pipeline_func(

    my_pipeline,

    mode=kfp.dsl.PipelineExecutionMode.V2_COMPATIBLE,

    # You can optionally override your pipeline_root when submitting the run too:

    # pipeline_root='gs://my-pipeline-root/example-pipeline',

    arguments={

        'url': 'https://storage.googleapis.com/ml-pipeline-playground/iris-csv-files.tar.gz'

    })

```

Si nous devons étendre ce pipeline pour inclure un modèle de machine learning, nous créerons une fonction Python qui prend `Input[Dataset]` et entraîne le modèle avec le framework de notre choix, par exemple scikit‑learn, TensorFlow ou PyTorch. 

Une fois la fonction créée, il suffit de modifier la fonction `my_pipeline` pour ajouter la troisième tâche, puis de recompiler le pipeline via `kfp.Client` ou l’interface.

Tutoriel reproduit depuis Kubeflow Official.

Conclusion

Expérimenter dans un Jupyter Notebook avec quelques millions de lignes est une chose. Entraîner un modèle de machine learning sur des milliards de lignes à distance dans le cloud en est une autre. Le machine learning devient vraiment complexe lorsqu’il s’agit d’entraîner de grands modèles dans un environnement distribué et scalable. 

Kubernetes est l’un des frameworks d’orchestration les plus populaires pour les jobs de machine learning, et Kubeflow, construit au‑dessus de Kubernetes, masque une grande partie de la complexité pour les utilisateurs. Mais ce n’est pas la seule option : comme toujours, il existe des alternatives. 

Un exemple de ce type de plateforme est Databricks. Elle dispose de son propre moteur d’orchestration propriétaire (différent de Kubernetes) et d’une interface soignée prenant en charge Notebooks, journalisation des expériences, registre de modèles, planification des jobs et monitoring. 

Amazon Sagemaker est une autre alternative à Kubernetes/Kubeflow. Amazon SageMaker est un service de machine learning entièrement managé que les data scientists et développeurs peuvent utiliser pour créer et entraîner rapidement des modèles, puis les déployer directement dans un environnement hébergé prêt pour la production. Il offre un environnement Jupyter Notebook intégré pour l’exploration et l’analyse.

Vous vous sentez dépassé par ces concepts d’ingénierie qui évoluent en continu ? Pas d’inquiétude : Datacamp propose le cours Understanding Data Engineering . Vous y découvrirez les responsabilités clés d’un data engineer, en quoi elles diffèrent de celles d’un data scientist et comment elles facilitent la circulation des données dans l’entreprise. Vous verrez aussi comment les data engineers posent les bases qui rendent la data science possible. Aucun code requis !

FAQ Kubeflow

Quelle est la différence entre Kubeflow et Kubernetes ?

Kubernetes est un système open source d’orchestration de conteneurs pour automatiser le déploiement, la montée en charge et la gestion d’applications. Kubeflow, quant à lui, est un projet open source qui regroupe des outils et frameworks sélectionnés pour faciliter le développement, le déploiement et la gestion de workflows de machine learning portables et évolutifs sur Kubernetes. Kubeflow est construit au‑dessus de Kubernetes.

Kubeflow fait‑il partie de Kubernetes ?

Non, Kubeflow est une bibliothèque distincte. Vous pouvez l’installer comme n’importe quelle bibliothèque Python avec pip install.

Kubeflow est‑il un framework open source ?

Oui, Kubeflow est entièrement open source, disponible sous licence Apache‑2.0.

Quelle est la différence entre Airflow et Kubeflow ?

Apache Airflow est une plateforme générique d’orchestration de tâches, tandis que Kubeflow se concentre sur les tâches de machine learning. Les deux outils permettent de définir des tâches en Python, mais Kubeflow exécute principalement les tâches sur Kubernetes.

Quelle est la différence entre Kubeflow et MLFlow ?

Ce sont deux frameworks open source très différents. Kubeflow est un système d’orchestration de conteneurs qui facilite le développement, le déploiement et la gestion de workflows de machine learning portables et évolutifs sur Kubernetes ; MLflow est, lui, une bibliothèque dédiée au suivi des expériences et au versioning des modèles.

Sujets
Apprentissage automatique
Science des données
Python

Cours pour Python et le machine learning

Cours

Introduction à Python

4 h
7M
Apprenez les bases de l’analyse de données avec Python en quatre heures et explorez ses principaux packages.
Afficher les détailsRight Arrow
Commencer Le Cours
Voir plusRight Arrow