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 que simplifica el desarrollo, despliegue y ejecución de aplicaciones mediante el uso de contenedores. Los contenedores permiten a los desarrolladores empaquetar una aplicación con todas las partes que necesita, como bibliotecas y otras dependencias, y enviarlo todo como un solo paquete. Esto garantiza que la aplicación se ejecutará en cualquier otra máquina, independientemente de los ajustes personalizados que pueda tener la máquina y que podrían diferir de la máquina utilizada para escribir y probar el código. Para los usuarios familiarizados con los conceptos básicos del aprendizaje automático, Docker ofrece una forma racionalizada de gestionar y desplegar modelos de forma eficiente, garantizando la coherencia en diferentes entornos.

Conceptos básicos de Docker

En esencia, Docker gira en torno a unos cuantos conceptos clave:

  • Imágenes: Una imagen es una plantilla de sólo lectura con instrucciones para crear un contenedor Docker. Incluye el código de la aplicación, bibliotecas, herramientas, dependencias y otros archivos necesarios para hacer funcionar una aplicación. Las imágenes se construyen a partir de un conjunto de instrucciones escritas en un Dockerfile.
  • Contenedores: Un contenedor es una instancia ejecutable de una imagen. Puedes crear, iniciar, detener, mover o eliminar un contenedor utilizando la API de Docker o CLI. Los contenedores están aislados entre sí y del sistema anfitrión, pero pueden comunicarse con otros contenedores y con el mundo exterior a través de canales definidos.
  • Dockerfile: Es un documento de texto que contiene todos los comandos que un usuario podría invocar en la línea de comandos para montar una imagen. Docker puede construir imágenes automáticamente leyendo las instrucciones de un Dockerfile.
  • Motor Docker: La tecnología cliente-servidor subyacente que construye y ejecuta contenedores utilizando los componentes y servicios de Docker.
  • Docker Hub: Un servicio de registro basado en la nube proporcionado por Docker para encontrar y compartir imágenes de contenedores con tu equipo o con la comunidad Docker. Es similar a GitHub, pero para imágenes Docker. Puedes extraer imágenes de Docker Hub para utilizarlas como base para tus contenedores, o introducir tus propias imágenes para compartirlas con otros.

Relevancia en IA y Aprendizaje Automático

En el contexto de la IA y el aprendizaje automático, Docker proporciona varias ventajas fundamentales:

  • Reproducibilidad: Los contenedores Docker garantizan que los modelos de aprendizaje automático se ejecuten de forma coherente en distintos entornos, desde el portátil de un desarrollador hasta un servidor de producción. Esto es crucial para reproducir los resultados de la investigación y desplegar modelos de forma fiable.
  • Escalabilidad: Docker funciona a la perfección con herramientas de orquestación de contenedores como Kubernetes, lo que facilita la escalabilidad de las aplicaciones de aprendizaje automático. Puedes desplegar múltiples instancias de un modelo y distribuir la carga de trabajo de forma eficiente.
  • Gestión de dependencias: Los proyectos de aprendizaje automático a menudo dependen de versiones específicas de bibliotecas y marcos de trabajo. Docker te permite encapsular estas dependencias dentro de un contenedor, evitando conflictos y garantizando que el modelo se ejecuta según lo previsto.
  • Portabilidad: Los contenedores Docker pueden ejecutarse en cualquier sistema que admita Docker, ya sea una máquina local, una máquina virtual basada en la nube o un servidor local. Esta portabilidad simplifica el proceso de trasladar modelos de aprendizaje automático del desarrollo a la producción. Obtén más información sobre las mejores prácticas de despliegue de modelos para desplegar modelos de visión computerizada de forma eficiente.

Aplicaciones reales en IA/ML

He aquí dos ejemplos concretos de cómo se utiliza Docker en aplicaciones de IA/ML del mundo real:

  1. Entrenamiento y despliegue de modelos de detección de objetos:Supón que estás trabajando en un proyecto de detección de objetos utilizando Ultralytics YOLO . Puedes utilizar Docker para crear un entorno consistente para entrenar tu modelo. Definiendo un Dockerfile que incluya todas las dependencias necesarias como PyTorchOpenCV y la biblioteca Ultralytics , puedes asegurarte de que el proceso de entrenamiento sea reproducible. Una vez entrenado el modelo, puedes empaquetarlo en una imagen Docker y desplegarlo en un entorno de producción, como un servidor en la nube o un dispositivo de borde. Esto facilita la ampliación del despliegue y la gestión de las actualizaciones del modelo. Por ejemplo, nuestra guía Docker Quickstart ofrece instrucciones para configurar y utilizar los modelos Ultralytics YOLO con Docker.

  2. Desarrollar y probar aplicaciones web potenciadas por IA:Imagina que estás desarrollando una aplicación web que utiliza un modelo de aprendizaje automático para la clasificación de imágenes. Docker puede ayudarte a agilizar el proceso de desarrollo y prueba. Puedes crear contenedores separados para la aplicación web, el modelo de aprendizaje automático y cualquier otro servicio necesario, como una base de datos. Esto te permite desarrollar y probar cada componente de forma independiente. Por ejemplo, puedes utilizar un contenedor con TensorFlow o PyTorch para servir el modelo de aprendizaje automático y otro contenedor para ejecutar el front-end de la aplicación web. Este enfoque modular facilita la actualización y el mantenimiento de la aplicación.

Comparación con términos similares

  • Contenedorización vs. Virtualización: Aunque tanto la contenedorización (utilizada por Docker) como la virtualización permiten entornos aislados, difieren significativamente. Las máquinas virtuales (VM) virtualizan toda una máquina hasta el nivel de hardware, incluido el sistema operativo. Esto hace que las VM sean pesadas y lentas de arrancar. Los contenedores, en cambio, virtualizan el sistema operativo, lo que los hace ligeros y rápidos de arrancar. Los contenedores Docker comparten el núcleo del sistema operativo del sistema anfitrión, reduciendo la sobrecarga y mejorando la eficiencia.
  • Docker vs. Kubernetes: Docker es una plataforma para crear y ejecutar contenedores, mientras que Kubernetes es una herramienta de orquestación de contenedores para gestionarlos a escala. Kubernetes automatiza el despliegue, escalado y gestión de aplicaciones en contenedores. Mientras que Docker puede utilizarse por sí solo para ejecutar contenedores, Kubernetes se utiliza a menudo junto con Docker para gestionar despliegues a gran escala.

Aprovechando Docker, los profesionales de la IA y el aprendizaje automático pueden agilizar sus flujos de trabajo, mejorar la colaboración y desplegar modelos con mayor eficacia. Para obtener más información sobre la configuración y el uso de Docker con Ultralytics YOLO , consulta nuestra guía de inicio rápido de Docker.

Leer todo