Découvrez comment Kubernetes rationalise les charges de travail d'IA/ML grâce au déploiement de modèles évolutifs, à la formation distribuée et à la gestion efficace des ressources.
Kubernetes, souvent abrégé en K8s, est un système d'orchestration de conteneurs open-source qui automatise le déploiement, la mise à l'échelle et la gestion des applications conteneurisées. déploiement, la mise à l'échelle et la gestion des applications conteneurisées. Conçu à l'origine par des ingénieurs de Google est aujourd'hui maintenu par la Cloud Native Computing Foundation ( Google ). maintenue par la Cloud Native Computing Foundation (CNCF), Kubernetes est devenue la norme en norme industrielle pour l'exploitation de systèmes logiciels distribués et résilients. Dans les domaines en plein essor de l'intelligence artificielle (IA) et Machine Learning (ML), il sert de couche d'infrastructure couche d'infrastructure fondamentale, permettant aux équipes d'ingénieurs de gérer efficacement le cycle de vie complet de modèles complexes, du développement expérimental à la production à grande échelle. complexes, du développement expérimental à la production à grande échelle.
À la base, Kubernetes gère un cluster de machines informatiques, appelées nœuds, qui exécutent des charges de travail conteneurisées. Kubernetes s'appuie fortement sur la conteneurisation, unetechnologie qui conditionne le code avec ses dépendances, afin de garantir que les applications s'exécutent de manière cohérente dans divers environnements. environnements. Kubernetes introduit des abstractions telles que les "Pods", qui sont les plus petites unités déployables, et les "déploiements", qui maintiennent l'état souhaité d'une application. En découplant le logiciel du matériel matériel sous-jacent, il permet aux aux ingénieurs en vision artificielle de se concentrer sur sur la performance du modèle plutôt que sur la maintenance du serveur, en utilisant des services gérés tels que Amazon EKS ou Google Kubernetes Engine (GKE).
Pour les opérations d'apprentissage automatique (MLOps), Kubernetes est indispensable. Machine Learning Operations (MLOps), Kubernetes est indispensable car il résout le défi critique de l'évolutivité. l 'évolutivité. Les charges de travail d'IA modernes, en particulier celles l'apprentissage profond, requièrent d'importantes ressources informatiques. Kubernetes facilite l'apprentissage distribué en planifiant intelligemment intelligemment les tâches de formation sur plusieurs nœuds équipés de unités de traitement graphique (GPU). Pendant la phase de déploiement du modèle, K8s assure haute disponibilité des API d'inférence, en augmentant ou réduisant automatiquement le nombre de pods en cours d'exécution en fonction des demandes de trafic en temps réel, ce qui optimise à la fois les performances et les coûts. en temps réel, ce qui optimise à la fois les performances et les coûts.
Il est utile de comprendre en quoi Kubernetes diffère des autres outils d'infrastructure courants :
L'écosystème Kubernetes est vaste et comprend des outils tels que Helm pour la gestion des paquets et Prometheus pour surveiller la santé des clusters. Pour les flux de travail ML spécialisés, des plateformes comme Kubeflow s'exécutent au-dessus de Kubernetes pour rationaliser les pipelines de bout en bout. Pour l'avenir, la prochaine plateformeUltralytics est conçue pour simplifier davantage ces processus, en offrant un environnement complet pour la gestion des données et l'entraînement des modèles qui qui fait abstraction des complexités de l'infrastructure sous-jacente.
Pour déployer un modèle sur Kubernetes, vous avez d'abord besoin d'un script qui effectue l'inférence. Ce snippet Python démontre le chargement d'un modèle YOLO11 , qui peut ensuite être placé dans un conteneur Docker et planifié par K8s.
from ultralytics import YOLO
# Load a pre-trained YOLO11 model
model = YOLO("yolo11n.pt")
# Run inference on an image source
# This script would typically run inside a Kubernetes Pod
results = model("https://ultralytics.com/images/bus.jpg")
# Print the detected class names
for result in results:
for cls_id in result.boxes.cls:
print(f"Detected: {result.names[int(cls_id)]}")