Erste Schritte mit YOLOv5 🚀 in Docker

Willkommen zum Ultralytics YOLOv5 Docker Quickstart-Guide! Dieses Tutorial bietet Schritt-für-Schritt-Anleitungen zum Einrichten und Ausführen von YOLOv5 innerhalb eines Docker-Containers. Die Nutzung von Docker ermöglicht es dir, YOLOv5 in einer isolierten, konsistenten Umgebung auszuführen, was die Bereitstellung und Abhängigkeitsverwaltung über verschiedene Systeme hinweg vereinfacht. Dieser Ansatz nutzt Containerisierung, um die Anwendung und ihre Abhängigkeiten gemeinsam zu bündeln.

Für alternative Einrichtungsmethoden ziehe unsere Colab Notebook Open In Colab Open In Kaggle, GCP Deep Learning VM oder Amazon AWS Anleitungen in Betracht. Für einen allgemeinen Überblick über die Docker-Nutzung mit Ultralytics-Modellen siehe den Ultralytics Docker Quickstart-Guide.

Voraussetzungen

Bevor du beginnst, stelle sicher, dass du Folgendes installiert hast:

  1. Docker: Lade Docker von der offiziellen Docker-Website herunter und installiere es. Docker ist für die Erstellung und Verwaltung von Containern unerlässlich.
  2. NVIDIA-Treiber (Erforderlich für GPU-Unterstützung): Stelle sicher, dass du NVIDIA-Treiber der Version 455.23 oder höher installiert hast. Du kannst die neuesten Treiber von der NVIDIA-Website herunterladen.
  3. NVIDIA Container Toolkit (Erforderlich für GPU-Unterstützung): Dieses Toolkit ermöglicht es Docker-Containern, auf die NVIDIA-GPUs deines Host-Systems zuzugreifen. Folge der offiziellen NVIDIA Container Toolkit Installationsanleitung für detaillierte Anweisungen.

Einrichten des NVIDIA Container Toolkits (GPU-Nutzer)

Überprüfe zunächst durch Ausführen des folgenden Befehls, ob deine NVIDIA-Treiber korrekt installiert sind:

nvidia-smi

Dieser Befehl sollte Informationen über deine GPU(s) und die installierte Treiberversion anzeigen.

Installiere als Nächstes das NVIDIA Container Toolkit. Die unten stehenden Befehle sind typisch für Debian-basierte Systeme wie Ubuntu und RHEL-basierte Systeme wie Fedora/CentOS, aber schlage in der oben verlinkten offiziellen Anleitung nach, um spezifische Anweisungen für deine Distribution zu erhalten:

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

Aktualisiere die Paketlisten und installiere das Paket nvidia-container-toolkit:

sudo apt-get update

Installiere die neueste Version des nvidia-container-toolkit:

sudo apt-get install -y nvidia-container-toolkit \
  nvidia-container-toolkit-base libnvidia-container-tools \
  libnvidia-container1
Optional: Installation einer spezifischen Version des nvidia-container-toolkit

Optional kannst du eine bestimmte Version des nvidia-container-toolkit installieren, indem du die Umgebungsvariable NVIDIA_CONTAINER_TOOLKIT_VERSION setzt:

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

NVIDIA-Runtime mit Docker überprüfen

Führe docker info | grep -i runtime aus, um sicherzustellen, dass nvidia in der Liste der Runtimes erscheint:

docker info | grep -i runtime

Du solltest nvidia als eine der verfügbaren Runtimes aufgelistet sehen.

Schritt 1: Das YOLOv5 Docker-Image abrufen

Ultralytics stellt offizielle YOLOv5-Images auf Docker Hub bereit. Das latest-Tag verfolgt den aktuellsten Repository-Commit, sodass du immer die neueste Version erhältst. Rufe das Image mit dem folgenden Befehl ab:

# Define the image name with tag
t=ultralytics/yolov5:latest

# Pull the latest YOLOv5 image from Docker Hub
sudo docker pull $t

Du kannst alle verfügbaren Images im Ultralytics YOLOv5 Docker Hub Repository durchsuchen.

Schritt 2: Den Docker-Container ausführen

Sobald das Image abgerufen wurde, kannst du es als Container ausführen.

Verwendung nur mit CPU

Um eine interaktive Container-Instanz nur mit der CPU auszuführen, verwende den -it-Flag. Der --ipc=host-Flag ermöglicht das Teilen des IPC-Namespaces des Hosts, was für den Zugriff auf den gemeinsamen Speicher wichtig ist.

# Run an interactive container instance using CPU
sudo docker run -it --runtime=nvidia --ipc=host $t

Verwendung mit GPU

Um den GPU-Zugriff innerhalb des Containers zu aktivieren, verwende den --gpus-Flag. Dies erfordert, dass das NVIDIA Container Toolkit korrekt installiert ist.

# 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

Weitere Details zu Befehlsoptionen findest du in der Docker Run-Referenz.

Lokale Verzeichnisse einbinden

Um mit deinen lokalen Dateien (Datensätze, Modellgewichte usw.) innerhalb des Containers zu arbeiten, verwende den -v-Flag, um ein Host-Verzeichnis in den Container einzubinden:

# 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

Ersetze /path/on/host durch den tatsächlichen Pfad auf deinem Rechner und /path/in/container durch den gewünschten Pfad innerhalb des Docker-Containers (z. B. /usr/src/datasets).

Schritt 3: YOLOv5 🚀 innerhalb des Docker-Containers verwenden

Du befindest dich nun innerhalb des laufenden YOLOv5 Docker-Containers! Von hier aus kannst du standardmäßige YOLOv5-Befehle für verschiedene Aufgaben im Bereich Machine Learning und Deep Learning wie Objekterkennung ausführen.

# 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

Erkunde die Dokumentation für die detaillierte Nutzung der verschiedenen Modi:

Erfahre mehr über Bewertungsmetriken wie Präzision, Abruf und mAP. Verstehe verschiedene Exportformate wie ONNX, CoreML und TFLite und erkunde verschiedene Modellbereitstellungsoptionen. Denke daran, deine Modellgewichte effektiv zu verwalten.

Running YOLOv5 inside a Docker container on GCP

Du hast YOLOv5 erfolgreich in einem Docker-Container eingerichtet und ausgeführt.

Kommentare