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 un processus de déploiement de logiciels qui regroupe le code d'une application avec tous les fichiers et bibliothèques dont elle a besoin pour fonctionner sur n'importe quelle infrastructure. dont elle a besoin pour fonctionner sur n'importe quelle infrastructure. En encapsulant le logiciel et ses dépendances dans une seule unité légère, appelée conteneur, les développeurs s'assurent que l'application fonctionne de manière cohérente, quelle que soit l'infrastructure. légère, appelée conteneur, les développeurs s'assurent que l'application fonctionne de manière cohérente, quel que soit l'environnement informatique. de l'environnement informatique. Dans le domaine en pleine évolution du l'apprentissage automatique (ML), la conteneurisation est est devenue la pierre angulaire des stratégies MLOps modernes. Elle résout le fameux problème du "ça marche sur ma machine" en isolant l'environnement d'exécution. Elle résout le fameux problème du "ça marche sur ma machine" en isolant l'environnement d'exécution, en rendant portables les flux de travail complexes de flux de travail complexes de vision par ordinateur (CV) portables, reproductibles et facilement extensibles, reproductibles et facilement extensibles.
Pour les data scientists et les ingénieurs ML, la gestion des dépendances telles que les versions spécifiques de Python, PyTorchet les CUDA peuvent s'avérer difficiles. La conteneurisation permet de résoudre ce problème en créant un environnement immuable.
Pour comprendre la conteneurisation, il faut se familiariser avec quelques technologies clés qui normalisent la façon dont les conteneurs sont construits et gérés. de construction et de gestion des conteneurs.
Il est important de faire la distinction entre les conteneurs et les les machines virtuelles. Une VM exécute un système d'exploitation système d'exploitation invité complet avec un accès virtuel aux ressources de l'hôte par l'intermédiaire d'un hyperviseur. Cela crée un haut niveau d'isolation d'isolation, mais entraîne des frais généraux importants. À l'inverse, les conteneurs virtualisent le système d'exploitation, ce qui permet à plusieurs instances isolées de l'espace utilisateur de fonctionner sur un seul noyau. plusieurs instances isolées de l'espace utilisateur de s'exécuter sur un seul noyau. Cette distinction fait des conteneurs le choix privilégié pour les microservices et les applications Edge AI. pour les microservices et les applications d'intelligence artificielle où les ressources sont limitées.
La conteneurisation est appliquée à différentes étapes du cycle de vie de l'IA, de la recherche à la production.
Dans la recherche universitaire et industrielle, la reproduction des résultats est essentielle. En définissant l'environnement exact dans une image les chercheurs s'assurent que leurs expériences de formation de modèles peuvent être reproduites par n'importe qui, n'importe qui, n'importe où. Cela permet d'éliminer les divergences causées par des versions de bibliothèques ou des configurations de systèmes différentes. Par exemple, une équipe équipe travaillant sur la segmentation d'images peut partager une une image Docker contenant leurs outils de traitement de données et leurs architectures de modèles spécifiques, garantissant ainsi des résultats cohérents. résultats.
Le déploiement de modèles d'apprentissage profond sur des appareils de pointe, tels que le NVIDIA Jetson, nécessite des environnements optimisés. Les conteneurs permettent aux développeurs d'emballer un modèle comme YOLO11 avec seulement les dépendances nécessaires à l'exécution. Ce paquet peut être déployé sur des milliers d'appareils distants, mettant à jour les capacités de détection d'objets des caméras de sécurité. les capacités de détection d'objets des caméras de sécurité ou des robots autonomes sans intervention manuelle. Pour en savoir plus, consultez la rubrique cas d'utilisation des conteneurs AWS.
Lors de la conteneurisation d'une application, vous créez généralement un script qui sert de point d'entrée. Le code Python
suivant démontre un flux de travail d'inférence simple en utilisant le script ultralytics paquet. Ce script pourrait être le
processus principal s'exécutant à l'intérieur d'un conteneur Docker conçu pour
inférence en temps réel.
from ultralytics import YOLO
# Load the YOLO11 model (ensure weights are present in the container)
model = YOLO("yolo11n.pt")
# Perform inference on an image URL
# In a container, this might process incoming video streams or API requests
results = model.predict(source="https://ultralytics.com/images/bus.jpg", save=True)
# Print detection results to verify operation
for result in results:
print(f"Detected {len(result.boxes)} objects in the frame.")
Ce script démontre efficacement à quel point l'empreinte du code peut être minimale lorsque les dépendances sont gérées par l'environnement du conteneur. l'environnement du conteneur. En tirant parti des les poids des modèles inclus dans l'image, le conteneur devient une unité d'intelligence autonome prête à être déployée. Pour en savoir plus sur les bases des conteneurs, la documentation sur les conteneurs de documentation de Red Hat sur les conteneurs offre d'excellents d'excellents documents d'introduction.