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:

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:

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:

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.

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.

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.

Suscríbete

Estamos comprometidos.

Tecnología, personas e impacto positivo.