Glossaire

Conteneurisation

Découvrez la puissance de la conteneurisation pour les projets d'IA/ML. Rationalisez les flux de travail, assurez la cohérence et évoluez efficacement grâce à des outils de pointe.

La conteneurisation est une forme légère de virtualisation du système d'exploitation qui permet de regrouper une application et ses dépendances, telles que les bibliothèques, les cadres et les fichiers de configuration, dans une unité unique et isolée appelée conteneur. Cela résout le problème courant des logiciels qui ne fonctionnent pas correctement lorsqu'ils sont déplacés d'un environnement informatique à un autre. Dans le contexte de l'apprentissage automatique, la conteneurisation garantit que les modèles d'IA complexes et leurs piles logicielles complexes sont portables, reproductibles et évolutifs, ce qui constitue un élément essentiel des pratiques modernes de MLOps.

La technologie de conteneurisation la plus répandue est Docker, qui offre un moyen standardisé de construire, d'expédier et d'exécuter des conteneurs. Chaque conteneur partage le noyau de l'OS du système hôte, mais s'exécute en tant que processus isolé dans l'espace utilisateur. Cette approche, normalisée par des organisations telles que l'Open Container Initiative (OCI), rend les conteneurs beaucoup plus efficaces en termes de ressources et plus rapides à lancer que les machines virtuelles traditionnelles. Vous pouvez en apprendre davantage sur les principes fondamentaux de la conteneurisation en consultant des ressources telles que l'explication de Red Hat sur les conteneurs.

Conteneurisation et concepts connexes

Il est essentiel de comprendre les distinctions entre la conteneurisation et les technologies similaires pour apprécier son rôle dans les flux de travail de l'IA/ML.

  • Machines virtuelles (VM) : Bien que les conteneurs et les machines virtuelles offrent tous deux des environnements isolés, ils fonctionnent à des niveaux différents. Une VM émule une pile matérielle complète, y compris un système d'exploitation invité complet, ce qui la rend lourde et lente à démarrer. En revanche, un conteneur virtualise le système d'exploitation, en partageant le noyau de l'hôte. Les conteneurs sont donc beaucoup plus légers et plus rapides, même si les machines virtuelles peuvent offrir un degré plus élevé d'isolation au niveau du matériel.
  • Docker: La conteneurisation est le concept sous-jacent. Docker est la plateforme la plus populaire qui met en œuvre ce concept, en fournissant les outils pour créer et gérer des conteneurs individuels. Pour un démarrage pratique, Ultralytics fournit un guide de démarrage rapide de Docker pour l'exécution de modèles YOLO. Vous pouvez également explorer les ressources officielles de Docker pour plus d'informations.
  • Kubernetes: Alors que Docker gère des conteneurs individuels sur un hôte, Kubernetes est une plateforme d'orchestration de conteneurs. Elle automatise le déploiement, la mise à l'échelle et la gestion de milliers de conteneurs sur des grappes de machines. Un flux de travail courant consiste à créer un conteneur avec Docker, puis à le gérer à l'échelle à l'aide de Kubernetes. Pour en savoir plus, consultez la documentation officielle de Kubernetes.
  • L'informatique sans serveur: L'informatique sans serveur est un modèle d'exécution dans lequel les fournisseurs de cloud gèrent automatiquement l'infrastructure nécessaire à l'exécution du code. Cela permet de s'abstraire entièrement des serveurs et des conteneurs. Alors que la conteneurisation permet de contrôler l'environnement de l'application, les plateformes sans serveur comme AWS Lambda donnent la priorité à la facilité d'utilisation en dissimulant toute la gestion de l'infrastructure.

Applications concrètes de l'IA/ML

La conteneurisation est largement utilisée tout au long du cycle de vie de l'IA/ML, de l'expérimentation au déploiement du modèle de production.

  1. Déploiement de modèles de détection d'objets : Un modèle YOLO d'Ultralytics entraîné pour la détection d'objets peut être placé dans un conteneur Docker. Ce conteneur comprend les poids du modèle, le script d'inférence et toutes les dépendances nécessaires, comme les bibliothèques PyTorch et NVIDIA CUDA. Cette unité autonome peut ensuite être déployée de manière cohérente sur différentes plateformes, qu'il s'agisse de puissants GPU en nuage ou d'appareils Edge AI aux ressources limitées, en veillant à ce que le modèle fonctionne comme prévu, quel que soit l'environnement.
  2. Servir les modèles NLP en tant que microservices : Une équipe qui développe une application de traitement du langage naturel (NLP) utilisant des modèles provenant de plateformes comme Hugging Face peut conteneuriser différents composants (par exemple, le prétraitement du texte, l'inférence du modèle, le point de terminaison de l'API) en tant que microservices distincts. Ces conteneurs peuvent être gérés à l'aide de Kubernetes, ce qui permet une mise à l'échelle et une mise à jour indépendantes de chaque composant. Cela suit les principes d'une architecture microservices et conduit à un système plus résilient. Des plateformes comme Ultralytics HUB s'appuient sur les principes de la conteneurisation pour rationaliser la gestion et le déploiement des modèles.

En fournissant un environnement cohérent et isolé, la conteneurisation est devenue une pierre angulaire du développement de logiciels modernes, en particulier dans les domaines en évolution rapide de l'IA et de la vision par ordinateur (VA). Elle permet aux développeurs et aux ingénieurs MLOps de créer, tester et déployer des applications d'IA fiables avec plus de rapidité et d'efficacité sur des plateformes telles que Google Cloud et Amazon Elastic Container Service.

Rejoindre la communauté Ultralytics

Rejoignez l'avenir de l'IA. Connectez-vous, collaborez et évoluez avec des innovateurs mondiaux.

S'inscrire
Lien copié dans le presse-papiers