Ultralytics YOLO27:
Get Started

Empieza con YOLOv5 🚀 en Docker#

Te damos la bienvenida a la guía de inicio rápido de Docker para Ultralytics YOLOv5. Este tutorial ofrece instrucciones paso a paso para configurar y ejecutar YOLOv5 en un contenedor de Docker. Docker te permite ejecutar YOLOv5 en un entorno aislado y coherente, lo que simplifica la implementación y la gestión de dependencias en distintos sistemas. Este enfoque aprovecha la contenedorización para empaquetar la aplicación y sus dependencias.

Como alternativas de configuración, consulta nuestras guías del Notebook de Colab Open In Colab Open In Kaggle, GCP Deep Learning VM o Amazon AWS. Para obtener una descripción general del uso de Docker con modelos de Ultralytics, consulta la guía de inicio rápido de Docker de Ultralytics.

Requisitos previos#

Antes de empezar, asegúrate de tener instalado lo siguiente:

  1. Docker: Descarga e instala Docker desde el sitio web oficial de Docker. Docker es esencial para crear y gestionar contenedores.
  2. Controladores de NVIDIA (necesarios para la compatibilidad con GPU): asegúrate de tener instalados los controladores de NVIDIA versión 455.23 o posterior. Puedes descargar los controladores más recientes desde el sitio web de NVIDIA.
  3. NVIDIA Container Toolkit (necesario para la compatibilidad con GPU): este conjunto de herramientas permite que los contenedores de Docker accedan a las GPU de NVIDIA de tu máquina anfitriona. Sigue la guía oficial de instalación de NVIDIA Container Toolkit para consultar instrucciones detalladas.

Configura NVIDIA Container Toolkit (usuarios de GPU)#

Primero, comprueba que los controladores de NVIDIA estén instalados correctamente ejecutando:

nvidia-smi

Este comando debería mostrar información sobre las GPU y la versión del controlador instalado.

A continuación, instala NVIDIA Container Toolkit. Los comandos siguientes son habituales en sistemas basados en Debian, como Ubuntu, y en sistemas basados en RHEL, como Fedora/CentOS; consulta la guía oficial enlazada arriba para ver las instrucciones específicas de tu distribución:

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

Actualiza las listas de paquetes e instala NVIDIA Container Toolkit:

sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit

Verificar dispositivos CDI con Docker#

Ejecuta nvidia-ctk cdi list para comprobar que los dispositivos CDI de GPU están disponibles (el servicio nvidia-cdi-refresh del kit de herramientas genera y mantiene automáticamente la especificación en toolkit >= 1.18):

nvidia-ctk cdi list

Deberías ver entradas como nvidia.com/gpu=0 y nvidia.com/gpu=all. En Linux, las solicitudes de dispositivos CDI requieren Docker >= 28.2.0 y NVIDIA Container Toolkit >= 1.18. La opción heredada --gpus all puede hacer que se pierda el acceso a la GPU después de recargar los demonios del host; actualiza las máquinas Linux más antiguas y usa --device en su lugar.

Paso 1: Descarga la imagen de Docker de YOLOv5#

Ultralytics ofrece imágenes oficiales de YOLOv5 en Docker Hub. La etiqueta latest corresponde a la confirmación más reciente del repositorio, por lo que siempre tendrás la versión más reciente. Descarga la imagen con el siguiente comando:

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

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

Puedes consultar todas las imágenes disponibles en el repositorio de Ultralytics YOLOv5 en Docker Hub.

Paso 2: Ejecuta el contenedor de Docker#

Una vez descargada la imagen, puedes ejecutarla como contenedor.

Usa solo la CPU#

Para ejecutar un contenedor interactivo que use solo la CPU, utiliza la opción -it. La opción --ipc=host permite compartir el espacio de nombres IPC del host, algo importante para acceder a la memoria compartida.

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

Usa la GPU#

Para habilitar el acceso a la GPU dentro del contenedor, usa la opción --device nvidia.com/gpu=... de CDI. Para ello, NVIDIA Container Toolkit debe estar instalado correctamente.

# Run with access to all available GPUs
sudo docker run -it --ipc=host --device nvidia.com/gpu=all $t

# Run with access to specific GPUs (e.g., GPUs 2 and 3)
sudo docker run -it --ipc=host --device nvidia.com/gpu=2 --device nvidia.com/gpu=3 $t

Consulta la referencia de Docker run para obtener más información sobre las opciones del comando.

Monta directorios locales#

Para trabajar con tus archivos locales (conjuntos de datos, pesos de modelos, etc.) dentro del contenedor, usa la opción -v para montar un directorio del host en el contenedor:

# Mount /path/on/host (your local machine) to /path/in/container (inside the container)
sudo docker run -it --ipc=host --device nvidia.com/gpu=all -v /path/on/host:/path/in/container $t

Sustituye /path/on/host por la ruta real de tu máquina y /path/in/container por la ruta que quieras usar dentro del contenedor de Docker (por ejemplo, /usr/src/datasets).

Paso 3: Usa YOLOv5 🚀 dentro del contenedor de Docker#

Ya estás dentro del contenedor de Docker de YOLOv5 en ejecución. Desde aquí, puedes ejecutar comandos estándar de YOLOv5 para distintas tareas de aprendizaje automático y aprendizaje profundo, como la detección 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

Consulta los tutoriales Entrena con datos personalizados y Exportación de modelos para obtener instrucciones detalladas.

Descubre más sobre métricas de evaluación como precisión, exhaustividad y mAP. Conoce distintos formatos de exportación, como ONNX, CoreML y TFLite, y explora varias opciones de implementación de modelos. Recuerda gestionar eficazmente los pesos de tus modelos.

Running YOLOv5 inside a Docker container on GCP

Has configurado y ejecutado YOLOv5 correctamente en un contenedor de Docker.

Preguntas frecuentes#

  • Los trabajadores del cargador de datos de PyTorch comparten tensores mediante la memoria compartida, y los 64 MB predeterminados de Docker no son suficientes. --ipc=host comparte el segmento de memoria del host; --shm-size=8g es una alternativa si prefieres mantener aislado el contenedor.

  • Ejecuta nvidia-smi en el host para confirmar que el controlador funciona, comprueba que NVIDIA Container Toolkit esté instalado con nvidia-ctk cdi list y asegúrate de que Docker sea la versión 28.2 o posterior para que se acepte --device nvidia.com/gpu=all.

  • Monta directorios del host con -v /path/on/host:/path/in/container y apunta --data y --project a las rutas montadas. Los archivos escritos en cualquier otro lugar del contenedor se descartan cuando se elimina.

  • Sí, pero el contenedor necesita acceso a un servidor de visualización. Consulta las instrucciones de X11 y Wayland en la guía de Docker de Ultralytics. Si no tienes una pantalla, guarda los resultados con --save-txt o usa la salida predeterminada runs/detect/.

Comentarios