De recolección de datos a producción
Día a día se recopila una gran cantidad de información sobre las personas a través de redes sociales, hardware y software, registro/uso de aplicaciones y cookies de sitios web. Machine learning y deep learning son cada vez más usados para recomendaciones de audio, detección de imágenes en tiempo real, diagnósticos tempranos de enfermedades, recomendación de rutas, entre otros. Esta información es muy valiosa para las empresas en todos los niveles, debido a que les permite realizar trabajos en menor tiempo, mejorar la experiencia de usuario, mejorar la forma como prestan sus servicios y ofrecen sus productos, ofrecer de forma personalizada soluciones a los clientes, realizar análisis para fidelización de clientes y diseñar estrategias para atraer clientes.
Por lo anterior, es de suma importancia que se creen modelos adecuados al caso de estudio y se realice un proceso de despliegue a producción para que puedan ser usados, dado que los proyectos de DL y ML tienen como finalidad ayudar a la toma de decisiones de forma más rápida y basadas en los datos con los que cuenta la organización. Estos proyectos, además, deben contar con una componente de seguridad debido a que pueden usar información sensible y valiosa para el negocio.
Para llevar a producción el proyecto es necesario tener claro cómo se va a consumir el modelo, cómo y quienes utilizarán los datos de salida en el contexto del negocio. Un proceso o proyecto de DL o ML cuenta con cuatro fases principales:
Definición del problema:
Se recomiendan algunas preguntas:
- ¿Cuál es la necesidad que quiero abordar?
- ¿Existe una solución implementada para esta necesidad?
- ¿Cuál sería una posible solución (manual o automatizada)? y ¿Cómo la usaría?
- ¿Este problema puede ser clasificado para una posible solución mediante el uso de Deep learning o Machine learning?
Recolección y análisis de datos:
Para esta fase se requiere tener el problema a resolver claro y analizar el entorno. Se recomienda tener presente los siguientes puntos:
- Definir los datos que son necesarios.
- Analizar las fuentes para obtener esos datos.
- Calcular el almacenamiento que consumirán los datos al inicio del proyecto para presupuestar infraestructura en caso de ser requerido, y tener en cuenta un crecimiento a futuro, dado que una vez implementado el modelo se requiere un reentrenamiento constante.
- Gestionar accesos y autorización para el uso de los datos.
- Realizar exploración de datos.
- Realizar una limpieza de datos e identificar cuáles son los datos necesarios. Se recomienda anonimizar los datos o implementar seguridad en estos para evitar riesgos legales.
- Identificar cada una de las variables y si existe una relación entre ellas.
- Convertir datos a un formato que pueda ser usado en el modelo y segmentarlos en datos de entrenamiento y datos de prueba.
- Documentar los análisis realizados.
Definición, entrenamiento y uso de un modelo:
Para un proceso o proyecto de machine learning y deep learning se debe identificar el tipo de modelo que se va a usar y definir los hiperparámetros necesarios para el entrenamiento.
En esta fase se recomienda tomar pequeñas muestras de los datos de entrenamiento para entrenar distintos modelos en un corto tiempo y comparar los resultados para definir cuál de ellos se ajusta mejor al problema planteado.
Al definir un modelo se realiza un ajuste de hiperparámetros y cálculo del error, con esto se harán variaciones hasta obtener un error menor. Una vez finalizado el entrenamiento del modelo se utilizarán los datos de prueba para evaluar su rendimiento y calcular un error general.
Análisis de resultados y toma de decisiones:
En esta última fase se realizará la presentación del modelo y paso a producción de este. Se recomiendan los siguientes pasos:
- Documentar todos los procesos realizados y sus conclusiones.
- Realizar una presentación desde el planteamiento del problema hasta la solución dada y sus resultados, sin olvidar los errores presentados y posibles fallas del modelo.
- Realizar pruebas unitarias y preparar los datos para el paso a producción.
- Definir un protocolo de monitoreo para realizar un seguimiento al modelo y detectar fallas.
- Analizar los resultados del modelo y tomar las decisiones pertinentes para solucionar el problema planteado al inicio del proyecto.
Una vez se haya pasado el modelo a producción se requiere tener un control de la calidad de los datos que le ingresan al modelo para evitar errores. A demás, los modelos tienden a quedar obsoletos, es decir, a medida que los datos evolucionan el modelo va perdiendo validez, por esta razón se debe realizar un reentrenamiento en determinado tiempo para actualizar el modelo.
En el siguiente diagrama se resumen los pasos para poner un proyecto en producción:
Para llevar a producción un modelo se recomienda el uso de plataformas en la nube, actualmente hay alternativas como AWS, Azure y Google Cloud Platform. Estas plataformas ofrecen servicios muy completos que permiten la integración de gran parte del proceso que se debe llevar a cabo para un proyecto de ML y DL, desde la recolección de datos hasta la puesta en marcha con visualización, monitoreo y control de versiones.
Un servicio Cloud presenta ventajas como rendimiento, integración de servicios y escalabilidad. En cuanto a costos, tener el modelo funcional en producción aumenta los costos del proyecto porque en este ambiente se requiere un uso del modelo a mayor escala y en algunas ocasiones se debe realizar en tiempo real. Si se cuenta con la infraestructura en sitio necesaria para implementar el modelo en producción, se recomienda exponer el servicio como una API REST y realizar una réplica de servidores para disponibilidad del servicio.
El llevar un proyecto de deep learning o machine learning a producción es muy factible y su complejidad dependerá del tamaño del modelo, de los datos usados y de la cantidad y complejidad de los procesos que se realicen para entrenar el modelo.