Skip to main content

Comece com o YOLOv5 🚀 no Docker

Bem-vindo ao guia de início rápido do Docker para o Ultralytics YOLOv5! Este tutorial oferece instruções passo a passo para configurar e executar o YOLOv5 dentro de um Docker contêiner. Usar o Docker permite que você execute o YOLOv5 em um ambiente isolado e consistente, simplificando a implementação e o gerenciamento de dependências em diferentes sistemas. Esta abordagem aproveita a containerização para empacotar a aplicação e suas dependências juntas.

Para métodos de configuração alternativos, considere nossos guias de Colab Notebook Open In Colab Open In Kaggle, GCP Deep Learning VM, ou Amazon AWS para uma visão geral sobre o uso do Docker com modelos Ultralytics, veja o Ultralytics Docker Quickstart Guide.

Antes de começar, certifique-se de que você tem acesso a um workspace do AzureML. Se você ainda não tem um, pode criar um novo

Antes de começar, certifique-se de ter o seguinte instalado:

  1. Docker: Baixe e instale o Docker a partir do site oficial do Docker. O Docker é essencial para criar e gerenciar contêineres.
  2. NVIDIA Drivers (Necessário para suporte a GPU): Certifique-se de ter os drivers NVIDIA versão 455.23 ou superior instalados. Você pode baixar os drivers mais recentes no site da NVIDIA.
  3. NVIDIA Container Toolkit (Necessário para suporte a GPU): Este toolkit permite que contêineres Docker acessem as GPUs NVIDIA da sua máquina hospedeira. Siga o guia de instalação do NVIDIA Container Toolkit para instruções detalhadas.

Configurando o NVIDIA Container Toolkit (Usuários de GPU)

Primeiro, verifique se seus drivers NVIDIA estão instalados corretamente executando:

nvidia-smi

Este comando deve exibir informações sobre sua(s) GPU(s) e a versão do driver instalado.

Em seguida, instale 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 consulte o guia oficial vinculado acima para instruções específicas da sua 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

Instale 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 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 environment variable:

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

Verificando o Runtime NVIDIA com Docker

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

docker info | grep -i runtime

Você deve ver nvidia listado como um dos runtimes disponíveis.

Passo 1: Baixe a imagem Docker do YOLOv5

O Ultralytics fornece imagens oficiais do YOLOv5 no Docker Hub. O latest A tag rastreia o commit mais recente do repositório, garantindo que você sempre obtenha a versão mais nova. Baixe a 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

Você pode navegar por todas as imagens disponíveis no repositório Ultralytics YOLOv5 Docker Hub.

Passo 2: Execute o contêiner Docker

Uma vez que a imagem tenha sido baixada, você pode executá-la como um contêiner.

Usando apenas CPU

Para executar uma instância de contêiner interativa usando apenas a CPU, use a flag -it. A flag --ipc=host permite o compartilhamento do namespace IPC do host, o que é importante para o acesso à memória compartilhada.

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

Usando GPU

Para habilitar o acesso à GPU dentro do contêiner, use a flag --gpus. Isso 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 o Referência de execução do Docker para mais detalhes sobre opções de comando.

Montando diretórios locais

Para trabalhar com seus arquivos locais (datasets, pesos de modelos, etc.) dentro do contêiner, use a flag -v para montar um diretório do host no contêiner:

# 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 com o caminho real na sua máquina e /path/in/container com o caminho desejado dentro do contêiner Docker (ex: /usr/src/datasets).

Passo 3: Use o YOLOv5 🚀 dentro do contêiner Docker

Você agora está dentro do contêiner Docker em execução do YOLOv5! A partir daqui, você pode executar comandos padrão do YOLOv5 para várias tarefas de Machine Learning e Deep Learning como Detecção de Objetos.

# 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

Explore a documentação para o uso detalhado de diferentes modos:

Aprenda mais sobre métricas de avaliação como Precisão, Recall, e mAP. Entenda diferentes formatos de exportação como ONNX, CoreML, e TFLite, e explore vários Opções de Implantação de Modelo. Lembre-se de gerenciar seus pesos de modelo de forma eficaz.

Running YOLOv5 inside a Docker container on GCP

Você configurou e executou com sucesso o YOLOv5 dentro de um contêiner Docker.

Comentários