Skip to content

Guide de démarrage rapide de Docker pour Ultralytics

Ultralytics Docker Package Visual

Ce guide sert d'introduction complète à la mise en place d'un environnement Docker pour tes projets Ultralytics . Docker est une plateforme qui permet de développer, d'expédier et d'exécuter des applications dans des conteneurs. Elle est particulièrement bénéfique pour s'assurer 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, visite le dépôt Docker Ultralytics sur Docker Hub.

Version de l'image Docker Les tirages de Docker

Ce que tu apprendras

  • Configurer Docker avec la prise en charge de NVIDIA
  • Installation de Ultralytics Images Docker
  • ExĂ©cuter Ultralytics dans un conteneur Docker avec prise en charge du CPU ou du GPU.
  • Utilisation d'un serveur d'affichage avec Docker pour afficher les rĂ©sultats de la dĂ©tection de Ultralytics .
  • Montage des rĂ©pertoires locaux dans le conteneur

Conditions préalables

  • Assure-toi que Docker est installĂ© sur ton système. Si ce n'est pas le cas, tu peux le tĂ©lĂ©charger et l'installer Ă  partir du site web de Docker.
  • Assure-toi que ton système est Ă©quipĂ© d'un GPU NVIDIA et que les pilotes NVIDIA sont installĂ©s.

Configurer Docker avec le support de NVIDIA

Tout d'abord, vérifie que les pilotes NVIDIA sont correctement installés en lançant :

nvidia-smi

Installation du moteur d'exécution NVIDIA Docker

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

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

  • Dockerfile : Image GPU, idĂ©ale pour la formation.
  • Dockerfile-arm64 : Pour l'architecture ARM64, adaptĂ©e aux appareils comme le Raspberry Pi.
  • Dockerfile-cpu : version rĂ©servĂ©e au processeur pour l'infĂ©rence et les environnements sans GPU.
  • Dockerfile-jetson : OptimisĂ© pour les appareils NVIDIA Jetson.
  • Dockerfile-python: Environnement minimal Python pour les applications lĂ©gères.
  • Dockerfile-conda : inclut le paquet Miniconda3 et Ultralytics installĂ© 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 :

Utiliser uniquement l'unité centrale

# 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 te permet d'interagir avec le conteneur. L'indicateur --ipc=host permet de partager l'espace de noms IPC de l'hôte, ce qui est essentiel pour partager 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 :

Utiliser uniquement l'unité centrale

# 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 te permet d'interagir avec le conteneur. L'indicateur --ipc=host permet de partager l'espace de noms IPC de l'hôte, ce qui est essentiel pour partager 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 ta machine locale au sein du conteneur, tu peux 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 ta machine locale et /path/in/container avec le chemin souhaité à l'intérieur du conteneur Docker.

Exécuter des applications d'interface utilisateur graphique (GUI) dans un conteneur Docker.

Très 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, reporte-toi à ces ressources sur l'utilisation de xhost(1)(2).

Docker is primarily used to containerize background applications and CLI programs, but it can also run graphical programs. In the Linux world, two main graphic servers handle graphical display: X11 (also known as the X Window System) and Wayland. Before starting, it's essential to determine which graphics server you are currently using. Run this command to find out:

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, alors tu devras commencer par faire fonctionner l'un ou l'autre pour ton système avant de continuer.

Exécuter un conteneur Docker avec une interface graphique

Exemple

Utilise les GPU
If you're using [GPUs](#using-gpus), you can add the `--gpus all` flag to the command.

Si tu utilises X11, tu peux 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 définit le DISPLAY à l'écran de l'hôte, monte le socket X11 et fait correspondre la variable d'environnement .Xauthority au conteneur. Le xhost +local:docker La commande permet au conteneur Docker d'accéder au serveur X11.

Pour Wayland, utilise 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 le DISPLAY variable d'environnement à l'affichage 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

Tu peux maintenant afficher des applications graphiques à l'intérieur de ton conteneur Docker. Par exemple, tu peux exécuter la commandeCLI suivante pour visualiser les prédictions d'un modèleYOLOv8 :

yolo predict model=yolov8n.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 d'interface graphique tel que. xclock ou xeyes. Tu peux aussi installer ces programmes dans le conteneur Docker Ultralytics pour tester l'accès au serveur X11 de ton serveur d'affichage GNU-Linux. Si tu rencontres des problèmes, pense à 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 tu as terminé avec l'interface graphique de Docker

Révoquer l'accès

Dans les deux cas, n'oublie pas de révoquer l'accès du groupe Docker lorsque tu as terminé.

xhost -local:docker
Tu veux voir les résultats des images directement dans le terminal ?

Reporte-toi au guide suivant pour visualiser les résultats de l'image à l'aide d'un terminal.


Félicitations ! Tu es maintenant configuré pour utiliser Ultralytics avec Docker et prêt à profiter de ses puissantes capacités. Pour connaître d'autres méthodes d'installation, n'hésite pas à explorer la documentation de démarrage rapide deUltralytics .



Created 2023-11-12, Updated 2024-06-10
Authors: glenn-jocher (6), Burhan-Q (1), jpedrofonseca_94@hotmail.com (1)

Commentaires