Démarrer avec YOLOv5 🚀 dans Docker
Bienvenue dans le guide de démarrage rapide Docker YOLOv5 d'Ultralytics ! Ce tutoriel fournit des instructions étape par étape pour configurer et exécuter YOLOv5 dans un conteneur Docker. L'utilisation de Docker vous permet d'exécuter YOLOv5 dans un environnement isolé et cohérent, ce qui simplifie le déploiement et la gestion des dépendances sur différents systèmes. Cette approche exploite la conteneurisation pour regrouper l'application et ses dépendances.
Pour d'autres méthodes de configuration, considérez notre Notebook Colab
, VM Deep Learning GCP, ou Amazon AWS guides. Pour une vue d’ensemble de l’utilisation de Docker avec les modèles Ultralytics, consultez le Guide de démarrage rapide Docker Ultralytics.
Prérequis
Avant de commencer, assurez-vous que les éléments suivants sont installés :
- Docker : Téléchargez et installez Docker depuis le site web officiel de Docker. Docker est essentiel pour créer et gérer des conteneurs.
- Pilotes NVIDIA (Requis pour la prise en charge GPU) : Assurez-vous que la version 455.23 ou supérieure des pilotes NVIDIA est installée. Vous pouvez télécharger les derniers pilotes à partir du site Web de NVIDIA.
- NVIDIA Container Toolkit (Requis pour la prise en charge du GPU) : Cet ensemble d’outils permet aux conteneurs Docker d’accéder aux GPU NVIDIA de votre machine hôte. Suivez le guide d’installation officiel de NVIDIA Container Toolkit pour obtenir des instructions détaillées.
Configuration de NVIDIA Container Toolkit (utilisateurs de GPU)
Tout d'abord, vérifiez que vos pilotes NVIDIA sont correctement installés en exécutant :
nvidia-smi
Cette commande doit afficher des informations sur votre ou vos GPU et la version du pilote installé.
Ensuite, installez le NVIDIA Container Toolkit. Les commandes ci-dessous sont typiques des systèmes basés sur Debian comme Ubuntu et sur RHEL comme Fedora/CentOS, mais reportez-vous au guide officiel dont le lien figure ci-dessus pour obtenir des instructions spécifiques à votre distribution :
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
&& curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list \
| sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' \
| sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt-get update
Installer la dernière version de nvidia
sudo apt-get install -y nvidia-container-toolkit \
nvidia-container-toolkit-base libnvidia-container-tools \
libnvidia-container1
Facultatif : Installer une version spécifique de nvidia
En option, vous pouvez installer une version spécifique de nvidia en définissant l'option NVIDIA_CONTAINER_TOOLKIT_VERSION
variable d'environnement :
export NVIDIA_CONTAINER_TOOLKIT_VERSION=1.17.8-1
sudo apt-get install -y \
nvidia-container-toolkit=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
nvidia-container-toolkit-base=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
libnvidia-container-tools=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
libnvidia-container1=${NVIDIA_CONTAINER_TOOLKIT_VERSION}
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
curl -s -L https://nvidia.github.io/libnvidia-container/stable/rpm/nvidia-container-toolkit.repo \
| sudo tee /etc/yum.repos.d/nvidia-container-toolkit.repo
Mettez à jour les listes de paquets et installez le paquet nvidia:
sudo dnf clean expire-cache
sudo dnf check-update
sudo dnf install \
nvidia-container-toolkit \
nvidia-container-toolkit-base \
libnvidia-container-tools \
libnvidia-container1
Facultatif : Installer une version spécifique de nvidia
En option, vous pouvez installer une version spécifique de nvidia en définissant l'option NVIDIA_CONTAINER_TOOLKIT_VERSION
variable d'environnement :
export NVIDIA_CONTAINER_TOOLKIT_VERSION=1.17.8-1
sudo dnf install -y \
nvidia-container-toolkit-${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
nvidia-container-toolkit-base-${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
libnvidia-container-tools-${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
libnvidia-container1-${NVIDIA_CONTAINER_TOOLKIT_VERSION}
sudo nvidia-ctk runtime configure --runtime=docker
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
Vous devriez voir nvidia
répertorié comme l'un des environnements d'exécution disponibles.
Étape 1 : Extraire l'image Docker YOLOv5
Ultralytics fournit des images YOLOv5 officielles sur Docker Hub. Le latest
le tag suit le commit le plus récent du référentiel, vous assurant ainsi d'obtenir toujours la version la plus récente. Tirez l'image en utilisant la commande suivante :
# Define the image name with tag
t=ultralytics/yolov5:latest
# Pull the latest YOLOv5 image from Docker Hub
sudo docker pull $t
Vous pouvez parcourir toutes les images disponibles sur le référentiel Ultralytics YOLOv5 Docker Hub.
Étape 2 : Exécuter le conteneur Docker
Une fois l'image extraite, vous pouvez l'exécuter en tant que conteneur.
Utilisation du CPU uniquement
Pour exécuter une instance de conteneur interactive en utilisant uniquement le CPU, utilisez la commande suivante : -it
l'indicateur. --ipc=host
L'indicateur permet le partage de l'espace de noms IPC de l'hôte, ce qui est important pour l'accès à la mémoire partagée.
# Run an interactive container instance using CPU
sudo docker run -it --runtime=nvidia --ipc=host $t
Utilisation du GPU
Pour activer l'accès au GPU dans le conteneur, utilisez la commande suivante : --gpus
l'indicateur. Cela nécessite que le NVIDIA Container Toolkit soit correctement installé.
# Run with access to all available GPUs
sudo docker run -it --runtime=nvidia --ipc=host --gpus all $t
# Run with access to specific GPUs (e.g., GPUs 2 and 3)
sudo docker run -it --runtime=nvidia --ipc=host --gpus '"device=2,3"' $t
Consultez la référence d'exécution Docker pour plus de détails sur les options de commande.
Montage de répertoires locaux
Pour travailler avec vos fichiers locaux (ensembles de données, poids du modèle, etc.) à l'intérieur du conteneur, utilisez le -v
l'indicateur pour monter un répertoire hôte dans le conteneur :
# Mount /path/on/host (your local machine) to /path/in/container (inside the container)
sudo docker run -it --runtime=nvidia --ipc=host --gpus all -v /path/on/host:/path/in/container $t
Remplacez /path/on/host
avec le chemin d'accès réel sur votre machine et /path/in/container
avec le chemin souhaité à l'intérieur du conteneur Docker (par exemple, /usr/src/datasets
).
Étape 3 : Utiliser YOLOv5 🚀 dans le conteneur Docker
Vous êtes maintenant dans le conteneur Docker YOLOv5 en cours d’exécution ! À partir de là, vous pouvez exécuter les commandes YOLOv5 standard pour diverses tâches d’apprentissage automatique et d’apprentissage profond comme la détection d’objets.
# Train a YOLOv5 model on your custom dataset (ensure data is mounted or downloaded)
python train.py --data your_dataset.yaml --weights yolov5s.pt --img 640 # Start training
# Validate the trained model's performance (Precision, Recall, mAP)
python val.py --weights path/to/your/best.pt --data your_dataset.yaml # Validate accuracy
# Run inference on images or videos using a trained model
python detect.py --weights yolov5s.pt --source path/to/your/images_or_videos # Perform detection
# Export the trained model to various formats like ONNX, CoreML, or TFLite for deployment
python export.py --weights yolov5s.pt --include onnx coreml tflite # Export model
Explorez la documentation pour une utilisation détaillée des différents modes :
Apprenez-en davantage sur les mesures d'évaluation comme la Précision, le Rappel et le mAP. Comprenez les différents formats d'exportation comme ONNX, CoreML et TFLite, et explorez diverses Options de déploiement de modèle. N'oubliez pas de gérer efficacement les poids de votre modèle.
Félicitations ! Vous avez correctement configuré et exécuté YOLOv5 dans un conteneur Docker.