Passer au contenu

Guide de démarrage rapide Docker pour Ultralytics

Visuel du paquet Docker Ultralytics

Ce guide sert d'introduction complète à la configuration d'un environnement Docker pour vos projets Ultralytics. Docker est une plateforme de développement, de livraison et d'exécution d'applications dans des conteneurs. Il 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, consultez le référentiel Docker Ultralytics sur Docker Hub.

Version de l'image Docker Pull Docker

Ce que vous allez apprendre

  • Configuration de Docker avec prise en charge NVIDIA
  • Installation des images Docker Ultralytics
  • Exécution d'Ultralytics dans un conteneur Docker avec prise en charge CPU ou GPU
  • Utilisation d'un serveur d'affichage avec Docker pour afficher les résultats de détection Ultralytics
  • Montage de répertoires locaux dans le conteneur



Regarder : Comment démarrer avec Docker | Utilisation du package python Ultralytics à l'intérieur de la démo en direct de Docker 🎉


Prérequis

  • 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 depuis le site web de Docker.
  • Assurez-vous que votre système possède un GPU NVIDIA et que les pilotes NVIDIA sont installés.

Configuration de Docker avec prise en charge NVIDIA

Tout d'abord, vérifiez que les pilotes NVIDIA sont correctement installés en exécutant :

nvidia-smi

Installation du runtime NVIDIA Docker

Maintenant, installons le runtime NVIDIA Docker pour activer la prise en charge 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érification du runtime NVIDIA avec Docker

Exécuter docker info | grep -i runtime afin de garantir que nvidia apparaît dans la liste des runtimes :

docker info | grep -i runtime

Installation des images Docker Ultralytics

Ultralytics propose plusieurs images Docker optimisées pour diverses plateformes et cas d'utilisation :

  • Dockerfile : Image GPU, idéale pour l'entraînement.
  • Dockerfile-arm64 : Pour l'architecture ARM64, convient aux appareils tels que Raspberry Pi.
  • Dockerfile-cpu : Version CPU uniquement pour l'inférence et les environnements sans GPU.
  • Dockerfile-jetson-jetpack4 : Optimisé pour les appareils NVIDIA Jetson exécutant NVIDIA JetPack 4.
  • Dockerfile-jetson-jetpack5 : Optimisé pour les appareils NVIDIA Jetson exécutant NVIDIA JetPack 5.
  • Dockerfile-jetson-jetpack6 : Optimisé pour les appareils NVIDIA Jetson exécutant NVIDIA JetPack 6.
  • Dockerfile-jupyter : Pour le développement interactif utilisant JupyterLab dans le navigateur.
  • Dockerfile-python : Environnement python minimal pour les applications légères.
  • Dockerfile-conda : Inclut Miniconda3 et le package Ultralytics installé via Conda.

Pour extraire 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écution d'Ultralytics dans un conteneur Docker

Voici comment exécuter le conteneur Docker Ultralytics :

Utilisation du CPU uniquement

# Run without GPU
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

L'argument -it l'indicateur assigne un pseudo-TTY et maintient stdin ouvert, vous permettant d'interagir avec le conteneur. Le --ipc=host l'indicateur permet le partage de l'espace de noms IPC de l'hôte, essentiel pour le partage de mémoire entre les processus. Le --gpus l'indicateur permet au conteneur d'accéder aux GPU de l'hôte.

Remarque sur l'accessibilité des fichiers

Pour travailler avec des fichiers sur votre machine locale à l'intérieur du conteneur, vous pouvez utiliser des 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

Remplacez /path/on/host par le chemin d'accès au répertoire sur votre machine locale et /path/in/container par le chemin d'accès souhaité à l'intérieur du 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 pose des risques de sécurité potentiels. Par conséquent, il est recommandé de tester cette solution uniquement dans un environnement contrôlé. Pour plus d'informations, consultez ces ressources sur la façon d'utiliser xhost(1)(2).

Docker est principalement utilisé pour conteneuriser les applications d'arrière-plan et les programmes CLI, mais il peut également exécuter des programmes graphiques. Dans le monde Linux, deux principaux serveurs graphiques gèrent l'affichage graphique : X11 (également connu sous le nom de X Window System) et Wayland. Avant de commencer, il est essentiel de déterminer quel serveur graphique vous utilisez actuellement. Exécutez cette commande pour le savoir :

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

La configuration d'un serveur d'affichage X11 ou Wayland est hors du champ d'application de ce guide. Si la commande ci-dessus ne renvoie rien, vous devrez commencer par faire en sorte que l'un ou l'autre fonctionne pour votre système avant de continuer.

Exécution d'un conteneur Docker avec une GUI

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 autoriser le conteneur Docker à 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 définit la DISPLAY variable d'environnement sur l'affichage de l'hôte, monte le socket X11 et mappe le .Xauthority fichier au conteneur. La xhost +local:docker commande 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 définit la DISPLAY variable d'environnement sur l'affichage de l'hôte, monte le socket Wayland et permet au conteneur Docker d'accéder au serveur Wayland.

Utilisation de Docker avec une GUI

Vous pouvez maintenant afficher des applications graphiques à l'intérieur de votre conteneur Docker. Par exemple, vous pouvez exécuter la commande CLI suivante pour visualiser les prédictions d'un modèle YOLO11 :

yolo predict model=yolo11n.pt show=True
Test

Un moyen simple de valider que le groupe Docker a accès au serveur X11 est d'exécuter un conteneur avec un programme GUI comme xclock ou xeyes. Alternativement, 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, pensez à définir la variable d'environnement -e QT_DEBUG_PLUGINS=1. La définition de cette variable d'environnement active la sortie d'informations de débogage, ce qui facilite le processus de dépannage.

Lorsque vous avez terminé avec Docker GUI

Révoquer l'accès

Dans les deux cas, n'oubliez pas de révoquer l'accès du groupe Docker lorsque vous avez terminé.

xhost -local:docker
Vous souhaitez afficher les résultats d'image directement dans le Terminal ?

Consultez le guide suivant sur l'affichage des résultats d'image à l'aide d'un terminal.


Félicitations ! Vous êtes maintenant prêt à utiliser Ultralytics avec Docker et à profiter de ses puissantes capacités. Pour d'autres méthodes d'installation, n'hésitez pas à explorer la documentation de démarrage rapide d'Ultralytics.

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 GPU NVIDIA, installez le runtime NVIDIA Docker pour activer la prise en charge du GPU. Ensuite, tirez la dernière image Docker Ultralytics depuis Docker Hub en utilisant la commande suivante :

sudo docker pull ultralytics/ultralytics:latest

Pour des étapes détaillées, consultez notre Guide de démarrage rapide 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, en reproduisant les mêmes logiciels et dépendances. Ceci est particulièrement utile pour collaborer entre les équipes, l'exécution de modèles sur divers matériels et le maintien de la reproductibilité. Pour la formation basée sur GPU, Ultralytics fournit des images Docker optimisées telles que Dockerfile pour une utilisation générale du GPU et Dockerfile-jetson pour les appareils NVIDIA Jetson. Explorez Ultralytics Docker Hub pour plus de détails.

Comment exécuter Ultralytics YOLO dans un conteneur Docker avec prise en charge GPU ?

Tout d'abord, assurez-vous que le runtime NVIDIA Docker est installé et configuré. Ensuite, utilisez la commande suivante pour exécuter Ultralytics YOLO avec le support GPU :

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

Cette commande configure un conteneur Docker avec accès au GPU. Pour plus de détails, consultez le Guide de démarrage rapide de Docker.

Comment visualiser les résultats de prédiction YOLO dans un conteneur Docker avec un serveur d'affichage ?

Pour visualiser les résultats de prédiction YOLO avec une interface graphique dans un conteneur Docker, vous devez autoriser Docker à accéder à votre serveur d'affichage. Pour les systèmes exécutant X11, la commande est :

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 exécutant 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

Plus d'informations sont disponibles 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 en utilisant l'indicateur -v flag :

sudo docker run -it --ipc=host --gpus all -v /path/on/host:/path/in/container ultralytics/ultralytics:latest

Remplacez /path/on/host avec le répertoire sur 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, consultez le Remarque sur l'accessibilité des fichiers section.



📅 Créé il y a 1 an ✏️ Mis à jour il y a 4 mois

Commentaires