Kubernetes
Explore comment Kubernetes automatise le déploiement et la mise à l'échelle des modèles d'IA. Apprends à orchestrer Ultralytics YOLO26 sur K8s pour la vision par ordinateur haute performance.
Kubernetes, souvent appelé K8s, est une plateforme open source conçue pour automatiser le déploiement, la mise à l'échelle et la gestion d'applications conteneurisées. Initialement développé par Google et maintenu aujourd'hui par la Cloud Native Computing Foundation (CNCF), Kubernetes est devenu la norme pour orchestrer des logiciels dans le cloud. Dans le contexte de l'Artificial Intelligence (AI) et du Machine Learning (ML), il sert de couche d'infrastructure essentielle qui permet aux équipes d'ingénierie de gérer des flux de travail complexes, de l'entraînement distribué à l'inférence en production à haute disponibilité. En masquant le matériel sous-jacent, Kubernetes garantit que les applications s'exécutent de manière fiable et efficace, qu'elles soient hébergées sur site ou par l'intermédiaire de fournisseurs de cloud public.
Architecture et concepts fondamentaux#
Au cœur de son fonctionnement, Kubernetes repose sur une architecture de cluster, constituée d'un ensemble de machines de travail appelées nœuds. Ces nœuds exécutent des charges de travail de conteneurisation, tandis qu'un plan de contrôle gère l'état global du cluster. La plus petite unité déployable dans Kubernetes est un « Pod », qui encapsule un ou plusieurs conteneurs partageant des ressources de stockage et de réseau. Cette abstraction est vitale pour les applications de computer vision, car elle permet aux développeurs de regrouper des dépendances — telles que des bibliothèques CUDA spécifiques pour les Graphics Processing Units (GPUs) — dans un environnement cohérent. Les principaux services cloud tels qu'Amazon Elastic Kubernetes Service (EKS), Azure Kubernetes Service (AKS) et Google Kubernetes Engine (GKE) fournissent des versions gérées de cette architecture, ce qui simplifie la charge de maintenance pour les équipes de science des données.
Pourquoi Kubernetes est important pour l'IA#
La principale valeur de Kubernetes dans les Machine Learning Operations (MLOps) réside dans sa capacité à gérer des charges de travail dynamiques. Les modèles d'IA nécessitent souvent une puissance de calcul massive pendant l'entraînement et une faible latence d'inférence lors du déploiement.
- Scalabilité : Kubernetes utilise la mise à l'échelle automatique pour ajuster les ressources de manière autonome. En cas de pic soudain de trafic, le composant Horizontal Pod Autoscaler peut augmenter le nombre de pods d'inférence pour maintenir la scalabilité sans intervention manuelle.
- Optimisation des ressources : L'allocation efficace de matériel coûteux est cruciale. Kubernetes permet le partage fractionné des GPU et l'affinité de nœud, garantissant que les modèles d'apprentissage profond ne consomment des ressources que lorsque des tâches actives en ont besoin.
- Déploiement résilient : Garantir une haute disponibilité lors du déploiement du modèle est indispensable. Si un nœud tombe en panne, Kubernetes redémarre automatiquement les pods affectés sur des nœuds sains, évitant ainsi toute interruption de service pour les services API critiques.
Applications concrètes#
Kubernetes constitue l'épine dorsale de nombreuses implémentations d'IA à grande échelle dans divers secteurs :
-
Gestion du trafic des villes intelligentes : Une municipalité peut déployer des modèles Ultralytics YOLO26 pour analyser les flux vidéo provenant de milliers d'intersections. Grâce à Kubernetes, le système peut augmenter dynamiquement les ressources aux heures de pointe pour gérer la charge accrue de détection d'objets et les réduire la nuit pour réaliser des économies. Cette approche est fondamentale pour les systèmes de gestion du trafic modernes.
-
Personnalisation dans le commerce électronique : Les détailleurs en ligne utilisent des systèmes de recommandation complexes construits sur des microservices. Un service peut gérer la génération de candidats tandis qu'un autre gère le réclassement. Kubernetes orchestre ces différents services, permettant aux équipes de mettre à jour le réseau de neurones de classement de manière indépendante sans perturber l'ensemble de l'expérience d'achat, facilitant ainsi l'intégration continue.
Différence entre Kubernetes et Docker#
Une source fréquente de confusion concerne la relation entre Kubernetes et Docker. Ce ne sont pas des concurrents, mais plutôt des technologies complémentaires. Docker est un outil permettant de créer et d'exécuter des conteneurs individuels (en empaquetant l'application), tandis que Kubernetes est un outil permettant de gérer un parc de ces conteneurs sur plusieurs machines. Tu utilises Docker pour intégrer tes poids de modèle et ton code dans une image, puis Kubernetes pour déterminer où, quand et combien de copies de cette image s'exécutent en production.
Exemple : Script d'inférence pour la conteneurisation#
Pour déployer un modèle sur Kubernetes, les développeurs commencent généralement par un script Python qui sert de point d'entrée pour le conteneur. Le code suivant démontre une tâche d'inférence simple utilisant le modèle Ultralytics YOLO26. Ce script s'exécuterait à l'intérieur d'un pod, en traitant les requêtes entrantes.
from ultralytics import YOLO
# Load the lightweight YOLO26 model
model = YOLO("yolo26n.pt")
# Perform inference on an image source
# In a K8s pod, this would likely process API payloads
results = model("https://ultralytics.com/images/bus.jpg")
# Output the detection count for logging
print(f"Detected {len(results[0].boxes)} objects in the frame.")Outils et écosystème#
L'écosystème Kubernetes comprend un vaste ensemble d'outils adaptés à la science des données. Kubeflow est une boîte à outils populaire dédiée à la simplification, à la portabilité et à la mise à l'échelle des déploiements de flux de travail de ML sur Kubernetes. Pour surveiller la santé des clusters et les métriques des applications, les ingénieurs s'appuient souvent sur Prometheus. Pour simplifier davantage la complexité de l'entraînement et du déploiement de modèles dans ces environnements, la plateforme Ultralytics offre une interface unifiée qui automatise la gestion des jeux de données et l'entraînement des modèles, permettant aux utilisateurs d'exporter des modèles prêts pour les clusters de cloud computing. En outre, des gestionnaires de paquets comme Helm aident à gérer des applications Kubernetes complexes par le biais de graphiques réutilisables.






