馃帣 Episodio 16. Etapas de un proyecto de Machine Learning: Despliegue y monitorizaci贸n

En el episodio de hoy de Un Podcast Ninja sobre Big Data terminamos la saga de episodios dedicados a las etapas de un proyecto de Machine Learning. Hoy hablamos del despliegue del modelo y su monitorizaci贸n.

Hoy vamos a hablar de todo lo que nos queda por hacer una vez hemos entrenado el modelo de Machine Learning. Todas esas cosas de las que nunca hablan en los cursos de Inteligencia Artificial.

La mayor铆a de los modelos de Machine Learning que se entrenan en el mundo nunca llegan a ser utilizados. Especialmente si forman parte de alg煤n programa de estudios de Inteligencia Artificial o Ciencia de datos.

Y es una pena鈥. 隆Con todo lo que hemos hecho para llegar hasta aqu铆!

Comenzamos en el episodio 13, por el planteamiento del problema y las cosas que deber铆amos preguntarnos para comenzar con buen pie鈥

  • Saber por qu茅 se quiere resolver ese problema
  • Qu茅 es lo que se quiere conseguir exactamente. Ojo que si aqu铆 la respuesta es aplicar Machine Learning al problema X empezamos mal鈥 aplicar Machine Learning no puede ser el objetivo que queremos conseguir. Es un medio para conseguir un fin y no el fin en s铆 mismo.
  • Saber c贸mo vamos a cuantificar los resultados m谩s all谩 de si el modelo tiene una precisi贸n u otra. 
  • Y tambi茅n estar铆a bien saber c贸mo se est谩 haciendo hasta ahora esa cosa que queremos hacer con Machine Learning 

Despu茅s de esto, pasamos al episodio 14 para construir un dataset de entrenamiento tope de gama que nos permita entrenar un modelo tope de gama. 

El modelo m谩s potente entrenado con datos mediocres nos dar谩 un resultado mediocre.

Vimos que un dataset tiene que ser representativo, en el mejor de los casos los datos de entrenamiento se obtendr谩n en el mismo entorno en el que luego se va a utilizar el modelo.

Deber铆an de ser tambi茅n consistentes y fiables. Es decir, recolectados de la misma manera y de fuentes que m谩s o menos funcionan todo el rato, no por ejemplo, un sensor que solo nos da datos 1 vez al mes, cuando le da por funcionar y el resto nada.

Y datos en cantidad, que eso siempre viene bien.

Adem谩s, tambi茅n vimos c贸mo etiquetar esos datos para poder formar el conjunto de datos de entrenamiento completo.

Y la semana pasada, en el episodio 15, vimos c贸mo entrenar el modelo.

Pues para que ese modelo no pase a ser parte de todos los modelos de Machine Learning entrenados y olvidados del mundo hoy vamos a ver la etapa de despliegue.

Pero lo primero, antes de desplegar nada, ser铆a presentar los resultados al cliente. Esta fase puede que s铆 lleguen a vivirla algunos de los modelos de Machine Learning que nacen en los programas de estudios de Inteligencia Artificial y que requieran presentar los resultados a un profesor.

Pero hay algunas diferencias en la manera de hacerlo鈥

La principal es que el profesor sabe de Machine Learning y tiene unas expectativas m谩s realistas. Sin embargo, las expectativas de un cliente no especialista en IA podr铆an ser un poco demasiado altas. Y el hype podr铆a matar al proyecto.

Por ejemplo, el cliente podr铆a pensar que el modelo de Machine Learning 鈥渆ntiende鈥 lo que est谩 resolviendo. Aqu铆 ser铆a buena idea mostrar algunos casos en los que el modelo no  haya acertado en su predicci贸n. Especialmente, aquellos casos  que igual estar铆an super claros para un humano.

Tambi茅n es una buena pr谩ctica  dejar en casa los t茅rminos abstractos. Si me dec铆s que el modelo tiene una precisi贸n del 97% yo voy a escuchar que acierta siempre, o casi, pero vamos que acierta mucho.

Ahora si dec铆s que de todos los sobaos que pasan por de la l铆nea de producci贸n en un d铆a el modelo etiqueta como sobaos correctos a 20 que estaban mal y descarta 30 sobaos que estaban bien pues hay m谩s probabilidades de que el cliente se haga una idea correcta sobre qu茅 esperar de los resultados.

Si dejamos contento al cliente con los resultados ha llegado la hora de que nuestro modelo se despliegue. Es decir, que vaya a ser utilizado en un entorno real.

La manera m谩s com煤n para desplegar un modelo de Machine Learning es mediante una API. Una API no es m谩s que una capa de abstracci贸n que permite comunicarse a dos aplicaciones. En este caso, una de ellas ser铆a nuestro modelo de Machine Learning que espera unos datos para hacer una predicci贸n o inferencia y la aplicaci贸n que genera esos datos y espera un resultado.

B谩sicamente, hace falta una API porque las aplicaciones pueden haber sido desarrolladas en distintos lenguajes y es mucho m谩s f谩cil hacer esta capa que traducir cualquiera de las dos apps al otro lenguaje, que igual ni tenemos acceso a 茅l, ni sabemos hacerlo e integrarlas.

Como un int茅rprete de las naciones unidas que hace que el representante de la India se entienda con el de Brasil sin necesidad de que el indio aprenda brasile帽o ni viceversa.

Para esto hay que garantizar que la aplicaci贸n que va a pasar los datos al modelo y va a usar la predicci贸n tenga conexi贸n a internet,porque si no no va a poder acceder al modelo y no va a funcionar.

Bueno, pues decidimos si queremos que la API de nuestro modelo est茅 en un servidor propio que tenga siempre conexi贸n a internet o en la nube y listo.

A veces, la opci贸n de una API no es v谩lida para el problema. Por ejemplo, si no va a haber internet donde se tenga que utilizar o si los datos que va a utilizar son super sensibles y secretos de manera que no pueden salir del dispositivo del usuario, ni siquiera a trav茅s de una conexi贸n segura.

En este caso, se podr铆a hacer una mini versi贸n del modelo que se ejecutara directamente en un tel茅fono m贸vil o en dispositivo muy peque帽ito con mucha menos capacidad que un ordenador. Ser铆a el caso, por ejemplo, de las c谩maras que detectan autom谩ticamente caras antes de hacer una foto. 

Y luego, la tercera opci贸n para desplegar un modelo es hacerlo en el navegador. Este caso podr铆a usar una API pero tiene la ventaja de que en vez de usar los recursos de un servidor donde vive el modelo para calcular la predicci贸n, que ser铆an los tuyos. Usar铆a los recursos del navegador de qui茅n est谩 utilizando el modelo. Lo que implica menos dinero gastado en servidores.

O si pasa lo mismo con los datos que en el caso anterior, que son muy delicados y no deber铆an salir del ordenador del usuario, ni tan siquiera encriptados.

Podr铆a parecer que el una vez que elijamos como desplegar el modelo, ese modelo que entrenamos con aquellos datos que con tanto cuidado hab铆amos recolectado y preparado pues ya habr铆amos terminado.

Pero tampoco porque los modelos tienen tendencia a perder efectividad con el tiempo. Los datos evolucionan. Dependiendo del caso de uso  pueden evolucionar m谩s o menos r谩pido pero cambian.

Puede ser que sean datos estacionales, como podr铆a ser un ecommerce de ropa en el que se comprar谩 m谩s ropa de invierno cuando las temperaturas bajan o puede que los patrones de comportamiento cambien de manera dr谩stica. Por ejemplo, usuarios de una red social que pierde popularidad frente a otra.

El modelo, como los datos que lo han entrenado, est谩 vivo y  es necesario monitorizar su rendimiento porque es posible que necesite ser re-entrenado con un nuevo dataset de entrenamiento. Algunos modelos envejecen mejor que otros.

Por ejemplo, en el caso de clasificaci贸n de sobaos de una l铆nea de producci贸n tal vez no veamos una disminuci贸n del rendimiento del  modelo hasta que se cambie la  forma del sobao o la iluminaci贸n de la f谩brica o algo as铆, pero en el caso de detecci贸n de fraude en un ecommerce los cambios son mucho m谩s r谩pido. Los timadores no paran de idear nuevas formas de defraudar.

Adem谩s, deber铆amos mantener vigilados los objetivos que quer铆amos cumplir cuando planteamos el problema. Y no me refiero al rendimiento del modelo si no que si rescatamos la escuela de yoga online que quer铆a incorporar un sistema que recomendara nuevas clases a sus alumnos seg煤n sus preferencias, deber铆amos de ser capaces de ver si realmente los alumnos est谩n m谩s satisfechos, si acaban haciendo esas clases y si el n煤mero de bajas de la plataforma ha disminuido.

As铆 que en cuanto hayamos desplegado nuestro modelo de Machine Learning y est茅 haciendo sus primeras predicciones hay que empezar a pensar en recolectar  y etiquetar nuevos datos para volver a re-entrenar el modelo cuando su rendimiento empiece a deteriorarse.

Como veis, hay mucho m谩s all谩 en un proyecto de Machine Learning que conseguir entrenar un modelo que consiga un 99% de precisi贸n en sus predicciones sobre un conjunto de datos que nos viene dado.

Espero que os guste el episodio 馃槉

Si es as铆, no olvid茅is dejar un 芦Me gusta禄 y alg煤n comentario al episodio en Ivoox o una valoraci贸n de 5 estrellas del podcast en Apple podcasts, en Spotify, en Google podcasts o donde quiera que escuch茅is el podcast. 

Recordad que si ten茅is cualquier duda o pregunta pod茅is contactar conmigo a trav茅s del formulario de contacto o podemos seguir la conversaci贸n en Twitter.

Muchas gracias por estar ah铆 y os espero en el pr贸ximo episodio de Un Podcast Ninja sobre Big Data.

Bolet铆n Ninja

Suscr铆bete a la newsletter y recibe la gu铆a ninja del Big Data y la Inteligencia Artificial.

Gu铆a ninja del Big Data
Copyright 漏 2023  路 Datos 馃シ 路 Todos los derechos reservados