MLOps y cómo eliminar la brecha entre el desarrollo y la producción en el aprendizaje automático
Publicado el martes, 07 de junio de 2022 a las 15:28
Crear un modelo de aprendizaje automático es una tarea compleja en la que comienzas limpiando los datos, luego haces la representación y, al final, creas el modelo. Durante este proceso es necesario responder a muchas preguntas como:
- ¿Cuáles son las características correctas para mi problema?
- ¿Es este modelo mejor que el anterior?
- ¿Cuáles son los mejores hiperparámetros?
- Tengo un buen modelo. ¿Cómo lo puedo poner en producción?
- ¿Cómo puedo monitorizar los resultados en producción?
- Tengo una nueva versión de mi modelo. ¿Cuál es la mejor forma de reemplazar el modelo en producción?
MLOps se puede aplicar para resolver estas preguntas y muchas otras. Para comprender qué es MLOps , debemos retroceder en el tiempo y comprender algunos principios de DevOps y la forma de incorporarlos en nuestro trabajo. El objetivo de DevOps consiste en permitir que los desarrolladores de software puedan crear software con un enorme estándar de calidad. Algunas de las sugerencias propuestas sobre DevOps son:
- Control de versiones de todo el código para que otros desarrolladores puedan rastrear el código.
- Integración continua donde se pasan una serie de pasos de prueba al código para estar seguros de que no tenemos ningún error en nuestro desarrollo.
- Entrega continua para implementar nuestro código en producción con la menor interacción humana posible. Por lo general, para permitir este paso es importante describir la infraestructura de hardware que necesitamos como código.
- Monitorización del funcionamiento para rastrear cómo está funcionando el sistema en producción y detectar de manera eficiente posibles errores.
Ahora, con las sugerencias de DevOps en mente, podemos intentar buscar similitudes con nuestras aplicaciones de aprendizaje automático. Algunas de las herramientas más utilizadas son las siguientes:
DVC y CML
Para rastrear modificaciones de los experimentos en Machine Learning es necesario implementar una estrategia de control de versiones. Nuestro algoritmo de aprendizaje automático no sólo depende del código, sino que también depende de los datos. Por eso, necesitamos versionar tanto el código como los datos. Al hacer esto, tú y tus compañeros podéis rastrear cada cambio en el código o los datos y ver cómo afecta al modelo.
Para el paso de integración continua (CI) y entrega continua (CD), es importante verificar que el código y los resultados del modelo sean correctos. Para hacer eso, puedes usar una herramienta de flujo de trabajo como, por ejemplo, Github Actions. Usando, por ejemplo, Github Actions, puedes ejecutar las pruebas y entrenar el modelo en una máquina virtual con tus datos. Si todo es correcto, el modelo puede pasar a la etapa de implementación.
Por otro lado, la herramienta Continuous Machine Learning o CML, tiene una integración con las acciones de Github y GitLab y permite crear informes del proceso de entrenamiento y enviarlos al equipo.
MLFlow
La idea detrás de MLFlow es brindar a los científicos de datos una herramienta para controlar la experimentación, la reproducibilidad y el despliegue de modelos de aprendizaje automático. MLFlow te permite:
- Realizar un seguimiento de tus hiperparámetros, métricas e imágenes con MLFlow Tracking
- Guardar tus modelos en un formato que permita la reproducibilidad en otras máquinas con MLFlow Projects
- Poner en producción modelos de una manera muy fácil en AWS o Azure con MLFlow Models
- Tener un registro para centralizar y guardar tus modelos con MLFlow Registry
En conclusión, hemos visto dos herramientas que puedes utilizar para trabajar más rápido en tus desarrollos y borrar la línea entre desarrollo y producción. Primero, exploramos cómo usar DVC para lograr una integración continua en proyectos de aprendizaje automático. En segundo lugar, con MLFlow analizamos entre otras opciones, la forma de olvidarse de usar excel para guardar los hiperparámetros y métricas.
Estas no son las únicas soluciones, por ejemplo, algunas personas han comenzado a explorar Cortex para desplegar en producción rápidamente y de forma precisa en AWS. Esta herramienta permite a los desarrolladores obtener un nivel de abstracción de la infraestructura detrás de la API. Gracias a eso, puedes definir, por ejemplo, APIs en tiempo real que se autoescalan automáticamente.
Si deseas explorar más sobre el maravilloso mundo de MLOps, puedes consultar https://ml-ops.org. En este sitio web encontrarás más información sobre la motivación de usar MLOps, las mejores prácticas para monitorizar los modelos en producción y muchas herramientas que te pueden resultar útiles.
Si necesitas Soluciones de Interligencia Artificial para empresas, no dudes en contactar con nosotros.