¿Qué son las MLOps?

Introducción a las metodologías DevOps, MLops y otras variantes 

Desde el equipo de I+D de Zylk seguimos investigando los más novedosos enfoques de trabajo, siempre englobados en las metodologías de trabajo establecidos en el proyecto europeo FRACTAL, o los proyectos AIRSAFE, SMARTEDGE y KAIA, avalados por el programa HAZITEK 2021. Durante el desarrollo de estos proyectos se han estudiado diversas metodologías, las cuales mostramos en este post como resultado de nuestras investigaciones.

CONCEPTO DEVOPS

   Antes de nada, no se puede entender el enfoque MLOps sin tener una visión previa del enfoque DevOps. El enfoque de trabajo DevOps, término que proviene de la unión de las palabras Desarrollo (Development) y Operaciones (Operations), apareció de forma natural para disminuir los problemas surgidos durante el desarrollo de software entre diferentes equipos de las empresas IT. Además, su uso no está restringido a las áreas de desarrollo y operaciones, si no que puede integrar a más áreas, como pueden ser los de calidad, seguridad, etc. 

El objetivo de este enfoque es agilizar y facilitar el proceso de desarrollo y entrega de software, uniendo para ello equipos que tradicionalmente no estaban tan comunicados, como por ejemplo los equipos de desarrollo y los de mantenimiento de sistemas. Con la colaboración de estos grupos, se busca optimizar el trabajo de los desarrolladores a la vez que se asegura la funcionalidad de las aplicaciones desarrolladas mediante medidas de monitorización aplicadas por el equipo de operaciones.

El proceso que se sigue en la aplicación de las DevOps suele estar formado por ocho fases, que se repiten durante el ciclo de vida de las aplicaciones desarrolladas como se muestra a continuación:

Imagen obtenida de RRHH Digital

En cada fase se llevan a cabo diferentes tareas, realizadas por el equipo de desarrollo y el de operaciones:

  • Equipo de desarrollo (Dev)
    • Fase Planificación: En esta fase, el equipo de desarrollo habla con el cliente sobre los detalles de su aplicación y se planean las funcionalidades que se van a implementar, corregir o mejorar según los resultados recibidos del equipo de operaciones.
    • Fases Programación, Implementación y Testeo: en estas fases es cuando se programan, implementan y testean las funcionalidades que se van a añadir a la aplicación.
  • Equipo de operaciones (Ops):
    • Fases Desplegado y Publicación: el equipo de operaciones recibe las nuevas implementaciones y despliega y publica el código generado de tal manera que no entre en conflicto con las funcionalidades ya implementadas. 
    • Fases Operación y Monitorización: se definen medidas de control y monitorización para asegurar el funcionamiento de la aplicación una vez puesta en producción, y se van comunicando los resultados de las mediciones al equipo de desarrollo. Desde aquí, con las mediciones obtenidas, el proceso volvería otra vez a la fase Plan, iniciando una nueva etapa dentro del ciclo de vida  de la aplicación.

Siguiendo las prácticas DevOps, se consigue una relación más robusta entre los equipos involucrados en el proceso de desarrollo y el cliente, y además, se facilita la puesta en producción y mantenimiento de las aplicaciones desarrolladas, pudiendo añadir y corregir funcionalidades según las necesidades del cliente o de la propia aplicación de manera sencilla.

Otros enfoques

Con el paso del tiempo, el enfoque DevOps ha sido aplicado a otros ámbitos del desarrollo, consiguiendo adaptarse fácilmente a cualquiera de ellos mostrando su eficacia, surgiendo diferentes paradigmas -Ops. Entre ellos, por ejemplo, nos podemos encontrar: 

  • DataOps. Enfoque que permite la gestión de los datos de una manera fiable, rápida y precisa.
  • ArchOps. Enfoque que aumenta la capacidad de diseño, implementación y gestión de las diferentes infraestructuras.
  • MLOps. Enfoque con el que se consigue una mejor gestión del ciclo de vida de un modelo de Machine Learning.

En concreto, en este post vamos a centrarnos en las MLOps, ModelOps y AIOps.

MLOps

El enfoque MLOps es la aplicación de las prácticas DevOps en el desarrollo y puesta en producción de los modelos de machine learning, y su nombre, como ocurría con el término anterior, viene de la combinación de los términos Machine Learning y Operations. La aplicación de las prácticas MLOps trata de agilizar el proceso de experimentación y desarrollo de modelos, facilitar y hacer más eficiente el proceso de desplegado y mantenimiento de los modelos ya puestos en producción y asegurar la calidad de los resultados obtenidos mediante estos modelos.

Si en las DevOps se integraban los equipos de desarrollo y operaciones, en el enfoque MLOps hay que considerar además, a los equipos de desarrollo de modelos de machine learning, ingeniería y análisis de datos, que se encargan de diseñar y construir los componentes necesarios de los modelos de machine learning y de preparar los datos necesarios para su entrenamiento y puesta a punto. De esta manera, el ciclo de vida de las DevOps se transforma para incluir así las fases necesarias para el desarrollo de sistemas de machine learning:

Imagen obtenida de NVIDIA

 

Este nuevo ciclo de vida y las fases que lo componen tienen un funcionamiento similar a las del enfoque DevOps. En este caso, el equipo de desarrollo de machine learning se encarga de diseñar y crear una arquitectura de modelo que satisfaga las necesidades del cliente, o planifica los cambios necesarios según la información recibida del equipo de operaciones. El nuevo modelo pasa a manos de los ingenieros y analistas de datos, que hacen los cambios necesarios al conjunto de datos y envían los cambios realizados de vuelta al equipo de ingenieros de machine learning. Estos testean y evalúan el modelo, y se comunican con el equipo de operaciones para desplegar y realizar las configuraciones necesarias para la puesta en marcha del modelo creado. Este equipo monitoriza el comportamiento del modelo, y reporta a los ingenieros de machine learning los resultados para que puedan evaluar si es necesario realizar algún cambio en el modelo, volviendo a comenzar el proceso anterior. 

Estas fases se realizan de manera cíclica con el fin de que, en el tiempo que esté publicado y en uso, el funcionamiento del modelo sea el esperado y además pueda adaptarse a nuevas situaciones. 

Como ejemplo de esta metodología de trabajo, existen diversas herramientas como: DVC, que se utiliza para gestionar el control de versiones de los modelos o datasets de entrenamiento, Apache Airflow, con el que se monitoriza y planifica el reentrenamiento, o Cloudera Machine Learning (CML), con el que se gestiona el ciclo de vida del modelo.

A partir de los dos enfoques anteriores, y a medida que se ha ido extendiendo el uso del Machine Learning, han ido surgiendo nuevas metodologías dentro de este ámbito. Estas nuevas metodologías están más centradas en áreas concretas del Machine Learning, como puede ser todo lo relacionado con el tratamiento del dato, la gestión del ciclo de vida del modelo una vez puesto en producción, la automatización de procesos de IT... A continuación se describen algunas de las metodologías más utilizadas: 

ModelOps

Las prácticas ModelOps consisten en la aplicación del enfoque DevOps al mantenimiento de distintos modelos de Machine Learning. Una vez generado el modelo y desplegado en producción, es necesario una continua monitorización del mismo, una correcta escalabilidad del despliegue, o controlar su envejecimiento. En este sentido, realiza una automatización del reentrenamiento del modelo cuando sea necesario, manteniendo al modelo actualizado y evitando así el deterioro de la calidad de la inferencia realizada.

AIOps

Las AIOps (Artificial Intelligence for IT Operations) son una serie de metodologías que tienen como objetivo automatizar procesos como la detección de anomalías o correlación de eventos. Para ello, se utilizan técnicas de inteligencia artificial y algoritmos de machine learning con el fin de filtrar los datos en busca de eventos significativos o patrones de comportamiento del sistema relacionados con su rendimiento. Esta información se comunica en tiempo real al grupo encargado del mantenimiento del sistema, que puede solucionar esos fallos de manera rápida y eficaz, aunque dependiendo del entorno, el propio sistema de inteligencia artificial puede ser capaz de dar solución a estos problemas. 

DataOps

Esta última metodología recoge todas aquellas buenas prácticas relacionadas con la adquisición, administración, analítica, manipulación y entrega de los datos. Los objetivos de la aplicación de estas prácticas son agilizar el proceso de preprocesado, manipulación y utilización del dato manteniendo siempre su calidad y asegurando su seguridad, consiguiendo así realizar un análisis del dato eficiente y eficaz. 

Desde Zylk estamos en contínua investigación de nuevos enfoques y sumergiéndonos en el Estado del Arte de los diferentes métodos, de manera que proporcionen una mejora del desarrollo y continuidad de nuestras diversas soluciones, no sólo como parte de los diferentes proyectos, sino como impulso del área de I+D. 

 

La investigación realizada para redactar este artículo ha sido llevada a cabo por Andrea López Rodríguez y Sergio Martín Hernández.

00

More Blog Entries

thumbnail

0 Comments