Glosario

Docker

¡Simplifica los flujos de trabajo de IA/ML con Docker! Aprende a desplegar modelos, garantizar la reproducibilidad y escalar eficientemente entre entornos.

Entrena los modelos YOLO simplemente
con Ultralytics HUB

Saber más

Docker es una potente plataforma de Docker, Inc. que simplifica el desarrollo, envío y ejecución de aplicaciones mediante contenedores. Los contenedores empaquetan una aplicación con todos sus componentes necesarios, como bibliotecas, herramientas del sistema, código y entornos de ejecución. Este empaquetado garantiza que la aplicación se ejecute de forma coherente en distintos entornos informáticos, minimizando las discrepancias entre las configuraciones de desarrollo, pruebas y producción. Para los profesionales que trabajan en Aprendizaje Automático (ML) e Inteligencia Artificial (IA), Docker ofrece un enfoque racionalizado para gestionar dependencias de software complejas y desplegar modelos de forma fiable y eficiente. Logra este aislamiento y portabilidad mediante la tecnología de contenerización, que es más ligera que las máquinas virtuales tradicionales.

Conceptos básicos de Docker

Entender Docker implica comprender algunos componentes fundamentales:

  • Dockerfile: Un archivo de texto que contiene instrucciones para construir una imagen Docker. Especifica el SO base, las dependencias, el código y los comandos necesarios para configurar el entorno de la aplicación.
  • Imagen Docker: Una plantilla de sólo lectura creada a partir de un archivo Dockerfile. Incluye el código de la aplicación, bibliotecas, dependencias, herramientas y otros archivos necesarios para que se ejecute una aplicación. Las imágenes se utilizan para crear contenedores.
  • Contenedor Docker: Una instancia ejecutable de una imagen Docker. Los contenedores son entornos aislados donde se ejecutan las aplicaciones. Comparten el núcleo del sistema anfitrión, pero se ejecutan en espacios de usuario separados, lo que garantiza la coherencia y el aislamiento.
  • Centro Docker: Un servicio de registro basado en la nube proporcionado por Docker para encontrar y compartir imágenes de contenedores. Alberga miles de imágenes públicas, incluidas imágenes oficiales de software popular como Python, PyTorchy TensorFlow.

Puedes explorar más a fondo estos objetos y conceptos Docker en la documentación oficial.

Relevancia en IA y Aprendizaje Automático

Los proyectos de IA y ML suelen implicar entornos intrincados con numerosas dependencias(como PyTorch u OpenCV) y versiones de bibliotecas específicas. Gestionar estas dependencias y garantizar entornos coherentes en las distintas fases (desarrollo, pruebas, despliegue) puede ser un gran reto. Docker resuelve eficazmente estos problemas:

  • Reproducibilidad: Docker garantiza que el entorno definido en el archivo Dockerfile sea idéntico dondequiera que se ejecute el contenedor, lo que facilita una investigación reproducible y un comportamiento fiable del modelo.
  • Gestión de dependencias: Aísla las dependencias del proyecto dentro del contenedor, evitando conflictos entre distintos proyectos o con las bibliotecas del sistema anfitrión.
  • Colaboración simplificada: Los equipos pueden compartir imágenes Docker, garantizando que todos trabajen en el mismo entorno, independientemente de la configuración de su máquina local. Esto se alinea bien con los principios de MLOps.
  • Despliegue eficiente: Los contenedores Docker simplifican el despliegue del modelo empaquetando el modelo, las dependencias y el código de servicio en una única unidad portátil. Esto facilita el despliegue en varios destinos, incluidas las plataformas en la nube y los dispositivos de borde.
  • Escalabilidad: Los contenedores son ligeros y se inician rápidamente, lo que los hace ideales para escalar aplicaciones de IA en función de la demanda, a menudo gestionadas por herramientas de orquestación. Así se satisfacen las necesidades de escalabilidad computacional.

Aplicaciones reales en IA/ML

La utilidad de Docker es evidente en varios escenarios de IA/ML:

  1. Despliegue de modelos de detección de objetos: Un equipo desarrolla un modelo de detección de objetos utilizando Ultralytics YOLO para controlar la vida salvaje en una zona protegida. Utilizan Docker para empaquetar el modeloYOLO11 entrenado, los scripts de inferencia y las bibliotecas necesarias(como OpenCV). Esta aplicación en contenedores puede desplegarse de forma coherente en varios dispositivos de borde colocados sobre el terreno, garantizando un rendimiento fiable a pesar de las diferencias de hardware. Ultralytics proporciona una guía de inicio rápido de Docker para facilitar este proceso.
  2. Análisis escalable de imágenes médicas: Una startup del sector sanitario crea una herramienta de IA para el análisis de imágenes médicas, quizás para la detección de tumores. El modelo de aprendizaje profundo y su API se empaquetan en un contenedor Docker. Esto permite desplegar la aplicación como parte de una arquitectura de microservicios, en la que múltiples instancias del contenedor pueden ampliarse o reducirse automáticamente en función del número de solicitudes de análisis, garantizando un uso eficiente de los recursos y la capacidad de respuesta.

Comparación con términos similares

Aunque Docker es fundamental para la contenedorización, a menudo se utiliza junto con otras tecnologías:

  • Contenedorización: Es el concepto general de empaquetar software en contenedores. Docker es la plataforma más popular para la contenedorización, ya que proporciona las herramientas para construir, enviar y ejecutar contenedores.
  • Kubernetes: Mientras que Docker gestiona contenedores individuales en un único host, Kubernetes es una plataforma de orquestación de contenedores. Automatiza el despliegue, escalado y gestión de aplicaciones en contenedores a través de clusters de máquinas. Piensa en Docker como la creación de los contenedores de envío y en Kubernetes como el sistema que gestiona los barcos y los puertos. Puedes obtener más información en el sitio web oficial de Kubernetes.
  • Máquinas Virtuales (MV): Las máquinas virtuales proporcionan aislamiento emulando sistemas de hardware completos, incluido un SO invitado. Los contenedores, gestionados por Docker, virtualizan el SO, compartiendo el núcleo anfitrión. Esto hace que los contenedores sean mucho más ligeros, rápidos y eficientes en recursos que las máquinas virtuales, aunque éstas ofrecen un mayor aislamiento.

Aprovechando Docker, los profesionales de la IA y la Visión por Computador (VC ) pueden mejorar significativamente la eficiencia del flujo de trabajo, la colaboración y la fiabilidad de los modelos desplegados. Para una visión general del propósito de Docker, recursos como la explicación de Docker de OpenSource.com ofrecen introducciones accesibles. Herramientas como Ultralytics HUB suelen integrarse con las tecnologías de contenedores para agilizar el ciclo de vida del ML de principio a fin, desde la formación hasta el despliegue.

Leer todo