Skip to content

Guide de démarrage rapide de Docker pour Ultralytics

Ultralytics Docker Package Visual

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.

Version de l'image Docker Docker Pulls

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 :

nvidia-smi

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 :

docker info | grep -i runtime

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

# Run with all GPUs
sudo docker run -it --ipc=host $t

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

# Run with all GPUs
sudo docker run -it --ipc=host $t

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 :

env | grep -E -i 'x11|xorg|wayland'

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 :

yolo predict model=yolo11n.pt show=True
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é.

xhost -local:docker
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 :

sudo docker pull ultralytics/ultralytics:latest

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 :

sudo docker run -it --ipc=host --gpus all ultralytics/ultralytics:latest

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.

📅C réé il y a 1 an ✏️ Mis à jour il y a 2 mois

Commentaires