Aller au contenu
  1. Découvrir/

2 minutes pour comprendre... Kubeflow

·9 mins
Gérer tout le cycle de vie de votre machine learning (ML), de la construction jusqu’au déploiement.

En 2 minutes #

L’intelligence artificielle est partout et apporte son lot de défis. L’entraînement et le déploiement de modèles nécessitent une bonne gestion des ressources ainsi que des capacités de scalabilité et d’orchestration importantes. C’est ici qu’intervient Kubeflow, une plateforme open-source conçue pour simplifier le déploiement, la gestion et l’orchestration de workflows de ML sur Kubernetes.

Kubeflow permet d’automatiser l’ensemble du cycle de vie d’un modèle, de l’expérimentation à la mise en production, de manière flexible et agnostique grâce à de multiples composants qui adressent les différents aspects du cycle. Ces composants sont des projets open source pouvant s’intégrer de manière transparente à la stack Kubeflow, ou être utilisés de manière indépendante. Ceci apporte une grande flexibilité dans le déploiement de Kubeflow en permettant aux utilisateurs de tirer parti uniquement des composants qui leur sont utiles.

Les différents composants de Kubeflow comprennent notamment :

D’autre part, l’une des grandes forces de Kubeflow est son support de nombreux frameworks et bibliothèques telles que : PyTorch, JAX, TensorFlow, XGBoost, HuggingFace, DeepSpeed, Megatron-LM, …

Enfin, on peut noter que Kubeflow est couramment utilisé pour :

  • le développement et l’entraînement de modèles
  • la gestion des pipelines ML
  • le déploiement et la mise en production de modèles
  • la collaboration et l’expérimentation avec des notebooks interactifs (Jupyter) intégrés

En savoir plus… #

Fonctionnalités principales #

  • Conception, exécution et gestion des pipelines ML de manière reproductible et automatisée
  • Optimisation automatique des hyperparamètres et de la recherche d’architecture neuronale
  • Tâches d’entraînement distribuées pour TensorFlow, PyTorch et MXNet
  • Utilisation des CPU, GPU et TPU pour accélérer l’entraînement de modèles
  • Environnement interactif pour le prototypage et l’expérimentation des modèles
  • Déploiement optimisé de modèles ML avec autoscaling et support multi-framework (TensorFlow, PyTorch, scikit-learn, …)
  • Allocation dynamique des ressources en fonction des besoins des modèles
  • Utilisation des CRDs pour une intégration fluide avec Kubernetes
  • Intégration avec Prometheus, Grafana et d’autres outils pour suivre les performances et l’utilisation des ressources

Architecture #

L’un des avantages indéniables de Kubeflow est son architecture modulaire qui permet aux utilisateurs de sélectionner et d’intégrer uniquement les composants adaptés à leurs besoins.

Chaque composant remplit une fonction bien précise : préparation des données, développement, optimisation, entraînement et distribution de modèles ML, comme on peut le voir dans le schéma ci-dessous :

Architecture de Kubeflow
Schéma d’architecture de Kubeflow

Ecosystème #

Le principe même de Kubeflow étant de proposer une plateforme avec laquelle de nombreux composants peuvent s’interfacer, son écosystème est naturellement très riche. En plus de ces composants, développés spécifiquement pour Kubeflow, de nombreux add-ons sont disponibles pour augmenter les capacités de Kubeflow.

Central Dashboard #

Ce composant fournit une interface web permettant de visualiser les différents composants de Kubeflow :

  • Notebooks : gestion des Notebooks (Kubeflow Notebooks)
  • TensorBoards : gestion des TensorBoards
  • Volumes : gestion des Volumes Kubernetes
  • Katib Experiments : gestion de l’entraînement automatique des modèles
  • KServe endpoints : gestion des endpoints KServe
  • Pipelines : gestion de la définition et de l’exécution des pipelines ainsi que de leurs artéfacts (Kubeflow Pipelines)
Note
Les différents menus présentés ne sont actifs que si le composant Kubeflow correspondant est installé.

Page d’accueil de Kubeflow Central Dashboard
Page d’accueil de Kubeflow Central Dashboard

Suivi de l’exécution des Pipelines
Suivi de l’exécution des Pipelines

Kubeflow Notebooks #

Ce composant permet d’exécuter des environnements de développement (IDE) directement sur le cluster Kubernetes, dans des Pods. Il supporte nativement JupyterLab, RStudio et Visual Studio Code, mais n’importe quel IDE basé sur les technologies Web devrait fonctionner avec Kubeflow Notebooks.

Liste des serveurs Notebooks
Liste des serveurs Notebooks

Kubeflow Pipelines #

Ce composant est probablement l’un des plus important de Kubeflow, puisqu’il permet de construire et déployer des workflows ML portables et évolutifs basés sur les containers.

Kubeflow Pipelines propose les fonctionnalités suivantes :

  • interface web pour gérer et suivre les expériences, tâches et exécutions
  • planification de tâches individuelles des pipelines selon leurs dépendances
  • coordination des artefacts entre les différentes étapes des pipelines
  • SDK Python dédié
  • partage facilité d’implémentations sous forme de composants réutilisables dans différentes pipelines
Note
Bien que l’API v2 de Kubeflow Pipelines soit en beta, il est recommandé d’utiliser celle-ci étant donné que la v1 est marquée comme dépréciée.

Liste des pipelines Kubeflow Pipelines
List des pipelines Kubeflow Pipelines

Kubeflow Trainer #

Ce composant, successeur de Kubeflow Training Operator, permet un entraînement évolutif et distribué des modèles sur différents frameworks et s’intégrant avec différentes bibliothèques.

Il s’adresse aux ingénieurs et scientifiques qui développent des modèles d’intelligence artificielle en utilisant le SDK Python de Kubeflow ainsi qu’aux opérateurs de cluster responsables des environnements d’exécution Kubeflow sur Kubernetes.

Kubeflow Trainer présente des avantages significatifs :

  • simplicité et évolutivité : entraînement distribué et fine-tuning de LLMs
  • extensibilité et portabilité : compatible avec toutes les plateformes Cloud et intégration aux frameworks ML écrits dans n’importe quel language
  • réduction des coûts : report de la charge I/O sur les workloads CPU
  • intégration transparente avec Kubernetes
Note
Bien que Kubeflow Trainer soit en alpha, il est recommandé d’utiliser cette version plutôt que Kubeflow Training Operator étant donné qu’il est déprécié.

Stack technique de Kubeflow Trainer
Stack technique de Kubeflow Trainer

Katib #

Ce composant permet d’effectuer de l’entraînement automatique de modèles (AutoML) de manière agnostique au framework utilisé. Il prend en charge l’optimisation des hyperparamètres d’applications écrites dans n’importe quel language, l’early stopping, la recherche d’architecture neuronale ainsi que de nombreux frameworks et algorithmes d’AutoML.

Conçu pour être extensible et portable, il fonctionne avec divers frameworks de machine learning tels que TensorFlow, MXNet, PyTorch et XGBoost. Il prend en charge une variété d’algorithmes d’optimisation, notamment la recherche aléatoire, la recherche en grille et l’optimisation bayésienne, permettant ainsi aux utilisateurs de choisir la méthode la plus adaptée à leurs besoins spécifiques.

En s’intégrant de manière transparente avec Kubernetes, Katib offre une plateforme flexible pour l’optimisation des modèles de machine learning, facilitant ainsi l’automatisation et l’amélioration des performances des modèles tout en réduisant le temps et les ressources nécessaires au processus d’optimisation.

Fonctionnement de Katib
Fonctionnement de Katib

Model Registry #

Ce composant, dédié à la gestion des modèles de machine learning au sein de la plateforme Kubeflow, offre une interface centralisée pour enregistrer, versionner et suivre les modèles, facilitant ainsi leur gestion et leur déploiement.

Cette architecture modulaire et extensible permet aux utilisateurs du Model Registry de gérer efficacement le cycle de vie des modèles, depuis leur enregistrement jusqu’à leur déploiement, tout en assurant une traçabilité et une reproductibilité accrues.

Boucle MLOps du registre de modèles
Boucle MLOps du registre de modèles

Spark Operator #

Ce composant permet la spécification et l’exécution d’applications Spark sur Kubernetes en utilisant des CRDs. Ainsi, les interactions avec Spark se font de manière déclarative et native à Kubernetes (ie. comme si on déployait une ressource Kubernetes classique).

Spark Operator se charge de la soumission d’applications à Spark, gère leur cycle de vie et surveille leur état. Cette approche permet une intégration transparente des workflows Spark avec Kubernetes, simplifiant grandement le déploiement et la gestion des applications Spark.

Les fonctionnalités principales de l’opérateur sont les suivantes :

  • support de Spark 2.3 et plus
  • définition et gestion des applications de manière déclarative via des CRDs
  • soumission automatique des applications Spark et réconciliation lors de mise à jour
  • support natif de cron pour la planification
  • personnalisation avancée des Pods Spark via mutating admission webhook
  • redémarrage automatique des applications avec politique configurable
  • montage automatique de configuration Hadoop
  • transfert automatique des dépendances applicatives vers Google Cloud Storage
  • collecte et exportation de métriques applicatives et système (driver / executor) vers Prometheus

Architecture de Spark Operator
Architecture de Spark Operator

KServe #

Cet add-on est une plateforme dédiée au déploiement, à la gestion et à la mise à l’échelle de modèles en production sur Kubernetes.

Conçu pour simplifier le processus de déploiement des modèles en production, il offre :

  • des capacités de mise à l’échelle automatique en fonction des besoins en trafic, y compris la possibilité de réduire à zéro les ressources lorsqu’elles ne sont pas utilisées
  • la gestion des versions de modèles
  • l’explicabilité intégrée pour une meilleure interprétation des prédictions
  • la surveillance continue des performances des modèles en production

Grâce à son architecture modulaire et extensible, KServe permet aux organisations de déployer et de gérer efficacement des modèles à grande échelle, tout en assurant une intégration transparente avec les infrastructures Kubernetes existantes.

Note
Initialement développé en 2019 sous le nom de KFServing par des entreprises telles que Google, IBM, Bloomberg, NVIDIA et Seldon, il a été renommé KServe en septembre 2021 pour refléter son évolution et son indépendance croissante par rapport au projet Kubeflow. Cette transition a permis à KServe de se concentrer davantage sur son utilité première, tout en maintenant une intégration étroite avec Kubernetes et Kubeflow.

Architecture de KServe
Architecture de KServe

Feast #

Cet add-on est une solution concue pour faciliter la gestion des caractéristiques (features) dans les systèmes ML. Elle permet aux équipes de définir, gérer, valider et servir des features aux modèles en production, simplifiant ainsi la gestion opérationnelle des systèmes ML à grande échelle.

L’architecture de Feast est conçue pour ingérer des données provenant de diverses sources, qu’il s’agisse de flux en temps réel, de traitements par lots ou de requêtes à la demande. Les features sont stockées dans des datastore adaptés aux besoins spécifiques, tels que des store en ligne pour des accès à faible latence ou des store hors ligne pour des traitements analytiques. Cette flexibilité garantit que les modèles disposent des données nécessaires au moment opportun, améliorant ainsi leur performance et leur fiabilité.

En s’intégrant de manière transparente avec des plateformes comme Kubeflow, Feast joue un rôle crucial dans l’unification et la standardisation de la gestion des features. Cette intégration assure une cohérence entre les phases d’entraînement et de déploiement des modèles, réduisant les risques d’incohérences et facilitant la maintenance des systèmes ML en production.

Architecture de Feast
Architecture de Feast

Elyra #

Cet add-on est une extension JupyterLab permettant de réduire la complexité du développement des modèles en fournissant un éditeur visuel de pipeline “low-code” compatibles avec Kubeflow Pipelines.

Création de Pipeline avec Elyra
Création de Pipeline avec Elyra

Bon à savoir #

  • projet “incubating” de la CNCF
  • supporte la chaîne de machine learning de bout en bout
  • très complet et flexible
  • complexité de l’installation et de la configuration
  • consommation élevée de ressources
  • courbe d’apprentissage élevée

Produits similaires #

Valohai est une plateforme MLOps qui vise à automatiser l’ensemble du cycle de vie des projets de ML. Elle est agnostique en matière de framework et d’infrastructure, permettant aux équipes de déployer leurs modèles sur des environnements cloud, sur site ou hybrides. Simple d’utilisation et très proche de Kubeflow en terme de capacités et fonctionnalités, il s’agit néanmoins d’une solution propriétaire et commerciale.

polyaxon est une plateforme open-source conçue pour l’orchestration et la gestion des workflows ML à grande échelle. Elle offre des fonctionnalités telles que le suivi automatique des métriques des modèles, l’optimisation des hyperparamètres et la gestion des versions des modèles. C’est une solution flexible qui propose également une intégration à Kubernetes et qui est très similaire à Kubeflow. Une solution entièrement managée de polyaxon est également proposée.