Yolo Vision Shenzhen
Shenzhen
Rejoindre maintenant
Glossaire

Docker

Simplifiez les flux de travail IA/ML avec Docker ! Apprenez à déployer des modèles, à assurer la reproductibilité et à évoluer efficacement dans différents environnements.

Docker est une plateforme open-source qui automatise le déploiement, la mise à l'échelle et la gestion des applications grâce à la conteneurisation. Dans le domaine en pleine évolution de l'intelligence l'intelligence artificielle (IA), Docker résout un problème crucial connu sous le nom de "fonctionne sur ma machine". En empaquetant un modèle d'apprentissage machine (ML) modèle d'apprentissage automatique (ML) avec son son code, son moteur d'exécution, ses outils système et ses bibliothèques dans une unité standardisée appelée conteneur, Docker garantit que le logiciel s'exécutera strictement de la même manière, quel que soit l'environnement dans lequel il est utilisé. Docker garantit que le logiciel fonctionnera strictement de la même manière, quel que soit l'environnement informatique. Cette cohérence est vitale pour les MLOps modernes, en facilitant transitions fluides du développement local à l'infrastructure l'infrastructure informatique en nuage ou les appareils périphériques.

Concepts de base de Docker

Pour comprendre Docker, il faut se familiariser avec trois composants fondamentaux qui définissent son flux de travail.

  • Dockerfile : Il s'agit d'un document texte contenant toutes les commandes qu'un utilisateur pourrait appeler sur la ligne de commande pour assembler une image. pour assembler une image. Pour un projet d'IA, un Dockerfile agit comme une recette, spécifiant le système d'exploitation de base, en installant des langages comme Pythonet en mettant en place les nécessaires tels que PyTorch ou TensorFlow.
  • Image Docker : Une image est un modèle en lecture seule contenant des instructions pour créer un conteneur Docker. Elle capture l'état de l'application à un moment précis. Les développeurs utilisent souvent des images de base optimisées provenant de registres comme NVIDIA NGC afin de tirer parti des pilotes préinstallés pour les cartes graphiques. GPU préinstallés.
  • Conteneur Docker : Un conteneur est une instance exécutable d'une image. Il isole l'application du système du système hôte tout en partageant le noyau du système d'exploitation de l'hôte. Cette isolation garantit que les conflits logiciels sont minimiser les conflits logiciels, ce qui est essentiel pour stable.

Docker dans les applications d'IA du monde réel

Docker est indispensable pour déployer des solutions robustes de solutions robustes de vision artificielle (CV).

  1. Déploiement de l'IA en périphérie : Lors du déploiement de modèles sur des appareils à ressources limitées tels que le NVIDIA Jetson, les conteneurs Docker offrent un environnement environnement léger qui inclut des dépendances spécifiques telles que OpenCV et des bibliothèques spécifiques au matériel. Par exemple, un conteneur Ultralytics YOLO11 emballé dans un conteneur Docker peut facilement être transmis à des milliers de caméras distantes pour la détection d'objets sans se soucier de la configuration de la configuration de chaque appareil.
  2. Recherche et formation reproductibles : Dans la recherche universitaire et industrielle, la reproduction des résultats est critiques. En utilisant Docker, les chercheurs peuvent geler la version exacte de chaque bibliothèque utilisée lors de l'apprentissage du modèle. l'apprentissage du modèle. Cela élimine les divergences causées par les des mises à jour logicielles et permet à d'autres de vérifier les résultats ou de s'appuyer sur le travail, ce qui favorise une meilleure collaboration dans le domaine de la science des données. science des données.

Intégrer Docker à YOLO

L'exécution de l'inférence dans un conteneur Docker permet de s'assurer que votre environnement reste propre et que vos dépendances n'entrent pas en conflit avec d'autres paquets au niveau du système. pas de conflit avec d'autres paquets au niveau du système. Vous trouverez ci-dessous un simple script Python qui s'exécuterait typiquement dans un conteneur Docker pour exécuter des tâches de segmentation ou de segmentation ou de détection d'images.

from ultralytics import YOLO

# Load the YOLO11 model (downloads automatically if not present)
model = YOLO("yolo11n.pt")

# Perform object detection on an online image source
results = model("https://ultralytics.com/images/bus.jpg")

# Print the number of objects detected to verify inference
print(f"Detected {len(results[0].boxes)} objects in the image.")

Docker vs. machines virtuelles

Si les deux technologies isolent les applications, elles fonctionnent différemment.

  • Machines virtuelles (VM) : Une VM émule un système informatique complet, y compris un système d'exploitation invité complet. invité. Les VM sont donc plus lourdes et plus lentes à démarrer. Red Hat fournit une comparaison détaillée illustrant les différences architecturales.
  • Conteneurs Docker : Les conteneurs virtualisent le système d'exploitation plutôt que le matériel. Ils partagent le noyau de l'hôte, ce qui les rend beaucoup plus légers et efficaces. Cette efficacité est cruciale lorsqu'il s'agit de déploiement de modèles haute performance tels que le futur YOLO26, qui vise à maximiser la vitesse et la précision avec une avec un minimum de frais généraux.

Relations avec Kubernetes

Docker et Kubernetes sont des outils distincts mais complémentaires. complémentaires. Docker est utilisé pour créer et exécuter des conteneurs individuels. Cependant, lorsqu'il s'agit de gérer des centaines de conteneurs sur un cluster de serveurs pour le service de modèles, un outil d'orchestration est nécessaire. Kubernetes coordonne la planification et l'exécution des conteneurs Docker, garantissant une haute disponibilité et l'évolutivité des agents d'IA d 'entreprise. Pour en savoir plus sur cette synergie, consultez la documentation de Kubernetes.

Les développements futurs de l'écosystème Ultralytics , tels que la future plateforme Ultralytics , s'appuieront sur ces principes de conteneurisation pour rationaliser l'approvisionnement en données, la formation et les flux de travail de déploiement. principes de conteneurisation pour rationaliser l'approvisionnement en données, la formation et les flux de travail de déploiement, abstraction faite des complexités de la gestion de l'infrastructure. les complexités de la gestion de l'infrastructure.

Rejoindre la communauté Ultralytics

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

Rejoindre maintenant