Guide de démarrage rapide de Docker pour Ultralytics
Ce guide est une introduction complète à la mise en place d'un environnement Docker pour vos projets Ultralytics . Docker est une plateforme permettant de développer, d'expédier et d'exécuter des applications dans des conteneurs. Elle est particulièrement utile pour garantir que le logiciel fonctionnera toujours de la même manière, quel que soit l'endroit où il est déployé. Pour plus de détails, visitez le dépôt Docker Ultralytics sur Docker Hub.
Ce que vous apprendrez
- Configuration de Docker avec le support de NVIDIA
- Installation de Ultralytics Images Docker
- Exécuter Ultralytics dans un conteneur Docker avec le support de CPU ou GPU
- Utilisation d'un serveur d'affichage avec Docker pour afficher les résultats de la détection de Ultralytics
- Montage de répertoires locaux dans le conteneur
Conditions préalables
- Assurez-vous que Docker est installé sur votre système. Si ce n'est pas le cas, vous pouvez le télécharger et l'installer à partir du site web de Docker.
- Assurez-vous que votre système dispose d'un pilote NVIDIA GPU et NVIDIA .
Configuration de Docker avec le support de NVIDIA
Tout d'abord, vérifiez que les pilotes NVIDIA sont correctement installés en lançant le programme :
Installation de NVIDIA Docker Runtime
Installons maintenant le runtime Docker NVIDIA pour activer la prise en charge de GPU dans les conteneurs Docker :
# Add NVIDIA package repositories
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
distribution=$(lsb_release -cs)
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
# Install NVIDIA Docker runtime
sudo apt-get update
sudo apt-get install -y nvidia-docker2
# Restart Docker service to apply changes
sudo systemctl restart docker
VĂ©rifier NVIDIA Runtime avec Docker
Exécuter docker info | grep -i runtime
pour s'assurer que nvidia
apparaît dans la liste des durées d'exécution :
Installation de Ultralytics Docker Images
Ultralytics propose plusieurs images Docker optimisées pour diverses plateformes et cas d'utilisation :
- Dockerfile : image GPU , idéale pour la formation.
- Dockerfile-arm64 : Pour l'architecture ARM64, adaptée aux appareils tels que le Raspberry Pi.
- Dockerfile-cpu: CPU Version exclusive pour les environnements d'inférence et nonGPU .
- Dockerfile-jetson : Optimisé pour NVIDIA Jetson devices.
- Dockerfile-python: Environnement minimal Python pour les applications légères.
- Dockerfile-conda : Inclut les paquets Miniconda3 et Ultralytics installés via Conda.
Pour obtenir la dernière image :
# Set image name as a variable
t=ultralytics/ultralytics:latest
# Pull the latest Ultralytics image from Docker Hub
sudo docker pull $t
Exécuter Ultralytics dans un conteneur Docker
Voici comment exécuter le conteneur Docker Ultralytics :
En utilisant uniquement le CPU
Utilisation des GPU
# Run with all GPUs
sudo docker run -it --ipc=host --gpus all $t
# Run specifying which GPUs to use
sudo docker run -it --ipc=host --gpus '"device=2,3"' $t
Le -it
attribue un pseudo-TTY et garde stdin ouvert, ce qui vous permet d'interagir avec le conteneur. Le drapeau --ipc=host
permet de partager l'espace de noms IPC de l'hôte, ce qui est essentiel pour le partage de la mémoire entre les processus. L'indicateur --gpus
permet au conteneur d'accéder aux GPU de l'hôte.
Exécuter Ultralytics dans un conteneur Docker
Voici comment exécuter le conteneur Docker Ultralytics :
En utilisant uniquement le CPU
Utilisation des GPU
# Run with all GPUs
sudo docker run -it --ipc=host --gpus all $t
# Run specifying which GPUs to use
sudo docker run -it --ipc=host --gpus '"device=2,3"' $t
Le -it
attribue un pseudo-TTY et garde stdin ouvert, ce qui vous permet d'interagir avec le conteneur. Le drapeau --ipc=host
permet de partager l'espace de noms IPC de l'hôte, ce qui est essentiel pour le partage de la mémoire entre les processus. L'indicateur --gpus
permet au conteneur d'accéder aux GPU de l'hôte.
Note sur l'accessibilité des fichiers
Pour travailler avec des fichiers sur votre machine locale dans le conteneur, vous pouvez utiliser les volumes Docker :
# Mount a local directory into the container
sudo docker run -it --ipc=host --gpus all -v /path/on/host:/path/in/container $t
Remplacer /path/on/host
avec le chemin du répertoire sur votre machine locale et /path/in/container
avec le chemin d'accès souhaité dans le conteneur Docker.
Exécuter des applications d'interface utilisateur graphique (GUI) dans un conteneur Docker
Hautement expérimental - L'utilisateur assume tous les risques
Les instructions suivantes sont expérimentales. Le partage d'un socket X11 avec un conteneur Docker présente des risques potentiels pour la sécurité. Il est donc recommandé de tester cette solution uniquement dans un environnement contrôlé. Pour plus d'informations, consultez ces ressources sur l'utilisation de xhost
(1)(2).
Docker est principalement utilisé pour conteneuriser des applications d'arrière-plan et des programmes CLI , mais il peut également exécuter des programmes graphiques. Dans le monde Linux, deux serveurs graphiques principaux gèrent l'affichage graphique : X11 (également connu sous le nom de système X Window) et Wayland. Avant de commencer, il est essentiel de déterminer le serveur graphique que vous utilisez actuellement. Exécutez la commande suivante pour le savoir :
L'installation et la configuration d'un serveur d'affichage X11 ou Wayland sortent du cadre de ce guide. Si la commande ci-dessus ne renvoie rien, vous devrez commencer par faire fonctionner l'un ou l'autre sur votre système avant de continuer.
Exécuter un conteneur Docker avec une interface graphique
Exemple
Utiliser les GPU
If you're using [GPUs](#using-gpus), you can add the `--gpus all` flag to the command.
Si vous utilisez X11, vous pouvez exécuter la commande suivante pour permettre au conteneur Docker d'accéder au socket X11 :
xhost +local:docker && docker run -e DISPLAY=$DISPLAY \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-v ~/.Xauthority:/root/.Xauthority \
-it --ipc=host $t
Cette commande permet de définir le DISPLAY
Ă l'Ă©cran de l'hĂ´te, monte le socket X11 et fait correspondre la variable d'environnement .Xauthority
dans le conteneur. Le fichier xhost +local:docker
permet au conteneur Docker d'accéder au serveur X11.
Pour Wayland, utilisez la commande suivante :
xhost +local:docker && docker run -e DISPLAY=$DISPLAY \
-v $XDG_RUNTIME_DIR/$WAYLAND_DISPLAY:/tmp/$WAYLAND_DISPLAY \
--net=host -it --ipc=host $t
Cette commande permet de définir le DISPLAY
à l'écran de l'hôte, monte le socket Wayland et permet au conteneur Docker d'accéder au serveur Wayland.
Utiliser Docker avec une interface graphique
Vous pouvez maintenant afficher des applications graphiques dans votre conteneur Docker. Par exemple, vous pouvez exécuter la commandeCLI suivante pour visualiser les prédictions d'un modèleYOLO11 :
Essais
Une manière simple de valider que le groupe Docker a accès au serveur X11 est d'exécuter un conteneur avec un programme GUI tel que xclock
ou xeyes
. Vous pouvez également installer ces programmes dans le conteneur Docker Ultralytics pour tester l'accès au serveur X11 de votre serveur d'affichage GNU-Linux. Si vous rencontrez des problèmes, envisagez de définir la variable d'environnement -e QT_DEBUG_PLUGINS=1
. La définition de cette variable d'environnement permet la sortie d'informations de débogage, ce qui facilite le processus de dépannage.
Lorsque vous avez terminé avec l'interface graphique de Docker
Révoquer l'accès
Dans les deux cas, n'oubliez pas de révoquer l'accès au groupe Docker lorsque vous avez terminé.
Vous souhaitez afficher les résultats des images directement dans le terminal ?
Consultez le guide suivant pour visualiser les résultats de l'image à l'aide d'un terminal
Nous vous félicitons ! Vous êtes maintenant prêt à utiliser Ultralytics avec Docker et à tirer parti de ses puissantes fonctionnalités. Pour d'autres méthodes d'installation, n'hésitez pas à consulter la documentation de démarrage rapide deUltralytics .
FAQ
Comment configurer Ultralytics avec Docker ?
Pour configurer Ultralytics avec Docker, assurez-vous d'abord que Docker est installé sur votre système. Si vous avez un NVIDIA GPU , installez le runtime Docker NVIDIA pour activer le support GPU . Ensuite, téléchargez la dernière image Docker Ultralytics depuis Docker Hub à l'aide de la commande suivante :
Pour connaître les étapes détaillées, reportez-vous à notre guide de démarrage rapide de Docker.
Quels sont les avantages de l'utilisation des images Docker Ultralytics pour les projets d'apprentissage automatique?
L'utilisation des images Docker Ultralytics garantit un environnement cohérent sur différentes machines, répliquant le même logiciel et les mêmes dépendances. Ceci est particulièrement utile pour la collaboration entre équipes, l'exécution de modèles sur différents matériels et le maintien de la reproductibilité. Pour les formations basées sur GPU, Ultralytics fournit des images Docker optimisées telles que Dockerfile
pour l'utilisation générale de GPU et Dockerfile-jetson
pour NVIDIA Jetson. Explorer Ultralytics Hub Docker pour plus de détails.
Comment puis-je exécuter Ultralytics YOLO dans un conteneur Docker avec le support de GPU ?
Tout d'abord, assurez-vous que le moteur d'exécution Docker NVIDIA est installé et configuré. Ensuite, utilisez la commande suivante pour exécuter Ultralytics YOLO avec le support de GPU :
Cette commande configure un conteneur Docker avec un accès à GPU . Pour plus de détails, voir le Guide de démarrage rapide de Docker.
Comment visualiser les résultats de la prédiction YOLO dans un conteneur Docker avec un serveur d'affichage ?
Pour visualiser les résultats de la prédiction YOLO avec une interface graphique dans un conteneur Docker, vous devez permettre à Docker d'accéder à votre serveur d'affichage. Pour les systèmes fonctionnant sous X11, la commande est la suivante :
xhost +local:docker && docker run -e DISPLAY=$DISPLAY \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-v ~/.Xauthority:/root/.Xauthority \
-it --ipc=host ultralytics/ultralytics:latest
Pour les systèmes utilisant Wayland, utilisez :
xhost +local:docker && docker run -e DISPLAY=$DISPLAY \
-v $XDG_RUNTIME_DIR/$WAYLAND_DISPLAY:/tmp/$WAYLAND_DISPLAY \
--net=host -it --ipc=host ultralytics/ultralytics:latest
Vous trouverez plus d'informations dans la section Exécuter des applications d'interface utilisateur graphique (GUI) dans un conteneur Docker.
Puis-je monter des répertoires locaux dans le conteneur Docker Ultralytics ?
Oui, vous pouvez monter des répertoires locaux dans le conteneur Docker Ultralytics à l'aide de l'option -v
drapeau :
sudo docker run -it --ipc=host --gpus all -v /path/on/host:/path/in/container ultralytics/ultralytics:latest
Remplacer /path/on/host
avec le répertoire de votre machine locale et /path/in/container
avec le chemin d'accès souhaité à l'intérieur du conteneur. Cette configuration vous permet de travailler avec vos fichiers locaux dans le conteneur. Pour plus d'informations, reportez-vous à la section correspondante de la rubrique montage de répertoires locaux.