Overslaan naar inhoud

Docker snelstartgids voor Ultralytics

Ultralytics Docker pakket visueel

Deze handleiding is een uitgebreide inleiding tot het opzetten van een Docker-omgeving voor je Ultralytics projecten. Docker is een platform voor het ontwikkelen, verschepen en draaien van applicaties in containers. Het is vooral handig om ervoor te zorgen dat de software altijd hetzelfde draait, ongeacht waar het wordt ingezet. Ga voor meer informatie naar de Ultralytics Docker repository op Docker Hub.

Docker afbeelding versie Docker trekt

Wat je zult leren

  • Docker instellen met NVIDIA ondersteuning
  • Installatie van Ultralytics Docker-images
  • Ultralytics draaien in een Docker-container met ondersteuning voor CPU of GPU
  • Een displayserver met Docker gebruiken om Ultralytics detectieresultaten te tonen
  • Lokale mappen in de container aankoppelen

Vereisten

  • Zorg ervoor dat Docker is ge├»nstalleerd op je systeem. Zo niet, dan kun je het downloaden en installeren vanaf de website van Docker.
  • Zorg ervoor dat je systeem een NVIDIA GPU heeft en dat NVIDIA stuurprogramma's zijn ge├»nstalleerd.

Setting up Docker with NVIDIA Support

Controleer eerst of de NVIDIA stuurprogramma's goed zijn geïnstalleerd door ze uit te voeren:

nvidia-smi

Installing NVIDIA Docker Runtime

Laten we nu de NVIDIA Docker runtime installeren om GPU ondersteuning in Docker containers in te schakelen:

# 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

Verify NVIDIA Runtime with Docker

Ren docker info | grep -i runtime om ervoor te zorgen dat nvidia verschijnt in de lijst met runtimes:

docker info | grep -i runtime

Installatie van Ultralytics Docker-afbeeldingen

Ultralytics biedt verschillende Docker-images die geoptimaliseerd zijn voor verschillende platforms en gebruikssituaties:

  • Dockerfile: GPU image, ideal for training.
  • Dockerfile-arm64: Voor ARM64 architectuur, geschikt voor apparaten zoals Raspberry Pi.
  • Dockerfile-cpu: CPU-only version for inference and non-GPU environments.
  • Dockerfile-jetson: Optimized for NVIDIA Jetson devices.
  • Dockerbestand-python: Minimale Python omgeving voor lichtgewicht applicaties.
  • Dockerfile-conda: Inclusief Miniconda3 en Ultralytics pakket ge├»nstalleerd via Conda.

Om de nieuwste afbeelding op te halen:

# Set image name as a variable
t=ultralytics/ultralytics:latest

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

Ultralytics draaien in Docker-container

Zo voer je de Ultralytics Docker container uit:

Using only the CPU

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

GPU's gebruiken

# 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

De -it wijst een pseudo-TTY toe en houdt stdin open, zodat je met de container kunt communiceren. De --ipc=host vlag maakt het delen van de IPC naamruimte van de host mogelijk, wat essentieel is voor het delen van geheugen tussen processen. De --gpus vlag geeft de container toegang tot de GPU's van de host.

Ultralytics draaien in Docker-container

Zo voer je de Ultralytics Docker container uit:

Using only the CPU

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

GPU's gebruiken

# 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

De -it wijst een pseudo-TTY toe en houdt stdin open, zodat je met de container kunt communiceren. De --ipc=host vlag maakt het delen van de IPC naamruimte van de host mogelijk, wat essentieel is voor het delen van geheugen tussen processen. De --gpus vlag geeft de container toegang tot de GPU's van de host.

Opmerking over toegankelijkheid van bestanden

Om met bestanden op je lokale machine binnen de container te werken, kun je Docker volumes gebruiken:

# Mount a local directory into the container
sudo docker run -it --ipc=host --gpus all -v /path/on/host:/path/in/container $t

vervangen /path/on/host met het mappad op je lokale machine en /path/in/container met het gewenste pad in de Docker-container.

Grafische gebruikersinterface (GUI) toepassingen uitvoeren in een Docker Container

Zeer experimenteel - de gebruiker neemt alle risico's op zich

De volgende instructies zijn experimenteel. Het delen van een X11 socket met een Docker container brengt potenti├źle beveiligingsrisico's met zich mee. Daarom is het aan te raden om deze oplossing alleen in een gecontroleerde omgeving te testen. Raadpleeg voor meer informatie deze bronnen over het gebruik van xhost(1)(2).

Docker wordt voornamelijk gebruikt om achtergrondapplicaties te containeriseren en CLI programma's, maar het kan ook grafische programma's uitvoeren. In de Linux-wereld zijn er twee belangrijke grafische servers die de grafische weergave afhandelen: X11 (ook bekend als het X Window System) en Wayland. Voordat u begint, is het essentieel om te bepalen welke grafische server u momenteel gebruikt. Voer deze opdracht uit om erachter te komen:

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

Het instellen en configureren van een X11 of Wayland displayserver valt buiten het bereik van deze handleiding. Als het bovenstaande commando niets oplevert, dan moet je beginnen met een van beide werkend te krijgen voor jouw systeem voordat je verder gaat.

Een Docker Container draaien met een GUI

Voorbeeld

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

Als je X11 gebruikt, kun je het volgende commando uitvoeren om de Docker container toegang te geven tot de X11 socket:

xhost +local:docker && docker run -e DISPLAY=$DISPLAY \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-v ~/.Xauthority:/root/.Xauthority \
-it --ipc=host $t

Dit commando stelt de DISPLAY omgevingsvariabele naar het beeldscherm van de host, koppelt de X11 socket en brengt de .Xauthority bestand naar de container. De xhost +local:docker commando geeft de Docker-container toegang tot de X11-server.

Gebruik voor Wayland het volgende commando:

xhost +local:docker && docker run -e DISPLAY=$DISPLAY \
-v $XDG_RUNTIME_DIR/$WAYLAND_DISPLAY:/tmp/$WAYLAND_DISPLAY \
--net=host -it --ipc=host $t

Dit commando stelt de DISPLAY omgevingsvariabele op het scherm van de host, koppelt de Wayland socket en geeft de Docker container toegang tot de Wayland server.

Docker gebruiken met een GUI

Nu kun je grafische toepassingen weergeven in je Docker container. Je kunt bijvoorbeeld het volgende CLI commando uitvoeren om de voorspellingen van een YOLOv8 model te visualiseren:

yolo predict model=yolov8n.pt show=True
Testen

Een eenvoudige manier om te valideren dat de Docker groep toegang heeft tot de X11 server is door een container te draaien met een GUI programma zoals xclock of xeyes. Als alternatief kun je deze programma's ook installeren in de Ultralytics Docker container om de toegang tot de X11 server van je GNU-Linux beeldschermserver te testen. Als je tegen problemen aanloopt, overweeg dan om de omgevingsvariabele -e QT_DEBUG_PLUGINS=1. Door deze omgevingsvariabele in te stellen wordt de uitvoer van foutopsporingsinformatie ingeschakeld, wat helpt bij het oplossen van problemen.

Als je klaar bent met Docker GUI

Toegang intrekken

Vergeet in beide gevallen niet om de toegang tot de Docker groep in te trekken als je klaar bent.

xhost -local:docker
Wil je de afbeeldingsresultaten direct in de Terminal bekijken?

Raadpleeg de volgende handleiding voor het bekijken van de afbeeldingsresultaten met een terminal


Gefeliciteerd! Je bent nu klaar om Ultralytics met Docker te gebruiken en je kunt gebruik maken van de krachtige mogelijkheden. Voor alternatieve installatiemethoden kun je terecht in de Ultralytics quickstart documentatie.

FAQ

How do I set up Ultralytics with Docker?

Om Ultralytics in te stellen met Docker, moet je er eerst voor zorgen dat Docker is geïnstalleerd op je systeem. Als je een NVIDIA GPU hebt, installeer dan de NVIDIA Docker runtime om GPU ondersteuning mogelijk te maken. Haal vervolgens het nieuwste Ultralytics Docker image op van Docker Hub met het volgende commando:

sudo docker pull ultralytics/ultralytics:latest

For detailed steps, refer to our Docker Quickstart Guide.

What are the benefits of using Ultralytics Docker images for machine learning projects?

Het gebruik van Ultralytics Docker images zorgt voor een consistente omgeving op verschillende machines, waarbij dezelfde software en afhankelijkheden worden gerepliceerd. Dit is vooral handig voor samenwerking tussen teams, het uitvoeren van modellen op verschillende hardware en het behouden van reproduceerbaarheid. Voor GPU-gebaseerde training biedt Ultralytics geoptimaliseerde Docker-images zoals Dockerfile voor algemeen GPU gebruik en Dockerfile-jetson for NVIDIA Jetson devices. Explore Ultralytics Docker Hub voor meer informatie.

How can I run Ultralytics YOLO in a Docker container with GPU support?

Zorg er eerst voor dat de NVIDIA Docker runtime is geïnstalleerd en geconfigureerd. Gebruik dan het volgende commando om Ultralytics YOLO uit te voeren met GPU ondersteuning:

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

This command sets up a Docker container with GPU access. For additional details, see the Docker Quickstart Guide.

How do I visualize YOLO prediction results in a Docker container with a display server?

Om YOLO voorspellingsresultaten te visualiseren met een GUI in een Docker container, moet je Docker toegang geven tot je displayserver. Voor systemen met X11 is het commando:

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

Gebruik voor systemen met Wayland:

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

More information can be found in the Run graphical user interface (GUI) applications in a Docker Container section.

Can I mount local directories into the Ultralytics Docker container?

Ja, je kunt lokale mappen mounten in de Ultralytics Docker container met de -v vlag:

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

vervangen /path/on/host met de map op je lokale machine en /path/in/container with the desired path inside the container. This setup allows you to work with your local files within the container. For more information, refer to the relevant section on mounting local directories.



Created 2023-11-12, Updated 2024-07-05
Authors: glenn-jocher (7), Burhan-Q (1), jpedrofonseca_94@hotmail.com (1)

Reacties