Inizia con YOLOv5 🚀 in Docker

Benvenuto nella guida rapida a Docker per Ultralytics YOLOv5! Questo tutorial fornisce istruzioni passo-passo per configurare ed eseguire YOLOv5 all'interno di un container Docker. L'utilizzo di Docker ti permette di eseguire YOLOv5 in un ambiente isolato e coerente, semplificando il deployment e la gestione delle dipendenze su sistemi diversi. Questo approccio sfrutta la containerizzazione per impacchettare l'applicazione e le sue dipendenze insieme.

Per metodi di configurazione alternativi, prendi in considerazione le nostre guide Colab Notebook Open In Colab Open In Kaggle, GCP Deep Learning VM o Amazon AWS. Per una panoramica generale sull'uso di Docker con i modelli Ultralytics, consulta la Guida rapida a Docker per Ultralytics.

Prerequisiti

Prima di iniziare, assicurati di aver installato quanto segue:

  1. Docker: Scarica e installa Docker dal sito ufficiale di Docker. Docker è essenziale per creare e gestire i container.
  2. Driver NVIDIA (Richiesti per il supporto GPU): Assicurati di avere installato i driver NVIDIA versione 455.23 o superiore. Puoi scaricare i driver più recenti dal sito web di NVIDIA.
  3. NVIDIA Container Toolkit (Richiesto per il supporto GPU): Questo toolkit consente ai container Docker di accedere alle GPU NVIDIA del tuo computer host. Segui la guida all'installazione ufficiale di NVIDIA Container Toolkit per istruzioni dettagliate.

Configurazione di NVIDIA Container Toolkit (Utenti GPU)

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

nvidia-smi

Questo comando dovrebbe visualizzare informazioni sulla tua/e GPU e sulla versione del driver installato.

Successivamente, installa NVIDIA Container Toolkit. I comandi seguenti sono tipici per i sistemi basati su Debian come Ubuntu e i sistemi basati su RHEL come Fedora/CentOS, ma fai riferimento alla guida ufficiale indicata sopra per istruzioni specifiche per la tua distribuzione:

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

Aggiorna gli elenchi dei pacchetti e installa il pacchetto nvidia-container-toolkit:

sudo apt-get update

Installa l'ultima versione di nvidia-container-toolkit:

sudo apt-get install -y nvidia-container-toolkit \
  nvidia-container-toolkit-base libnvidia-container-tools \
  libnvidia-container1
Opzionale: installa una versione specifica di nvidia-container-toolkit

Facoltativamente, puoi installare una versione specifica di nvidia-container-toolkit impostando la variabile d'ambiente NVIDIA_CONTAINER_TOOLKIT_VERSION:

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

Verifica del runtime NVIDIA con Docker

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

docker info | grep -i runtime

Dovresti vedere nvidia elencato come uno dei runtime disponibili.

Passaggio 1: Scarica (pull) l'immagine Docker di YOLOv5

Ultralytics fornisce immagini ufficiali di YOLOv5 su Docker Hub. Il tag latest segue il commit più recente del repository, garantendoti di avere sempre la versione più nuova. Scarica l'immagine usando il seguente comando:

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

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

Puoi sfogliare tutte le immagini disponibili presso il repository Docker Hub di Ultralytics YOLOv5.

Passaggio 2: Esegui il container Docker

Una volta scaricata l'immagine, puoi eseguirla come container.

Utilizzo della sola CPU

Per eseguire un'istanza di container interattiva utilizzando solo la CPU, usa il flag -it. Il flag --ipc=host consente la condivisione dello spazio dei nomi IPC dell'host, il che è importante per l'accesso alla memoria condivisa.

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

Utilizzo della GPU

Per abilitare l'accesso alla GPU all'interno del container, usa il flag --gpus. Ciò richiede che NVIDIA Container Toolkit sia installato correttamente.

# 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

Consulta il riferimento per Docker run per ulteriori dettagli sulle opzioni del comando.

Montaggio di directory locali

Per lavorare con i tuoi file locali (dataset, pesi del modello, ecc.) all'interno del container, usa il flag -v per montare una directory host nel container:

# 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

Sostituisci /path/on/host con il percorso effettivo sulla tua macchina e /path/in/container con il percorso desiderato all'interno del container Docker (es. /usr/src/datasets).

Passaggio 3: Usa YOLOv5 🚀 all'interno del container Docker

Ora sei all'interno del container Docker di YOLOv5 in esecuzione! Da qui, puoi eseguire i comandi standard di YOLOv5 per varie attività di Machine Learning e Deep Learning come il rilevamento oggetti.

# 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

Esplora la documentazione per un uso dettagliato delle diverse modalità:

Scopri di più sulle metriche di valutazione come Precision, Recall e mAP. Comprendi i diversi formati di esportazione come ONNX, CoreML e TFLite, ed esplora varie opzioni di deployment del modello. Ricorda di gestire efficacemente i tuoi pesi del modello.

Running YOLOv5 inside a Docker container on GCP

Hai configurato ed eseguito con successo YOLOv5 all'interno di un container Docker.

Commenti