Docker
Découvre comment Docker permet un déploiement d’IA reproductible. Apprends à empaqueter les modèles Ultralytics YOLO26 dans des conteneurs pour une mise à l’échelle fluide du cloud aux appareils edge.
Docker est une plateforme open source qui permet aux développeurs d’automatiser le déploiement, la mise à l’échelle et la gestion d’applications grâce à la conteneurisation. Dans le contexte de l’intelligence artificielle et du machine learning, Docker agit comme une unité logicielle standardisée qui regroupe le code et toutes ses dépendances — comme les bibliothèques, les outils système et les paramètres — afin que l’application s’exécute rapidement et de manière fiable d’un environnement informatique à un autre. Cela élimine le problème courant du « ça fonctionne sur ma machine », en garantissant qu’un réseau neuronal entraîné sur l’ordinateur portable d’un chercheur se comporte exactement de la même façon lorsqu’il est déployé sur un serveur cloud de grande envergure ou sur un appareil edge.
Pourquoi Docker est important pour l’IA et le machine learning#
Les opérations d’apprentissage automatique (MLOps) modernes reposent largement sur la reproductibilité et la portabilité. Un projet d’IA implique souvent une pile logicielle complexe, comprenant des versions spécifiques de Python, des pilotes CUDA pour l’accélération GPU et des frameworks d’apprentissage profond tels que PyTorch ou TensorFlow. La gestion manuelle de ces éléments entre différentes équipes et infrastructures est source d’erreurs.
Docker simplifie ce processus en créant des conteneurs légers et autonomes. Contrairement aux machines virtuelles (VMs) traditionnelles, qui nécessitent un système d’exploitation complet pour chaque instance, les conteneurs partagent le noyau du système d’exploitation de la machine hôte, tout en s’exécutant dans des espaces utilisateur isolés. Ils utilisent ainsi beaucoup moins de ressources et démarrent plus rapidement, ce qui est essentiel lors de la mise à l’échelle d’une infrastructure de déploiement de modèles ou de l’exécution de tâches d’entraînement distribuées.
Applications concrètes#
Docker est omniprésent dans le cycle de vie de l’IA, de l’expérimentation initiale au déploiement final.
-
Environnements d’entraînement cohérents : Une équipe de data science peut utiliser des images Docker pour partager un environnement de développement unifié. Par exemple, un chercheur travaillant sur la détection d’objets peut récupérer une image préconfigurée contenant tous les pilotes et bibliothèques nécessaires. Ainsi, lorsqu’il entraîne un modèle YOLO26, ses collègues peuvent reproduire les résultats, quelles que soient les différences entre leurs composants matériels.
-
Déploiement de l’IA edge : Dans le cadre de la vidéosurveillance des villes intelligentes, les modèles mis à jour doivent être envoyés à des milliers d’appareils edge, comme des caméras de circulation ou des drones. Les conteneurs Docker permettent aux ingénieurs de regrouper une nouvelle version d’un modèle et de la déployer à distance. Comme le conteneur inclut le runtime d’inférence, le processus de mise à jour est fluide et n’interfère pas avec le système d’exploitation principal de l’appareil.
Docker, Kubernetes et machines virtuelles#
Pour comprendre précisément son rôle, il est utile de distinguer Docker des technologies associées :
- Docker et machines virtuelles (VMs) : Les VMs virtualisent le matériel, ce qui signifie que chaque VM exécute un système d’exploitation complet (comme Windows ou Linux) au-dessus d’un hyperviseur. Cela consomme beaucoup de mémoire et de ressources CPU. Docker virtualise le système d’exploitation, ce qui rend les conteneurs beaucoup plus petits et plus rapides que les VMs.
- Docker et Kubernetes : Ces technologies sont complémentaires, et non concurrentes. Docker est l’outil utilisé pour créer et exécuter des conteneurs individuels. Kubernetes est une plateforme d’orchestration de conteneurs qui gère des clusters de conteneurs Docker et prend en charge des tâches comme la mise à l’échelle automatique, l’équilibrage de charge et l’auto-réparation dans les environnements de cloud computing à grande échelle.
Exemple : exécuter une inférence dans un conteneur#
L’exemple suivant montre à quoi pourrait ressembler un script Python dans un conteneur Docker conçu pour la vision par ordinateur. Ce script utilise le package ultralytics pour charger un modèle et effectuer une inférence. L’environnement du conteneur garantit que les dépendances appropriées (comme opencv-python et torch) sont déjà présentes.
from ultralytics import YOLO
# Load the YOLO26 model (weights are typically included in the Docker image)
model = YOLO("yolo26n.pt")
# Perform inference on an image source
# In a containerized microservice, this might process incoming API requests
results = model.predict("https://ultralytics.com/images/bus.jpg")
# Log the detection results
print(f"Detected {len(results[0].boxes)} objects in the image.")Intégrer Docker à ton workflow#
Pour commencer avec la conteneurisation, les développeurs définissent généralement un fichier Dockerfile, qui est un document texte contenant toutes les commandes nécessaires à l’assemblage d’une image. Une fois créées, ces images peuvent être stockées dans des registres comme Docker Hub ou le catalogue NVIDIA NGC, qui propose des conteneurs optimisés pour les GPU.
Si tu souhaites rationaliser le processus d’entraînement et de déploiement sans gérer manuellement les Dockerfiles, l’Ultralytics Platform propose des outils intégrés qui prennent en charge la complexité des environnements cloud. Tu peux ainsi te concentrer sur l’amélioration de la précision du modèle plutôt que sur la configuration de l’infrastructure. Tu peux également consulter notre guide de démarrage rapide Docker pour apprendre à exécuter immédiatement des modèles Ultralytics dans des conteneurs.









