Une boîte à outil pour le Machine Learning sur Kubernetes

Kubeflow est une suite d’outils pour exécuter des flux de travail de type Machine Learning sur des clusters Kubernetes. L’objectif de Kubeflow est de permettre d’exploiter les meilleures solutions de machine learning open-source sur un cluster Kubernetes de manière simple, portable et évolutive.

A l’origine Kubeflow est la transposition en open-source de TensorFlow Extended (TFX), qui est une plateforme end-to-end pour déployer des pipelines ML en production. Kubeflow permettait donc de simplifier l’exécution de jobs TensorFlow sur Kubernetes.

Aujourd’hui Kubeflow est devenu un framework permettant d’exécuter des pipelines complets de machine learning basés sur d’autres architectures que TensorFlow et TFX, mais Kubeflow est également un framework multi-cloud.

Les Data Scientists trouveront en Kubeflow une plateforme pour expérimenter et construire leurs pipelines de Machine Learning

Les Machine Learning Engineers et autres équipes opérationnelles trouveront en Kubeflow une plateforme MLOps automatisée complète, jusqu’à la livraison continue de modèle de machine learning.

Des workloads end-to-end de machine learning en environnement cloud hybride ou multi-cloud

Kubeflow est aujourd’hui supporté par la plupart des fournisseurs cloud majeurs tels que Google Cloud, AWS, Azure, IBM Cloud ou encore OpenShift. Kubeflow offre ainsi aux équipes ML la portabilité hybride et multi-cloud.

Grâce à Kubernetes, Kubeflow peut également s’installer on-premise ou sur son laptop, ce qui permet d’expérimenter localement, ou bien d’avoir des workflows hybrides avec par exemple le développement localement, l’entraînement on-premise et le déploiement des modèles de machine learning dans le cloud.

Les composants de Kubeflow

Kubeflow est un véritable écosystème open-source, et les différents composants Kubeflow permettent de piloter les principaux outils majeurs de machine learning afin de créer et d’exécuter ses propres workflows de machine learning sur Kubernetes

Le dashboard central

Les déploiements Kubeflow fournissent un dashboard central qui est une application web permettant notamment de naviguer entre les interfaces graphiques des autres composants Kubeflow installés sur le cluster tels que Notebooks, Pipelines, Katib, Artifact Store, …

A travers le dashboard central on peut accéder à de nombreaux raccourcis vers des actions spécifiques comme uploader un pipeline, voir tous les pipelines exécutés, voir les exécutions récentes de pipelines, créer un serveur notebook, …

Metadata

Le projet Metadata permet de suivre et gérer toutes les métadonnées des workflow de Machine Learning. Les métadonnées comprennent:

Grâce à un SDK Python il est possible d’enregistrer ses propres métadonnées.

Notebooks

Ce service permet de créer et de gérer des notebooks Jupyter dans Kubeflow. Ces notebooks vont permettre de créer des workflow ML interactifs et expérimentaux, mais également de les partager à travers l’organisation avec une gestion fine des équipes et des individus qui peuvent y accéder.

L’intégration de notebooks au sein de Kubeflow offre de nombreux avantages comme:

Fairing

La librairie Fairing permet simplement de construire, d’entraîner et de déployer des jobs de machine learning à distance.

Grâce à Fairing et quelques lignes de code Python on pourra par exemple entraîner un modèle localement ou sur Google Cloud AI Platform, directement depuis un script Python ou depuis un Notebook. Ensuite, le modèle entraîné pourra être déployé sur le cloud sous la forme d’un endpoint qui pourra être appelé pour faire des prédictions.

En pratique, Fairing va packager un notebook Jupyter ou du code Python (fonction, fichier) et ses dépendances en une image Docker qui pourra être déployée et exécutée sur Kubeflow ou AI Platform.

Feature Store

Le Feature Store, aussi appelé Feast, est une librairie open-source qui permet de gérer les features pour les modèles en production. Feast se présente comme la source de vérité pour toutes les données liées aux features pour tous les modèles d’une organisation. Feast permet de définir des features stores afin de faciliter la construction de modèles et la récupération des features des données pendant l’entraînement et l’inférence. Feast permet d’ingérer les données d’une grande variété de sources de type batch ou streaming.

Frameworks pour l’entraînement

Kubeflow permet d’utiliser nombreux framework de machine learning pour définir et entraîner des modèles, notamment à travers des ressources et opérateurs Kubernetes pour TensorFlow, PyTorch, MXNet et MPI.

Hyperparameter Tuning

Kubeflow utilise Katib pour automatiser le réglage des hyperparamètres et de l’architecture des modèles de machine learning, par exemple le learning rate, le nombre de couches d’un réseau de neurones, le nombre de noeuds dans chaque couche.

Katib supporte les frameworks supportés par Kubeflow, dont TensorFlow, PyTorch, MXNet.

Pipelines

Kubeflow Pipelines est une plateforme pour construire, déployer et orchester des workflows end-to-end de machine learning basés sur des containers. Kubeflow Pipelines permet de réutiliser des composants et pipelines pour assembler rapidement des solutions complètes, sans avoir à tout reconstruire à chaque fois.

Outils pour servir des modèles

Kubeflow supporte des systèmes open-source comme KFServing, Seldon Core BentoML, NVIDIA Triton Inference Server, qui permettent de servir des modèles écrits dans plusieurs frameworks de machine learning.

Kubeflow supporte également TensorFlow Serving dans le cas où seuls des modèles TensorFlow seront mis en service.

Ces frameworks encapsulent la complexité liée à la mise en service de modèles de machine learning incluant la prédiction, le pré-processing, le post-processing, l’explicabilité, l’autoscaling (sur GPU également), gestion du réseau, les déploiements canaris, etc.

Multi-tenancy

Kubeflow permet d’isoler les différents utilisateurs à travers le contrôle des namespaces et des ressources crées par les utilisateurs dans un deployment. Kubeflow fournit ainsi une manière fiable d’isoler et de protéger ses propres ressources, sans voir ou changer accidentellement les ressources des autres.

Autres composants

Kubeflow supporte Nuclio, un framework de fonctions serverless extrêmement rapide centré sur les données, les I/O et les workloads intensifs en calcul. Nuclio est une alternative à AWS Lambda ou Google Cloud Functions.

Liens Intéressants