El proceso de construcción de modelos basados en Machine Learning (ML) tiene como objetivo desarrollar modelos que puedan ser desplegados en un determinado entorno. Este proceso se conoce como ciclo de vida de los modelos y está compuesto normalmente por al menos dos fases u operaciones: (1) una fase entrenamiento donde se realiza la preparación de la información será utilizada para construir el modelo mediante un algoritmo de Machine Learning; y (2) una fase de despliegue (inferencia) que consiste en desplegar el modelo de manera que pueda ser utilizado para predecir (clasificación, regresión o agrupamiento) un ejemplo (conjunto de datos).

Fases u operaciones del ciclo de vida de los modelos.
Fases u operaciones del ciclo de vida de los modelos.

Aunque, actualmente se incluyen otras fases u operaciones relacionadas con el análisis y la preparación de los datos, la reutilización de los conjuntos de datos (Datasets), la validación y almacenamiento de los modelos generados y/o la explicabilidad de los resultados (predicciones) generados por el modelo como se puede observar en la imagen previa.

Consideraciones para la definición del ciclo de vida de los modelos

A la hora de definir el ciclo de vida de los modelos es importante y necesario considerar dos factores que pueden influir significativamente como se definen sus diferentes fases: (1) el modo de despliegue (productivización del modelo); y (2) el entorno donde se van a ejecutar las diferentes fases u operaciones.

Con respecto al modo de despliegue se suelen considerar dos tipos de modo:

  • Productivización manual que consiste en poner en funcionamiento un modelo de manera manual y que requiere de una manipulación completa por parte de los ingenieros que desarrollan el modelo o de los ingenieros de despliegue (DevOps). En la mayoría de los casos los modelos son desplegados por el mismo equipo de ingenieros que los han desarrollado por lo que el proceso de despliegue manual suele realizarse de manera precisa.
  • Productivización automática que consiste en poner en funcionamiento un modelo mediante la automatización de diferentes operaciones de manera que el modelo sea capaz de entrenarse y desplegarse (puesta en producción) de manera totalmente automática sin la intervención de ningún ingeniero fuera del proceso de diseño y desarrollo de las diferentes operaciones y del proceso de automatización.

Con respecto al entorno de despliegue es importante y necesario tener en cuenta las restricciones y necesidades a nivel de recursos computacionales que podrán ser utilizados para el entrenamiento (completo o incremental) y el despliegue. Normalmente se pueden considerar tres tipos de entornos operacionales:

  • Entorno Cloud público: el entorno cloud público suele ser el entorno más común para el entrenamiento y despliegue de modelos y consiste en ejecutar las diferentes fases u operaciones sobre los diferentes sistemas de computación, que van desde la utilización de instancias de ejecución tradicionales, sistema de computación especializados y/o clústeres de kubernetes donde podemos desplegar contenedores.
  • Entorno Cloud privado: similar al entorno Cloud público sólo que ofrece un número menor de herramientas para la automatización de las diferentes fases u operaciones, ya que muchas de las nuevas herramientas de automatización sólo están implementadas en ciertos entornos de tipo Cloud público a nivel nativo.
  • Entorno Edge: un nuevo tipo de entorno de ejecución que comienza a utilizarse debido a la aparición de dispositivos de tipo IoT (Internet of Things) con capacidades suficientes para el entrenamiento y despliegue de los modelos de ML. Además, este tipo de entornos se está comenzando a popularizarse debido a que ofrecen dos ventajas sobre los entornos de tipo Cloud: (1) disminución de la latencia en las peticiones debido a que no se deben hacer solicitudes remotas al Cloud; y (2) un aumento de la privacidad debido a que los datos recogidos por los dispositivos no son enviados y/o almacenados en el Cloud.

El ciclo de vida de los modelos

El ciclo de vida de los modelos es mucho más complejo de lo que comúnmente se cree, ya que en la mayoría de los casos se considera que la parte más compleja e importante de dicho ciclo es el proceso de construcción del modelo (entrenamiento). Pero esto no suele ser cierto, ya que a la hora de construir y desplegar un modelo es necesario utilizar un número muy elevado de componentes, que no sólo influyen en las fases/operaciones de entrenamiento y despliegue. Es decir, para poder completar el ciclo de vida de un modelo (construirlo y ponerlo en producción para su uso) es necesario desplegar un amplio número de componentes donde el proceso de entrenamiento suele ser el más sencillo, como se puede observar en la siguiente figura:

Definición de los componentes básicos para la productivización de los modelos.
Definición de los componentes básicos para la productivización de los modelos.

El software que se construye para ejecutar el ciclo de vida de los modelos alberga una denominada deuda técnica oculta debido al elevado número de componentes que son necesarios para poner en producción de manera correcta. Este elevado número de componentes hace que el proceso de automatización del ciclo de vida de los modelos sea aún más complicado debido a la gran cantidad de componentes que deben ser ejecutados y orquestados para entrenar y desplegar un modelo. Para poder automatizar todas las fases u operaciones que forman parte del ciclo de vida de los modelos aparecieron las denominadas Machine Learning Operations (MLOps) que intentan paliar las limitaciones que tienen los procesos de automatización del ciclo de vida del software tradicional (DevOps), donde únicamente se automatiza el proceso de compilación, testeo y despliegue del software, y no otros aspectos como el versionado de los conjuntos de datos de entrenamiento, el versionado de los artefactos o la monitorización de los modelos en producción, como se observa en la siguiente figura:

Definición de las operaciones del ciclo de vida tradicional del software (DevOps).
Definición de las operaciones del ciclo de vida tradicional del software (DevOps).

Este proceso de automatización del ciclo de vida del software tradicional no es suficiente para cubrir las necesidades del ciclo de vida de los modelos, ya que no se incluyen procesos relacionados con los datos que se utilizan para construir y evaluar los modelos o los propios modelos ya que ahora es necesario automatizar tanto el código de los procesos que realizan el procesamiento, la transformación y la validación de los datos, así como el código de los procesos que se ocupan el entrenamiento, el almacenamiento, el despliegue y la monitorización de los modelos.

Definición de los elementos principales de las aplicaciones software basadas en el ciclo de vida de los modelos.
Definición de los elementos principales de las aplicaciones software basadas en el ciclo de vida de los modelos.

Es decir, las aplicaciones software basadas en el ciclo de vida de los modelos a diferencia de las tradicionales incluyen tres elementos básicos (Código, Datos y Modelos), como se muestra en la anterior Figura, cada uno de los cuales necesitan de operaciones específicas para su desarrollo, compilación, control, almacenamiento, pruebas (testing, debugging y validación) y despliegue. Esto hace necesario que los procesos MLOps incluyan nuevas operaciones relacionadas con los elementos (Datos y Modelos) no incluidos en el ciclo de vida del software tradicional:

  • Recolección de datos (Preparación, análisis y transformación).
  • Validación de datos.
  • Monitorización de datos.
  • Entrenamiento (ML code).
  • Validación del modelo.
  • Empaquetado del modelo.
  • Entrega (Despliegue) del modelo.
  • Monitorización del modelo.

Para poder incluir estas nuevas operaciones, fue necesario incluir una nueva fase dentro del ciclo tradicional del software (DevOps) dando lugar a las prácticas de MLOps como se muestra en la siguiente figura.

Definición de las operaciones del ciclo de vida de los modelos (MLOps).
Definición de las operaciones del ciclo de vida de los modelos (MLOps).

Donde, además de las operaciones del ciclo del software tradicional (DevOps), se incluyen cinco nuevas super operaciones que incluyen todos los procesos necesarios para la correcta ejecución del ciclo de vida de los modelos.

  • Entrenamiento (Train): Esta operación se corresponde con todas las operaciones de recolección del dato (preparación, transformación y/o limpieza) y ejecución del proceso de entrenamiento de manera reproducible. Esta fase suele ser la más compleja y normalmente se divide en subfases más sencillas que pueden ser ejecutadas de manera individual debido a su complejidad o al coste computacional que supone su ejecución.
  • Empaquetado (Package): Esta operación se corresponde con la creación de un paquete desplegable y autocontenido para el posterior despliegue del modelo. Este paquete debe contener todo el software necesario para la correcta ejecución del modelo.
  • Evaluación (Evaluate): Esta operación se corresponde con la evaluación del funcionamiento del modelo (inferencia) mediante la utilización de un conjunto de test con el objetivo de analizar el correcto funcionamiento del modelo.
  • Despliegue (Deploy): Esta operación se corresponde con el despliegue del paquete en el entorno de ejecución (Cloud, Edge) para uso en tiempo real, streaming o batch (inferencia).
  • Monitorización (Monitoring): Esta operación se corresponde con el proceso de monitorización de todo el ciclo de vida del modelo que va desde la recolección de datos hasta su despliegue y utilización con el objetivo de analizar su funcionamiento y poder identificar su estado.

La ejecución secuencial y coordinada de estas operaciones puede ser descrita como una canalización (pipeline) o como un super canalización formada por canalizaciones más sencillas que permiten preparar y transformar los datos, para luego utilizarlo para construir un modelo mediante un proceso de entrenamiento, que debe ser empaquetado para poder ser desplegado y monitorizado. Incluso es posible añadir operaciones más complejas que por ejemplo nos permitan explicar a través de los datos de entrada las predicciones de los modelos.

Tecnologías y/o plataformas

Actualmente existen diferentes tecnologías, algunas de las cuales se muestran en la siguiente figura, para ejecutar y automatizar el ciclo de vida de los modelos, las cuales se suelen dividir en dos grandes grupos:

Mapa de tecnologías MLOps.
Mapa de tecnologías MLOps.
  • Tecnologías para entornos cloud: Este tipo de tecnologías son aquellas nativas que se despliegan en un entorno Cloud de tipo público y ofrecen tecnología para la automatización de todas las posibles operaciones que se dan durante el ciclo de vida de los modelos siendo las más importantes las plataformas específicas de las tres nubes públicas mayoritarias (Vertex AI, Amazon SageMaker y Azure Machine Learning). Aunque estas plataformas se pueden combinar con otras herramientas que son capaces de automatizar y/o ejecutar algunas de las operaciones, como por ejemplo Seldom que permite la automatización del proceso de despliegue de los modelos sobre Kubernetes u OpenShift.
  • Tecnologías para entornos On-Premise: Este tipo de tecnologías son aquellas agnósticas que permiten automatizar de manera parcial o completa algunas de las operaciones del ciclo de vida de los modelos en entornos de tipo On-Premise o Cloud privado, público o híbrido. Siendo algunas de las más comunes MLFlow, Databricks o Seldom.

Conclusiones

La creación de software que ejecute el ciclo de vida de los modelos de manera parcial o completa suele tener un nivel de complejidad muy elevado, ya que va más allá del entrenamiento y la ejecución (inferencia) del modelo predictivo resultante. Es decir, es necesario definir, desarrollar, compilar, empaquetar, desplegar y orquestar una serie de operaciones sobre diferentes elementos (modelos, datos y código fuente) que den lugar a un proceso automático que además no están soportados por el modelo DevOps.

Con el objetivo de facilitar y subsanar las limitaciones del modelo DevOps aplicado al ciclo de vida tradicional del software han aparecido un conjunto de nuevas prácticas denominadas MLOps que ofrece nuevas operaciones, recomendaciones y técnicas que permiten incluir las peculiaridades del ciclo de vida de los modelos.

Cuéntanos qué te parece.

Los comentarios serán moderados. Serán visibles si aportan un argumento constructivo. Si no estás de acuerdo con algún punto, por favor, muestra tus opiniones de manera educada.