Glossaire

Kubernetes

Découvre comment Kubernetes rationalise les charges de travail d'IA/ML grâce au déploiement de modèles évolutifs, à l'entraînement distribué et à la gestion efficace des ressources.

Entraîne les modèles YOLO simplement
avec Ultralytics HUB

En savoir plus

Kubernetes, souvent abrégé en K8s, est une plateforme open-source conçue pour automatiser le déploiement, la mise à l'échelle et la gestion des applications conteneurisées. Développée à l'origine par Google et désormais maintenue par la Cloud Native Computing Foundation (CNCF), Kubernetes fournit un cadre robuste pour exécuter des systèmes distribués de manière résiliente. Pour ceux qui travaillent dans le domaine de l'intelligence artificielle (IA) et de l'apprentissage automatique (ML), Kubernetes offre des outils puissants pour gérer le cycle de vie complexe des modèles, de la formation au déploiement et à l'inférence. Il permet de combler le fossé entre le développement de modèles ML et leur exécution fiable dans des environnements de production.

Concepts de base simplifiés

Kubernetes orchestre des conteneurs, qui sont des paquets légers et autonomes contenant des logiciels et leurs dépendances. Les concepts clés comprennent :

  • Pods : Les plus petites unités déployables dans Kubernetes, qui contiennent généralement un ou plusieurs conteneurs qui partagent les ressources et le réseau. Considère un Pod comme une enveloppe autour de ton application ML ou de ton conteneur de serveur d'inférence.
  • Nœuds : Machines de travail (virtuelles ou physiques) où les Pods s'exécutent. Kubernetes gère la distribution des Pods sur les Nodes disponibles.
  • Services : Une abstraction qui définit un ensemble logique de Pods et une politique pour y accéder, fournissant souvent une adresse IP ou un nom DNS stable pour les Pods dynamiques. Essentiel pour exposer les points de terminaison d'inférence ML.
  • Déploiements : Décris l'état souhaité pour ton application, en gérant les ReplicaSets (groupes de Pods identiques) pour assurer la disponibilité et gérer les mises à jour. Utile pour déployer de nouvelles versions de modèles sans temps d'arrêt.

Comprendre ces éléments constitutifs permet de concevoir des systèmes de ML évolutifs et résilients.

Pertinence en matière d'IA et d'apprentissage automatique

Kubernetes est devenu une pierre angulaire des opérations modernes d'apprentissage automatique (MLOps) en raison de plusieurs avantages :

  • Évolutivité : Les tâches de ML telles que l'entraînement de grands modèles ou le service de demandes d'inférence ont souvent des demandes de ressources fluctuantes. Kubernetes peut automatiquement faire évoluer le nombre de conteneurs (Pods) à la hausse ou à la baisse en fonction de la charge, ce qui garantit une utilisation efficace des ressources telles que les GPU.
  • Gestion des ressources : Elle permet un contrôle fin sur CPU et l'allocation de mémoire pour les conteneurs, empêchant ainsi la contention des ressources et garantissant les performances, ce qui est particulièrement critique lors de la gestion de ressources GPU coûteuses dans le cadre de plusieurs expériences ou services.
  • Portabilité et cohérence : Kubernetes fournit un environnement cohérent à travers différentes infrastructures, qu'il s'agisse de serveurs sur site ou de diverses plateformes de cloud computing comme Amazon EKS, Google GKE ou Azure AKS. Cela simplifie le déplacement des flux de travail ML entre le développement, les tests et la production. Tu peux souvent commencer par une configuration Docker et passer à l'échelle supérieure avec Kubernetes.
  • Automatisation et orchestration : Il automatise les tâches complexes telles que la découverte de services, l'équilibrage de charge, l'autoréparation (redémarrage des conteneurs défaillants) et la gestion de la configuration, réduisant ainsi la charge manuelle pour les équipes de ML.

Applications IA/ML dans le monde réel

  1. Formation de modèles distribués : Former de grands modèles d'apprentissage profond (DL), tels que des modèles complexes. Ultralytics YOLO pour la détection d'objets, nécessite souvent une immense puissance de calcul. Kubernetes peut gérer un cluster de machines pour l'entraînement distribué à l'aide de frameworks comme Kubeflow ou d'intégrations natives avec PyTorch ou TensorFlow. Il s'occupe de la planification des tâches d'entraînement, de la gestion de l'accès aux données et de l'allocation efficace des GPU entre les nœuds.
  2. Services d'inférence évolutifs : Le déploiement de modèles ML comme ceux pour l'inférence en temps réel nécessite une haute disponibilité et une faible latence. Kubernetes peut héberger des serveurs d'inférence (par exemple, en utilisant le serveur d'inférenceNVIDIA Triton , qui s'intègre aux modèles Ultralytics - voir le guideTriton ) derrière un équilibreur de charge. Celui-ci fait évoluer automatiquement le nombre de Pods de serveurs d'inférence en fonction du trafic entrant, ce qui garantit la réactivité même pendant les pics de charge pour des tâches telles que la classification d'images ou le traitement du langage naturel (NLP).

Kubernetes par rapport aux technologies connexes

  • Kubernetes vs Docker : Docker est un outil permettant de créer, d'expédier et d'exécuter des conteneurs individuels(conteneurisation). Kubernetes est un orchestrateur pour les conteneurs, qui gère potentiellement des milliers de conteneurs sur de nombreuses machines. Ils travaillent ensemble : tu construis généralement des images de conteneurs avec Docker, puis tu les déploies et les gères à l'aide de Kubernetes. Consulte le guide de démarrage rapide de Docker pour connaître les bases des conteneurs.
  • Kubernetes par rapport à l'informatique sans serveur : Les plateformes sans serveur (comme AWS Lambda ou Google Cloud Functions) font entièrement abstraction de la gestion des serveurs, en se concentrant sur les fonctions basées sur les événements. Kubernetes offre plus de contrôle sur l'infrastructure sous-jacente et convient mieux aux applications de longue durée ou aux services complexes avec état, bien que les frameworks sans serveur puissent fonctionner sur Kubernetes (par exemple, Knative).

Outils et écosystème

L'écosystème Kubernetes comprend de nombreux outils pour simplifier la gestion :

  • Helm : Un gestionnaire de paquets pour Kubernetes, qui aide à définir, installer et mettre à niveau des applications complexes.
  • Prometheus & Grafana : Outils open-source populaires pour la surveillance des clusters et des applications Kubernetes.
  • Intégrations des fournisseurs de cloud : Les services Kubernetes gérés (EKS, GKE, AKS) simplifient la configuration et la maintenance des clusters.
  • Plateformes ML : Des outils comme Kubeflow s'appuient sur Kubernetes pour fournir des flux de travail spécifiques à la ML. Des plateformes comme Ultralytics HUB visent à simplifier le pipeline de déploiement, en faisant parfois abstraction des complexités de Kubernetes pour faciliter le déploiement des modèles.

Kubernetes fournit une base puissante pour construire, déployer et gérer des applications AI/ML évolutives et fiables dans divers environnements, ce qui en fait une compétence cruciale dans le paysage MLOps.

Tout lire