El Mantenimiento en el Machine Learning (MLOps)

En este artículo veremos en qué consiste el mantenimiento de un modelo de Machine Learning, una de las fases fundamentales del Machine Learning Operations.

¡Así que listo, comencemos!

Video

Como siempre, en el canal de YouTube se encuentra el video de este post:

Introducción

En artículos anteriores hemos visto en qué consisten el despliegue y el monitoreo, dos fases esenciales del Machine Learning Operations.

Y hemos visto que en la práctica es inevitable que el desempeño del modelo desplegado se degrade con el tiempo haciendo que progresivamente las predicciones empeoren después de realizar el despliegue, por lo cual es necesario actualizar el modelo periódicamente para combatir esta degradación y seguir generando buenas predicciones.

Así que en este artículo hablaremos del mantenimiento de un modelo de Machine Learning. Veremos qué es y por qué se requiere, cuándo se debe llevar a cabo y cómo realizarlo.

¿Qué es el mantenimiento y por qué se requiere?

Cuando hablamos del monitoreo vimos que un modelo de Machine Learning es totalmente dinámico y altamente dependiente de los datos.

Así que si los datos u otros elementos externos al modelo cambian es muy probable que el desempeño comience a decaer. Es decir que si por ejemplo tenemos un modelo clasificador lo más probable es que recién entrenado tenga una exactitud bastante alta pero a medida que pasa el tiempo esta exactitud irá disminuyendo.

Entonces, tarde o temprano, tendremos que actualizar este modelo para garantizar un nivel mínimo de desempeño y así permitir que este pueda continuar en la fase de producción. ¡Y esto es precisamente el mantenimiento!

Teniendo esto en cuenta podemos definir el mantenimiento de un modelo de Machine Learning como el proceso mediante el cual actualizamos el modelo desplegado para mantener su desempeño.

¿Cuándo hacer el mantenimiento?

Bien, teniendo claro qué es el mantenimiento la siguiente pregunta que debemos responder es ¿cuándo debemos hacerlo? Y la respuesta es: ¡DEPENDE! Es decir que para determinar cuándo debemos hacer el mantenimiento debemos tener en cuenta varios factores que discutiremos a continuación.

La rapidez con que el modelo debe responder a los cambios

Supongamos que construimos un modelo que determina el precio del alquiler de vehículos basado en el comportamiento histórico de los precios de dichos alquileres. Y supongamos además que inicialmente el modelo predice con una buena exactitud los precios pero que de repente hay un gran evento en la ciudad y la demanda se incrementa.

Si el modelo no puede responder a este cambio lo suficientemente rápido, modificando el precio predicho, los usuarios podrían cambiarse a la competencia o se podrían reducir los ingresos para la compañía. En este caso lo ideal es que el modelo se pueda actualizar en cuestión de minutos para responder rápidamente a estos cambios en los datos.

Pero por el contrario, si tenemos un sistema de recomendación como el usado por Netflix para sus sugerencias de contenido, nos daremos cuenta de que se requiere un tiempo de al menos unas cuantas horas o incluso algunos días para que el usuario consuma parte de ese contenido y el sistema genere las predicciones correspondientes. En este caso lo ideal es que el modelo se pueda actualizar en períodos de horas o unos pocos días.

¿La actualización incrementa el desempeño?

Otro factor a tener en cuenta al momento de decidir cuándo actualizar el modelo es determinar qué tanto incremento de desempeño alcanzaremos con dicha actualización.

Por ejemplo si en lugar de actualizar el modelo cada mes lo hacemos cada semana o cada día ¿cuál será la ganancia en desempeño? ¿y esta ganancia en desempeño qué incremento en los ingresos generaría? Acá tenemos que poner en una balanza el costo que implica actualizar el modelo, la periodicidad con que lo haremos y las ganancias que esta actualización representaría para la empresa.

La periodicidad de los datos

Y en tercer lugar otro factor que determina cuándo podremos actualizar el modelo es la periodicidad misma de los datos.

Si tenemos un e-commerce, al estilo de Amazon, tendremos nuevos datos cada vez que una persona adquiere un producto, es decir que al día probablemente tendremos nuevos datos que permitirían actualizar el modelo.

Pero por ejemplo en una tienda física de comercio al por menor probablemente para un producto en particular sólo tendremos datos del nivel de ventas cada semana o cada quincena o cada mes, así que probablemente tendremos que extender la periodicidad con que actualizamos el modelo.

¿Cómo hacer el mantenimiento?

Bien, hasta este punto ya tenemos claro qué es el mantenimiento de un modelo de Machine Learning y cuándo deberíamos hacerlo. Ahora vamos a ver algunas estrategias que se usan para llevar a cabo dicho mantenimiento.

La idea general es que las actualizaciones no se realicen directamente sobre el modelo desplegado, pues esto impediría que el usuario final pueda acceder al mismo. En lugar de ello lo que se hace es generar una réplica del modelo y es sobre esta réplica que se realiza la actualización, y una vez estemos satisfechos con el desempeño de esta réplica se despliega y se reemplaza por el modelo inicial.

Y para realizar este mantenimiento se pueden usar dos enfoques: la afinación del modelo existente y el entrenamiento desde cero.

La ventaja del mantenimiento con afinación del modelo es que generalmente requeriremos recolectar menos datos para poder tener un modelo que se pueda llevar a producción, así que este enfoque podrá responder más rápidamente a cambios repentinos en la distribución de los datos.

Por otra parte, en el mantenimiento con entrenamiento desde cero necesitaremos muchos más datos para poder re-entrenar el modelo, así que este enfoque podría resultar útil si observamos que con la afinación no se alcanza el desempeño esperado.

El mantenimiento y el MLOps

Y con esta fase de mantenimiento tenemos ya todos los elementos que hacen parte del ciclo de vida de un proyecto de Machine Learning que, como vimos cuando iniciamos esta serie sobre el Machine Learning Operations, no llegan únicamente hasta el entrenamiento del primer modelo.

Realmente, una vez desplegado el modelo tendremos que hacer un monitoreo continuo y un mantenimiento periódico, y repetir esto una y otra vez para garantizar que el modelo que se encuentra en la etapa de producción satisfaga las necesidades para las cuales fue creado.

Conclusión

Muy bien y con esta fase de mantenimiento ya hemos completado todos los bloques que hacen parte de lo que conocemos como el Machine Learning Operations. Te invito a leer los artículos anteriores para tener un panorama claro de todos los elementos que entran en juego cuando queremos poner en producción un modelo de Machine Learning.

En los próximos artículos de esta serie comenzaremos a ver aplicaciones prácticas de todo lo que hemos visto hasta el momento. Es decir que tomaremos modelos pre-entrenados y veremos cómo realizar el despliegue, el monitoreo y el mantenimiento usando diferentes tipos de plataformas.

Si tienes alguna duda de este artículo no dudes en contactarme diligenciando el siguiente formulario:

Debes introducir tu nombre.
Debes introducir tu apellido.
Debes introducir un email válido.
Debes introducir un mensaje.
Debes aceptar la política de privacidad.