Docker
Explora cómo Docker permite un despliegue de IA reproducible. Aprende a empaquetar modelos de Ultralytics YOLO26 en contenedores para escalar sin problemas desde la nube hasta dispositivos periféricos.
Docker es una plataforma de código abierto que permite a los desarrolladores automatizar el despliegue, el escalado y la gestión de aplicaciones mediante la contenerización. En el contexto de la inteligencia artificial y el aprendizaje automático, Docker actúa como una unidad de software estandarizada que empaqueta el código y todas sus dependencias —como bibliotecas, herramientas del sistema y configuraciones— para que la aplicación se ejecute de forma rápida y fiable de un entorno informático a otro. Esto elimina el problema habitual de «en mi máquina funciona» y garantiza que una red neuronal entrenada en el portátil de un investigador se comporte exactamente igual al desplegarse en un servidor en la nube de gran escala o en un dispositivo periférico.
Por qué Docker es importante para la inteligencia artificial y el aprendizaje automático#
Las modernas operaciones de aprendizaje automático (MLOps) dependen en gran medida de la reproducibilidad y la portabilidad. Un proyecto de IA suele implicar una pila de software compleja, que incluye versiones específicas de Python, controladores de CUDA para la aceleración de GPU y marcos de aprendizaje profundo como PyTorch o TensorFlow. Gestionar estos elementos manualmente entre distintos equipos e infraestructuras puede provocar errores.
Docker simplifica este proceso mediante la creación de contenedores ligeros e independientes. A diferencia de las máquinas virtuales tradicionales (VMs), que requieren un sistema operativo completo para cada instancia, los contenedores comparten el núcleo del sistema operativo de la máquina anfitriona, pero se ejecutan en espacios de usuario aislados. Esto hace que sean mucho más eficientes en cuanto a recursos y que se inicien más rápido, algo fundamental al escalar la infraestructura de serving de modelos o ejecutar trabajos de entrenamiento distribuido.
Aplicaciones en el mundo real#
Docker está presente en todo el ciclo de vida de la IA, desde la experimentación inicial hasta el despliegue final.
-
Entornos de entrenamiento coherentes: Un equipo de ciencia de datos puede utilizar imágenes de Docker para compartir un entorno de desarrollo unificado. Por ejemplo, un investigador que trabaje en detección de objetos puede descargar una imagen precompilada que contenga todos los controladores y bibliotecas necesarios. Así, cuando entrene un modelo YOLO26, sus compañeros podrán reproducir los resultados independientemente de las diferencias del hardware subyacente.
-
Despliegue de IA en el perímetro: En la videovigilancia de ciudades inteligentes, los modelos actualizados deben enviarse a miles de dispositivos periféricos, como cámaras de tráfico o drones. Los contenedores de Docker permiten a los ingenieros empaquetar una nueva versión del modelo y desplegarla de forma inalámbrica. Como el contenedor incluye el entorno de ejecución de inferencia, el proceso de actualización es fluido y no interfiere con el sistema operativo principal del dispositivo.
Docker frente a Kubernetes y las máquinas virtuales#
Para comprender el papel específico de Docker, resulta útil distinguirlo de las tecnologías relacionadas:
- Docker frente a las máquinas virtuales (VMs): Las VMs virtualizan el hardware, lo que significa que cada VM ejecuta un sistema operativo completo (como Windows o Linux) sobre un hipervisor. Esto consume una cantidad considerable de memoria y CPU. Docker virtualiza el sistema operativo, por lo que sus contenedores son mucho más pequeños y rápidos que las VMs.
- Docker frente a Kubernetes: Son tecnologías complementarias, no rivales. Docker es la herramienta que se utiliza para crear y ejecutar contenedores individuales. Kubernetes es una plataforma de orquestación de contenedores que gestiona clústeres de contenedores de Docker y se encarga de tareas como el escalado automático, el equilibrio de carga y la autorreparación en entornos de computación en la nube a gran escala.
Ejemplo: ejecutar inferencias en un contenedor#
El siguiente ejemplo muestra cómo podría ser un script de Python dentro de un contenedor de Docker diseñado para la visión por computador. Este script utiliza el paquete ultralytics para cargar un modelo y realizar inferencias. El entorno del contenedor garantiza que las dependencias correctas (como opencv-python y torch) ya estén presentes.
from ultralytics import YOLO
# Load the YOLO26 model (weights are typically included in the Docker image)
model = YOLO("yolo26n.pt")
# Perform inference on an image source
# In a containerized microservice, this might process incoming API requests
results = model.predict("https://ultralytics.com/images/bus.jpg")
# Log the detection results
print(f"Detected {len(results[0].boxes)} objects in the image.")Integrar Docker en tu flujo de trabajo#
Para empezar a trabajar con la contenerización, los desarrolladores suelen definir un Dockerfile, que es un documento de texto que contiene todos los comandos necesarios para ensamblar una imagen. Una vez creadas, estas imágenes pueden almacenarse en registros como Docker Hub o el catálogo NGC de NVIDIA, que ofrece contenedores optimizados para GPU.
Si quieres agilizar el proceso de entrenamiento y despliegue sin gestionar manualmente los Dockerfiles, la plataforma de Ultralytics ofrece herramientas integradas que gestionan la complejidad de los entornos en la nube. Esto permite centrarse en mejorar la precisión del modelo en lugar de configurar la infraestructura. Además, puedes consultar nuestra Guía de inicio rápido de Docker para aprender a ejecutar modelos de Ultralytics en contenedores de inmediato.









