Kubernetes
Découvre comment Kubernetes automatise le déploiement et la mise à l’échelle des modèles d’IA. Apprends à orchestrer Ultralytics YOLO26 sur K8s pour une 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 des applications conteneurisées. Développé à l’origine par Google et désormais maintenu par la Fondation pour l’informatique cloud native (CNCF), Kubernetes est devenu la référence pour l’orchestration des logiciels dans le cloud. Dans le contexte de l’intelligence artificielle (AI) et du machine learning (ML), il constitue la couche d’infrastructure essentielle qui permet aux équipes d’ingénierie de gérer des workflows complexes, de l’entraînement distribué à l’inférence en production à haute disponibilité. En faisant abstraction du 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 auprès de fournisseurs de cloud public.
Architecture et concepts fondamentaux#
Kubernetes repose sur une architecture en cluster composé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 essentielle pour les applications de vision par ordinateur, car elle permet aux développeurs de regrouper les dépendances — comme des bibliothèques CUDA spécifiques pour les unités de traitement graphique (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), proposent des versions gérées de cette architecture, ce qui simplifie la charge de maintenance des équipes de data science.
Pourquoi Kubernetes est important pour l’AI#
La principale valeur de Kubernetes pour les opérations de machine learning (MLOps) réside dans sa capacité à gérer des charges de travail dynamiques. Les modèles d’AI nécessitent souvent une puissance de calcul considérable pendant l’entraînement et une faible latence d’inférence lors du déploiement.
- Mise à l’échelle : Kubernetes utilise l’autoscaling pour ajuster automatiquement les ressources. En cas de hausse soudaine du trafic, l’autoscaler horizontal des Pods peut augmenter le nombre de Pods d’inférence afin de maintenir la mise à l’échelle sans intervention manuelle.
- Optimisation des ressources : L’allocation efficace de matériel coûteux est essentielle. Kubernetes permet le partage fractionné des GPU et l’affinité des nœuds, afin que les modèles de deep learning ne consomment des ressources que lorsque des tâches actives l’exigent.
- Déploiement résilient : Garantir une haute disponibilité lors du déploiement du modèle est essentiel. En cas de défaillance d’un nœud, Kubernetes redémarre automatiquement les Pods concernés sur des nœuds sains, évitant ainsi l’interruption des services API critiques.
Applications concrètes#
Kubernetes constitue l’épine dorsale de nombreuses implémentations d’AI à grande échelle dans divers secteurs :
-
Gestion du trafic dans les villes intelligentes : Une municipalité pourrait déployer des modèles Ultralytics YOLO26 pour analyser les flux vidéo provenant de milliers d’intersections. Avec Kubernetes, le système peut augmenter dynamiquement les ressources aux heures de pointe afin de gérer la charge accrue de détection d’objets, puis la réduire la nuit pour diminuer les coûts. Cette approche est fondamentale pour les systèmes modernes de gestion du trafic.
-
Personnalisation du commerce électronique : Les détaillants en ligne utilisent des systèmes de recommandation complexes reposant sur des microservices. Un service peut gérer la génération de candidats, tandis qu’un autre s’occupe du reranking. Kubernetes orchestre ces services distincts, ce qui permet aux équipes de mettre à jour indépendamment le réseau neuronal de classement sans perturber l’expérience d’achat globale, facilitant ainsi l’intégration continue.
Différences entre Kubernetes et Docker#
La relation entre Kubernetes et Docker est souvent source de confusion. Il ne s’agit pas de concurrents, mais de 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 sert à gérer un ensemble de ces conteneurs répartis 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 du conteneur. Le code suivant présente une tâche d’inférence simple utilisant le modèle Ultralytics YOLO26. Ce script s’exécuterait à l’intérieur d’un Pod et traiterait 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 éventail d’outils conçus pour la data science. Kubeflow est une boîte à outils populaire dédiée à la simplification, à la portabilité et à la mise à l’échelle des déploiements de workflows ML sur Kubernetes. Pour surveiller l’état du cluster 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 des modèles dans ces environnements, l’Ultralytics Platform propose 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. De plus, des gestionnaires de paquets comme Helm facilitent la gestion des applications Kubernetes complexes grâce à des charts réutilisables.









