Kubeflow est une plateforme open source conçue pour l'apprentissage automatique et le MLOps sur Kubernetes, initialement introduite par Google. Elle fournit un ensemble de composants logiciels qui correspondent aux différentes étapes d'un cycle de vie typique de l'apprentissage automatique, y compris le développement de modèles, la formation, le service, et l'apprentissage automatique automatisé. Chaque composant peut être déployé séparément, permettant aux utilisateurs d'adopter uniquement les parties dont ils ont besoin plutôt que la plateforme entière
La plateforme vise à simplifier le déploiement et la gestion des systèmes d'apprentissage automatique en tirant parti de Kubernetes pour l'orchestration, la mise à l'échelle, et la gestion de l'infrastructure. Elle prend en charge une gamme de frameworks et d'outils populaires, ce qui en fait une option flexible pour les environnements de recherche et de production
Historique
Le projet Kubeflow a été annoncé pour la première fois à KubeCon + CloudNativeCon Amérique du Nord 2017 par les ingénieurs de Google David Aronchick, Jeremy Lewi, et Vishnu Kannan. L'initiative répondait à un manque perçu d'options flexibles pour construire des systèmes d'apprentissage automatique prêts pour la production. Le projet a également commencé comme un moyen pour Google de rendre open source la manière dont il exécutait TensorFlow en interne. La première version, Kubeflow 0.1, a été annoncée à KubeCon + CloudNativeCon Europe 2018. Kubeflow 1.0 a suivi en mars 2020, avec un article de blog public annonçant que de nombreux composants avaient atteint un « statut stable, » indiquant leur préparation pour une utilisation en production. En octobre 2022, Google a annoncé que Kubeflow avait demandé à rejoindre la Cloud Native Computing Foundation (CNCF). La fondation a voté pour accepter Kubeflow comme projet au stade d'incubation en juillet 2023
Composants
Kubeflow Notebooks pour le développement de modèles
Les modèles d'apprentissage automatique sont développés dans le composant Kubeflow Notebooks. Ce composant exécute des environnements de développement basés sur le web à l'intérieur d'un cluster Kubernetes, avec un support natif pour Jupyter Notebook, Visual Studio Code, et RStudio. Il permet aux data scientists de travailler dans des interfaces familières tout en bénéficiant des ressources du cluster
Kubeflow Pipelines pour la formation de modèles
Une fois développés, les modèles sont formés à l'aide du composant Kubeflow Pipelines. Cette plateforme construit et déploie des workflows d'apprentissage automatique portables et évolutifs basés sur des conteneurs Docker. Google Cloud Platform a adopté le DSL de Kubeflow Pipelines dans son produit Vertex AI Pipelines, démontrant son utilité dans les environnements cloud
Kubeflow Training Operator pour la formation de modèles
Pour certains modèles et bibliothèques d'apprentissage automatique, le Kubeflow Training Operator fournit des ressources personnalisées Kubernetes. Il exécute des tâches de formation distribuées ou non distribuées pour TensorFlow, PyTorch, Apache MXNet, XGBoost, et MPI sur Kubernetes. Ce composant simplifie l'orchestration de tâches de formation complexes
KServe pour le service de modèles
KServe, précédemment nommé KFServing, fournit des ressources personnalisées Kubernetes pour servir des modèles d'apprentissage automatique sur des frameworks incluant TensorFlow, XGBoost, scikit-learn, PyTorch, et ONNX. Il a été développé en collaboration par Google, IBM, Bloomberg, NVIDIA, et Seldon. Les adoptants publiquement divulgués incluent Bloomberg, Gojek, et la Wikimedia Foundation
Katib pour l'apprentissage automatique automatisé
Katib est un projet natif Kubernetes pour la formation et le développement automatisés de modèles d'apprentissage automatique. Il propose le réglage des hyperparamètres, l'arrêt précoce, et la recherche d'architecture neuronale, permettant une optimisation automatisée des performances des modèles
Chronologie des versions
Kubeflow a évolué à travers plusieurs versions depuis sa création. La version initiale 0.1 en 2018 a posé les fondations, et la version 1.0 en 2020 a marqué une étape importante pour la préparation à la production. Les versions ultérieures ont continué à affiner les composants et à ajouter des fonctionnalités, avec le projet obtenant le statut d'incubation CNCF en 2023
Adoption et écosystème
Kubeflow est utilisé dans diverses industries pour les workflows d'apprentissage automatique. Son intégration avec Kubernetes le rend attractif pour les organisations utilisant déjà l'orchestration de conteneurs. La conception modulaire de la plateforme permet aux équipes de le combiner avec d'autres outils dans l'écosystème apprentissage automatique, tels que des frameworks apprentissage profond et des services intelligence artificielle