Começa a usar o YOLOv5 🚀 no Docker

Bem-vindo ao Guia de Início Rápido do Ultralytics YOLOv5 Docker! Este tutorial fornece instruções passo a passo para configurar e executar o YOLOv5 dentro de um contentor Docker. Usar o Docker permite-te executar o YOLOv5 num ambiente isolado e consistente, simplificando a implementação e a gestão de dependências entre diferentes sistemas. Esta abordagem aproveita a containerization para agrupar a aplicação e as suas dependências.

Para métodos de configuração alternativos, considera os nossos guias Colab Notebook Open In Colab Open In Kaggle, GCP Deep Learning VM, ou Amazon AWS. Para uma visão geral da utilização do Docker com modelos Ultralytics, consulta o Guia de Início Rápido Docker do Ultralytics.

Pré-requisitos

Antes de começares, garante que tens o seguinte instalado:

  1. Docker: Descarrega e instala o Docker a partir do website oficial do Docker. O Docker é essencial para criar e gerir contentores.
  2. Controladores NVIDIA (Necessários para suporte a GPU): Garante que tens os controladores NVIDIA versão 455.23 ou superior instalados. Podes descarregar os controladores mais recentes a partir do website da NVIDIA.
  3. NVIDIA Container Toolkit (Necessário para suporte a GPU): Este toolkit permite que os contentores Docker acedam às GPUs NVIDIA da tua máquina hospedeira. Segue o guia de instalação oficial do NVIDIA Container Toolkit para instruções detalhadas.

Configurar o NVIDIA Container Toolkit (Utilizadores de GPU)

Primeiro, verifica se os teus controladores NVIDIA estão instalados corretamente executando:

nvidia-smi

Este comando deverá exibir informações sobre a(s) tua(s) GPU(s) e a versão do controlador instalado.

Em seguida, instala o NVIDIA Container Toolkit. Os comandos abaixo são típicos para sistemas baseados em Debian como Ubuntu e sistemas baseados em RHEL como Fedora/CentOS, mas consulta o guia oficial mencionado acima para instruções específicas da tua distribuição:

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

Atualiza as listas de pacotes e instala o pacote nvidia-container-toolkit:

sudo apt-get update

Instala a versão mais recente do nvidia-container-toolkit:

sudo apt-get install -y nvidia-container-toolkit \
  nvidia-container-toolkit-base libnvidia-container-tools \
  libnvidia-container1
Opcional: Instalar uma versão específica do nvidia-container-toolkit

Opcionalmente, podes instalar uma versão específica do nvidia-container-toolkit definindo a variável de 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

Verificar o Runtime NVIDIA com o Docker

Executa docker info | grep -i runtime para garantir que nvidia aparece na lista de runtimes:

docker info | grep -i runtime

Deverás ver nvidia listado como um dos runtimes disponíveis.

Passo 1: Efetua o pull da imagem Docker do YOLOv5

A Ultralytics fornece imagens oficiais do YOLOv5 no Docker Hub. A tag latest segue o commit mais recente do repositório, garantindo que recebes sempre a versão mais nova. Faz o pull da imagem usando o seguinte comando:

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

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

Podes navegar por todas as imagens disponíveis no repositório Docker Hub do Ultralytics YOLOv5.

Passo 2: Executa o contentor Docker

Uma vez feita a imagem, podes executá-la como um contentor.

Usar apenas CPU

Para executar uma instância de contentor interativa usando apenas o CPU, usa a flag -it. A flag --ipc=host permite partilhar o namespace IPC do hospedeiro, o que é importante para o acesso à memória partilhada.

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

Usar GPU

Para ativar o acesso à GPU dentro do contentor, usa a flag --gpus. Isto requer que o NVIDIA Container Toolkit esteja instalado corretamente.

# 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 a referência de execução do Docker para mais detalhes sobre as opções de comando.

Montar diretórios locais

Para trabalhar com os teus ficheiros locais (datasets, pesos de modelos, etc.) dentro do contentor, usa a flag -v para montar um diretório do hospedeiro no contentor:

# 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

Substitui /path/on/host pelo caminho real na tua máquina e /path/in/container pelo caminho desejado dentro do contentor Docker (por exemplo, /usr/src/datasets).

Passo 3: Usa o YOLOv5 🚀 dentro do contentor Docker

Estás agora dentro do contentor Docker YOLOv5 em execução! A partir daqui, podes executar comandos padrão do YOLOv5 para várias tarefas de Machine Learning e Deep Learning como Object Detection.

# 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

Explora a documentação para uma utilização detalhada dos diferentes modos:

Sabe mais sobre métricas de avaliação como Precision, Recall, e mAP. Compreende diferentes formatos de exportação como ONNX, CoreML, e TFLite, e explora várias Opções de Implementação de Modelos. Lembra-te de gerir os teus model weights eficazmente.

Running YOLOv5 inside a Docker container on GCP

Configuraste e executaste com sucesso o YOLOv5 dentro de um contentor Docker.

Comentários