Ultralytics YOLO27: Únete a la lista de espera.
Empezar

Empieza con YOLOv5 🚀 en Docker#

Este tutorial ofrece instrucciones paso a paso para configurar y ejecutar YOLOv5 dentro de un contenedor 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 método utiliza la contenedorización para empaquetar conjuntamente 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 Docker de YOLOv5 en ejecución! Desde aquí, puedes ejecutar comandos estándar de YOLOv5 para diversas 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.

val.py informa de la precisión, la exhaustividad y el mAP, y export.py genera formatos como ONNX, CoreML y TFLite para la opción de implementación que elijas.

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/.

Comentarios3

Haz una pregunta, comparte tus resultados o ayuda a otra persona.

  1. Letícia RamaLetícia Rama

    Hello,

    Is this workflow suitable for other YOLO families, such as YOLO26?

    1. Paula DerrengerPaula DerrengerUltralytics

      Yes—the same Docker concepts apply to YOLO26, but use the current Ultralytics Docker Quickstart and ultralytics/ultralytics images rather than the YOLOv5-specific image. Please continue dropping any setup questions in this discussion so the Ultralytics team can assist.

      1