MLOps
Recientemente, el equipo de ZYLK ha estado trabajando en varias iniciativas relacionadas con el aprendizaje automático. Según el estado del arte tecnológico, existe actualmente un gap entre los entornos de pruebas y desarrollo donde se construyen estas soluciones, y los entornos productivos. Si bien es cierto que cada vez existen más herramientas orientadas a ofrecer soluciones a esto, aún no existe una metodología clara y unificada sobre la manera en la que proceder para desplegar y gobernar esta clase de sistemas en producción. Esto en parte se debe a que muchas de estas técnicas son aún muy jóvenes, y se encuentran en pleno periodo de transición a su aplicación en el mundo real. La línea de investigación sobre MLOps tiene por objetivo arrojar algo de luz sobre el tema.
El término MLOps (también conocido como AIOps) es la aplicación de las técnicas DevOps a los sistemas de Machine Learning (ML). (DevOps, muy difundido entre los profesionales del mundo IT, incluye los métodos necesarios para controlar y mantener soluciones de manera efectiva y segura en entornos productivos). Los sistemas de ML suelen presentar más complejidad comparados con otros sistemas tradicionales. Esto puede deberse a múltiples factores, aunque algunos de los más comunes son la necesidad de participación multidisciplinar en proyectos de ML, normalmente entre varios perfiles o equipos (Data Science, Developers, etc); o la inclusión de steps adicionales en el pipeline global derivados de controlar la calidad de los datos y los modelos.
Por estas razones, MLOps es en la actualidad una línea de investigación con mucha actividad, que tiene por objetivo concreto unificar las metodologías para asegurar la producción de los sistemas de ML.
Actualmente existen aproximaciones diferentes a la hora de diseñar un workflow de despliegue de ML. A pesar de las diferencias entre ellas, muchas comparten una idea común: un sistema de múltiples fases encargado de gobernar datos, modelos y código. Estas fases a menudo se recogen en los siguientes puntos [1]:
-
Gestión de los datos: fase inicial de la cadena que se centra en la importancia de los datos que se usarán para entrenar los modelos y asegurar su calidad. Aquí se incluyen tareas como “data collection”, “preprocessing” y “augmentation” para evitar inconsistencias y “biases” en los modelos finales.
-
Aprendizaje de los modelos: fase en la que el modelo realmente aprende sobre el problema que tiene que resolver. Aquí se engloban tomas de decisiones importantes, como la elección de los modelos, buscando un equilibrio entre la complejidad de los mismos y el valor que vayan a aportar, o los costes derivados de su entrenamiento (tanto temporal como computacionalmente).
-
Verificación de los modelos: fase en la que se mide la utilidad del modelo, tanto a nivel de performance con nuevas observaciones, como a nivel de caso de uso analizando el valor que va a aportar en el negocio final.
-
Despliegue de los modelos: fase en la que el modelo se incorpora a la cadena de valor. Aquí se incluyen varios aspectos a tener en mente, desde la integración con la infraestructura y sistemas existentes, monitorización y actualización del mismo (integración continua).
Con estas fases en mente, se busca la metodología de integración continua para sistemas de ML (CD4ML, Continuous Delivery for Machine Learning). El objetivo de ésta es asegurar que cualquier incremento pueda ser fácilmente incluido en una release, teniendo en cuenta datos, modelos y código.
Hoy en día podemos encontrar muchas herramientas que buscan dar solución a aspectos concretos del workflow de despliegue de ML. Algunas de ellas se centran en la fase de deploy, y se pueden caracterizar en la forma de despliegue más simple, incluyendo un modelo como dependencia utilizando herramientas como ONNX o PMML; o enfoques más elaborados donde se dispone de un modelo como servicio, donde se pueden destacar herramientas como MLFlow o Apache Submarine. Otras herramientas se centran en los primeros pasos de gestión de los datasets y construcción de los modelos, buscando ofrecer siempre la reproducibilidad los experimentos. Aquí se enclava la herramienta Data Version Control (DVC), por ejemplo.
En definitiva, actualmente el diseño del workflow de ML es una tarea delicada, y necesaria para cualquier equipo que quiere llevar a producción esta clase de sistemas. Sea cual sea la elección de herramientas concretas, el resultado será un flujo de múltiples steps a través de los cuales se combinan datos, modelos y código hasta llegar al despliegue y monitorización de la solución final.
A continuación se ofrece una visión esquemática del aspecto del sistema resultante:
Bibliography:
[1] Andrei Paleyes, Raoul-Gabriel Urma and Neil D. Lawrence. Challenges in Deploying Machine Learning: a Survey, 2020. of Case Studies
[2] Danilo Sato, Arif Wider, and Christoph Windheuser. Continuous delivery for machine learning, 2019. Available at https://martinfowler.com/articles/cd4ml.html.