¿Cuáles son los casos de uso de Docker en Data Science y Machine Learning?

Docker ha sido una de las herramientas importantes en la configuración del entorno para la implementación de código en producción. La implementación de bases de datos o páginas web se ha vuelto más fácil, sin embargo, esta misma encapsulación del entorno ha encontrado su uso incluso en la fase de desarrollo de la programación y lo mismo en ciencia de datos. Hay dos fases principales en el aprendizaje automático,

  1. Fase de entrenamiento: –
    1. Esta fase implica construir e iterar sobre modelos para largos ciclos de cálculo.
    2. Tiene una carga fija y tiene un estado (Nueva época depende de la época anterior).
    3. Tiene una carga fija con respecto a los requisitos de memoria y cálculo
    4. Por lo general, tiene algoritmos de creación de usuario único.
    5. Uso de Docker: – En esta fase, nos ha permitido entrenar en contenedores únicos / múltiples manteniendo el mismo entorno. Ayuda a ejecutar proyectos en diferentes servidores, lo que ayuda en el seguimiento y la colaboración de proyectos de aprendizaje automático.
  2. Fase de inferencia: –
    1. Esta fase implica servir modelos construidos como API RESTful para predecir en tiempo real en función de las entradas o pronosticar en función de un conjunto de entradas (archivo CSV)
    2. Implica un número variado de llamadas al modelo dependiendo del uso. Ejemplo: si se utiliza la API de reconocimiento facial en la aplicación uber para autenticar a los usuarios, entonces el número de llamadas es diferente a lo largo del día.
    3. Es un estado sin estado ya que una vez que se carga el modelo es independiente de otras predicciones.
    4. Involucra a múltiples usuarios que usan el modelo en esta fase.
    5. Uso de Docker: – En esta fase, nos permite ejecutar múltiples contenedores para servir los modelos y servirlos detrás de RESTful API.

Docker ha mejorado todo el proceso de construcción / implementación de aprendizaje automático. Junto con esta herramienta de orquestación como Kubernetes o Docker Swarm, nos ayuda a lograr la ventaja de trabajar con ellos.

El medio ambiente es un componente importante en el proyecto de aprendizaje automático. Aunque, no es suficiente rastrear y hacer que los experimentos sean reproducibles. Es esencial que rastreemos el código, los datos, los pesos, las estadísticas y los archivos para poder volver a ejecutar / usar el experimento. Creamos Datmo porque teníamos los mismos problemas con el seguimiento de nuestros propios modelos de aprendizaje automático y reconocimos que en ese momento no había una buena manera de realizar un seguimiento de nuestro trabajo. Se integra con Git y no interrumpe los flujos de trabajo actuales, sino que funciona dentro de ellos. Por ejemplo, si tiene un repositorio actual en el que está trabajando, puede comenzar a rastrear instantáneas simplemente haciendo lo siguiente dentro de su repositorio.

Hablando desde mi experiencia, una de las ventajas de Docker es que puede mantener imágenes portátiles. Eso significa que puede crear una imagen de Docker por su cuenta con un SO y software favorables instalados. Incluso puede hacer una copia con solo diferentes versiones de software. Las imágenes son fáciles de transferir de un servidor a otro, y en cualquier servidor, puede ejecutar el mismo contenedor Docker desde su imagen.

Dado que algunas bibliotecas de aprendizaje automático, especialmente para esas bibliotecas de aprendizaje profundo, aún son inmaduras, hay actualizaciones frecuentes. Lo malo es que parte de su programa puede no funcionar en la biblioteca actualizada. Para mantener la versión actual y actualizada, Docker es la respuesta correcta. Una vez que haya creado una imagen de ambos, puede ejecutar su programa en una imagen u otra.

Aquí hay un caso de uso. Puede crear un microservicio que exponga una API REST que reciba información y pueda predecir un resultado. Básicamente, en lugar de ejecutar un programa por lotes ad-hoc para hacer predicciones, o usar la transmisión, puede crear una API que pueda ser utilizada por otros sistemas:

  • Docker se usaría para construir el contenedor
  • El contenedor no tiene estado y se puede escalar horizontalmente en varios nodos para crecer con la demanda de predicciones
  • Incluso el aprendizaje en línea podría agregarse a las capacidades. En ese caso, los datos del modelo tendrían que mantenerse fuera del contenedor (por ejemplo, en un almacén de objetos)
  • Python podría usarse junto con spark o scikitlearn para responder a las solicitudes de predicción. La API podría exponerse usando Flask. Todas estas bibliotecas / paquetes deberán construirse dentro del contenedor

De acuerdo con las respuestas a continuación. Creo que Shabaz Patel dio en el clavo porque Docker puede agregar valor a todo el proceso de entrega que se extiende hasta el desarrollo local. La adopción de un primer flujo de trabajo de Docker elimina una clase completa de problemas de administración de la configuración que pueden generar desperdicios e ineficiencias en todas las áreas del ciclo de vida del desarrollo (y los proyectos de ciencia de datos no son una excepción). Los entornos de desarrollo inconsistentes en todo su equipo pueden ser un gran dolor de cabeza al fusionar el trabajo en conjunto, que es solo una pérdida de tiempo y esfuerzo para desenredar. El mismo problema y desperdicio al no tener paridad dev / prd al implementar sus soluciones (por ejemplo, si está envolviendo sus motores de predicción en tiempo real con una API REST como en el ejemplo de Edward Viaene a continuación). En Manifold, hemos visto una gran eficiencia y mejoras de calidad en todos nuestros proyectos después de utilizar Docker para nuestros proyectos de ML. Abrimos algunas herramientas para ayudar a los equipos de ciencia de datos a comenzar su viaje en Docker. ¡Compruébalo, espero que sea útil!

Torus: un juego de herramientas para la ciencia de datos de Docker-First – Colector AI – Medio

Obtenga entrenamiento profesional de Docker con Mindmajix

Docker es una de las plataformas más efectivas y abiertas que ayudan a los administradores de sistemas y desarrolladores a crear, ejecutar y enviar aplicaciones distribuidas de una manera más fácil. Por esta razón, ahora muchos profesionales quieren aprender más sobre Docker. Hay varias formas disponibles para aumentar sus habilidades de Docker, pero el programa de capacitación en línea especialmente diseñado hace que la tarea de aprendizaje sea más inteligente.

Beneficios de Learning Docker:

El contenedor del motor de expediente consiste simplemente en las aplicaciones y sus dependencias. Esto se ejecuta como un procedimiento aislado en el espacio del usuario en un sistema operativo de alojamiento, dividiendo el núcleo junto con algunos otros contenedores. Por lo tanto, esto disfruta de una separación de recursos y ventajas de asignación de las máquinas virtuales, pero es extremadamente eficiente y portátil.

Mindmajix: Obtenga entrenamiento profesional de Docker con Mindmajix