Vai al contenuto

Guida rapida a Docker per Ultralytics

Rappresentazione visiva del pacchetto Docker di Ultralytics

Questa guida funge da introduzione completa alla configurazione di un ambiente Docker per i tuoi progetti Ultralytics. Docker è una piattaforma per sviluppare, spedire ed eseguire applicazioni in container. È particolarmente utile per garantire che il software venga sempre eseguito allo stesso modo, indipendentemente da dove venga distribuito. Per maggiori dettagli, visita il repository Docker di Ultralytics su Docker Hub.

Versione dell'immagine Docker Pull di Docker

Cosa imparerai

  • Configurazione di Docker con supporto NVIDIA
  • Installazione delle immagini Docker di Ultralytics
  • Esecuzione di Ultralytics in un container Docker con supporto CPU o GPU
  • Utilizzo di un server di visualizzazione con Docker per mostrare i risultati del rilevamento di Ultralytics
  • Montaggio di directory locali nel container



Guarda: Come iniziare con Docker | Utilizzo del pacchetto Ultralytics python all'interno di una demo live di Docker 🎉


Prerequisiti

  • Assicurati che Docker sia installato sul tuo sistema. In caso contrario, puoi scaricarlo e installarlo dal sito web di Docker.
  • Assicurati che il tuo sistema abbia una GPU NVIDIA e che i driver NVIDIA siano installati.

Configurazione di Docker con supporto NVIDIA

Innanzitutto, verifica che i driver NVIDIA siano installati correttamente eseguendo:

nvidia-smi

Installazione di NVIDIA Docker Runtime

Ora, installiamo il runtime NVIDIA Docker per abilitare il supporto GPU nei container 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

Verifica di NVIDIA Runtime con Docker

Esegui docker info | grep -i runtime per assicurarti che nvidia appaia nell'elenco dei runtime:

docker info | grep -i runtime

Installazione delle immagini Docker di Ultralytics

Ultralytics offre diverse immagini Docker ottimizzate per varie piattaforme e casi d'uso:

  • Dockerfile: Immagine GPU, ideale per il training.
  • Dockerfile-arm64: Per architettura ARM64, adatta per dispositivi come Raspberry Pi.
  • Dockerfile-cpu: Versione solo CPU per l'inferenza e ambienti senza GPU.
  • Dockerfile-jetson-jetpack4: Ottimizzato per dispositivi NVIDIA Jetson che eseguono NVIDIA JetPack 4.
  • Dockerfile-jetson-jetpack5: Ottimizzato per dispositivi NVIDIA Jetson che eseguono NVIDIA JetPack 5.
  • Dockerfile-jetson-jetpack6: Ottimizzato per dispositivi NVIDIA Jetson che eseguono NVIDIA JetPack 6.
  • Dockerfile-jupyter: Per lo sviluppo interattivo utilizzando JupyterLab nel browser.
  • Dockerfile-python: Ambiente Python minimale per applicazioni leggere.
  • Dockerfile-conda: Include Miniconda3 e il pacchetto Ultralytics installato tramite Conda.

Per scaricare l'immagine più recente:

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

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

Esecuzione di Ultralytics in un container Docker

Ecco come eseguire il container Docker di Ultralytics:

Utilizzo esclusivo della CPU

# Run without GPU
sudo docker run -it --ipc=host $t

Utilizzo delle 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

Il -it flag assegna uno pseudo-TTY e mantiene aperto stdin, consentendo di interagire con il container. Il --ipc=host flag abilita la condivisione dello spazio dei nomi IPC dell'host, essenziale per la condivisione della memoria tra i processi. Il --gpus flag consente al container di accedere alle GPU dell'host.

Nota sull'accessibilità dei file

Per lavorare con i file sulla macchina locale all'interno del container, è possibile utilizzare i volumi Docker:

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

Sostituisci /path/on/host con il percorso della directory sulla macchina locale e /path/in/container con il percorso desiderato all'interno del container Docker.

Esecuzione di applicazioni con interfaccia utente grafica (GUI) in un container Docker

Altamente sperimentale - L'utente si assume tutti i rischi

Le seguenti istruzioni sono sperimentali. La condivisione di un socket X11 con un container Docker pone potenziali rischi per la sicurezza. Pertanto, si consiglia di testare questa soluzione solo in un ambiente controllato. Per ulteriori informazioni, consultare queste risorse su come utilizzare xhost(1)(2).

Docker viene utilizzato principalmente per containerizzare applicazioni in background e programmi CLI, ma può anche eseguire programmi grafici. Nel mondo Linux, due server grafici principali gestiscono la visualizzazione grafica: X11 (noto anche come X Window System) e Wayland. Prima di iniziare, è essenziale determinare quale server grafico si sta attualmente utilizzando. Eseguire questo comando per scoprirlo:

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

La configurazione di un server di visualizzazione X11 o Wayland è al di fuori dello scopo di questa guida. Se il comando precedente non restituisce nulla, sarà necessario iniziare facendo funzionare uno dei due per il proprio sistema prima di continuare.

Esecuzione di un container Docker con una GUI

Esempio

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

Se si utilizza X11, è possibile eseguire il comando seguente per consentire al container Docker di accedere al 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

Questo comando imposta la DISPLAY variabile d'ambiente sul display dell'host, monta il socket X11 e mappa il .Xauthority file nel container. Il xhost +local:docker comando consente al container Docker di accedere al server X11.

Per Wayland, utilizzare il seguente comando:

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

Questo comando imposta la DISPLAY variabile d'ambiente sul display dell'host, monta il socket Wayland e consente al container Docker di accedere al server Wayland.

Utilizzo di Docker con una GUI

Ora è possibile visualizzare applicazioni grafiche all'interno del container Docker. Ad esempio, è possibile eseguire il seguente comando CLI per visualizzare le previsioni da un modello YOLO11:

yolo predict model=yolo11n.pt show=True
Test

Un modo semplice per convalidare che il gruppo Docker abbia accesso al server X11 è eseguire un container con un programma GUI come xclock oppure xeyes. In alternativa, è possibile installare questi programmi nel container Docker Ultralytics per testare l'accesso al server X11 del server di visualizzazione GNU-Linux. In caso di problemi, considerare l'impostazione della variabile d'ambiente -e QT_DEBUG_PLUGINS=1. L'impostazione di questa variabile d'ambiente abilita l'output di informazioni di debug, facilitando il processo di risoluzione dei problemi.

Al termine con Docker GUI

Revocare l'accesso

In entrambi i casi, non dimenticare di revocare l'accesso dal gruppo Docker al termine.

xhost -local:docker
Desideri visualizzare i risultati delle immagini direttamente nel Terminale?

Fare riferimento alla seguente guida sulla visualizzazione dei risultati delle immagini tramite terminale


Congratulazioni! Ora sei pronto per utilizzare Ultralytics con Docker e sfruttare le sue potenti funzionalità. Per metodi di installazione alternativi, sentiti libero di esplorare la documentazione di avvio rapido di Ultralytics.

FAQ

Come posso configurare Ultralytics con Docker?

Per configurare Ultralytics con Docker, assicurati innanzitutto che Docker sia installato sul tuo sistema. Se hai una GPU NVIDIA, installa il runtime NVIDIA Docker per abilitare il supporto GPU. Quindi, scarica l'ultima immagine Docker di Ultralytics da Docker Hub utilizzando il seguente comando:

sudo docker pull ultralytics/ultralytics:latest

Per i passaggi dettagliati, consulta la nostra Guida rapida di Docker.

Quali sono i vantaggi dell'utilizzo delle immagini Docker di Ultralytics per i progetti di machine learning?

L'utilizzo delle immagini Docker di Ultralytics garantisce un ambiente coerente su diverse macchine, replicando lo stesso software e le stesse dipendenze. Ciò è particolarmente utile per collaborare tra team, eseguendo modelli su vari hardware e mantenendo la riproducibilità. Per il training basato su GPU, Ultralytics fornisce immagini Docker ottimizzate come Dockerfile per l'utilizzo generale della GPU e Dockerfile-jetson per i dispositivi NVIDIA Jetson. Esplora Ultralytics Docker Hub per maggiori dettagli.

Come posso eseguire Ultralytics YOLO in un container Docker con supporto GPU?

Innanzitutto, assicurati che il runtime NVIDIA Docker sia installato e configurato. Quindi, utilizza il seguente comando per eseguire Ultralytics YOLO con supporto GPU:

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

Questo comando imposta un container Docker con accesso GPU. Per ulteriori dettagli, consulta la Guida rapida di Docker.

Come posso visualizzare i risultati della previsione YOLO in un container Docker con un server di visualizzazione?

Per visualizzare i risultati delle previsioni YOLO con una GUI in un container Docker, è necessario consentire a Docker di accedere al server di visualizzazione. Per i sistemi che eseguono X11, il comando è:

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

Per i sistemi che eseguono Wayland, utilizzare:

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

Ulteriori informazioni sono disponibili nella sezione Esecuzione di applicazioni con interfaccia utente grafica (GUI) in un container Docker.

Posso montare directory locali nel container Docker di Ultralytics?

Sì, è possibile montare directory locali nel container Docker Ultralytics utilizzando il flag -v :

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

Sostituisci /path/on/host con la directory sulla macchina locale e /path/in/container con il percorso desiderato all'interno del container. Questa configurazione ti consente di lavorare con i tuoi file locali all'interno del container. Per maggiori informazioni, consulta la sezione Nota sull'accessibilità dei file sezione.



📅 Creato 1 anno fa ✏️ Aggiornato 4 mesi fa

Commenti