En los grandes proyectos de ciencia de datos aparecen problemas similares a los de los grandes desarrollos de software. Uno de ellos es la necesidad de integrar en una única solución el trabajo de todos los miembros del equipo. Para ello una de las técnicas más empleadas en desarrollo de software es la integración y la entrega continuas (CI/CD). Veamos a continuación algunas de las ventajas que nos puede aportar el uso de integración continua para la ciencia de datos.
¿Qué es integración continua?
La integración continua (CI, del inglés "Continuous Integration") es unas metodologías de las más utilizadas y probadas actualmente en el desarrollo de software. Especialmente en los proyectos donde, debido a su gran tamaño, es necesario utilizar un enfoque de construcción modular. Donde diferentes equipos de trabajo desarrollan y prueban independientemente el funcionamiento de cada uno de los módulos, generalmente mediante el uso de pruebas automatizadas, antes de su integración.
Posteriormente, se conectan cada uno de los módulos y se prueba el funcionamiento de estos en conjunto. En lo que se denomina la fase de integración. Algo que al aplicar CI se realiza de una forma completamente automatizada. Facilitando la identificación temprana de los problemas o incompatibilidades que pueden introducir en la solución final cambios introducidos en un módulo, pero que no afectan al funcionamiento del propio módulo. Permitiendo solucionar estos de una forma casi inmediata. Evitando en muchos casos incluso su despliegue en producción. Lo que, en los casos en los que exista una cobertura completa de pruebas, permite estar seguro de que cualquier problema debido a un cambio se podrá identificar de forma casi instantánea.
¿Qué es entrega continua?
Por entrega continua (CD, del inglés "Continuous Delivery") se hace referencia al proceso de poner en producción los cambios de la solución de forma automatizada. Lo que se suele realizar una vez la fase de CI finaliza con éxito. Para las aplicaciones de escritorio que se instalan en ordenadores o móviles, el despliegue automático puede ser algo complicado. Por lo que no suele ser habitual. Pero no así para las ubicadas en servidores, en las que es posible implementar cambios y actualizaciones de forma automática y de una manera completamente transparente para los usuarios. Permitiendo también revertir de una manera sencilla aquellos cambios que incluyan problemas.
Aplicación de la integración continua para la ciencia de datos
El desarrollo de un modelo complejo en el ámbito de la ciencia de datos requiere realizar un proceso similar al desarrollo de software. En el que diferentes perfiles (ingenieros de datos, expertos en aprendizaje automático y especialistas en visualización) colaboran desarrollando diferentes componentes que deben ser integrados. Por lo que, en estos casos, también es necesario un proceso de integración. Donde las diferentes componentes desarrolladas por cada uno de los integrantes en el proyecto deben ser integradas. En lo que las metodologías CI/CD pueden ser de gran ayuda.
Aunque, antes de continuar, es importante recordar que existen importantes diferencias entre el desarrollo de software y la ciencia de datos. Mientras que, por un lado, en el desarrollo de software lo que se crea es una aplicación, siendo el producto entregado básicamente el código que se ha escrito durante la realización del proyecto. En ciencia de datos lo que se crea son procesos complejos que operan sobre conjuntos de datos cuyo resultado es una predicción, para lo que habitualmente se utilizan diferentes familias de algoritmos estándares. Por lo que el producto entregado no es la implementación en detalle de los algoritmos (para lo que ya suelen existir librerías ampliamente probadas), sino que son los pasos y parámetros necesarios para llegar a la predicción.
Reentrenamiento de los modelos
Otra diferencia importante es el requisito adicional que existe en los despliegues de ciencia de datos: ser capaz de monopolizar de forma continua el rendimiento de los modelos para identificar el momento en el que estos pierden su eficacia. Detectando así cuando estos han de ser estrenados. Lo que además es una parte crucial del éxito de los despliegues y puede ser fácilmente automatizable.
En un desarrollo de software no es necesario actualizar los despliegues hasta que se amplían el alcance de la solución o se soluciona algún error existente. Pero para los modelos de ciencia de datos esto no es así. Debido a que, en la mayoría de los casos, posiblemente sea peor tener desplegado un modelo que realiza predicciones erróneas debido a que el entorno ha cambiado que no disponer de un modelo. Ya que la existencia de los modelos puede crear una sensación de que se están optimizando los objetivos de negocio, aunque esto no sea así. No hay más que pensar en el caso de un modelo de detección de fraude que no sea capaz de detectar los casos más habituales.
La diferencia en el proceso de monitorización también afecta a la validación antes de la implementación. En la implementación de una solución de software, es necesario asegurarse de que la aplicación pase todas las pruebas que se han definido. Pero, durante la puesta en producción de un modelo de ciencia de datos, es posible que también sea necesario garantizar que algunas predicciones sean las mismas que en el conjunto de entrenamiento. Por ejemplo, los clientes asignados a un clúster en cornete aún sigan perteneciendo a este o que las anomalías detectadas aún se detecten.
CI/CD en ciencia de datos
Por todo lo visto hasta ahora se puede decir que las técnicas de CI/CD se pueden aplicar en los despliegues de los modelos de ciencia de datos. Aportando grandes ventajas a los mismos. Al igual que en los desarrollos de software lo que se busca con un proceso de integración continua es desplegar una actualización de la aplicación o servicio que mejore los resultados. En este caso de los desarrollos de software, la integración de nuevas funcionalidades o la solución de errores existentes. Mientras que, en los modelos de ciencia de datos, además una actualización de los modelos para que estos generen unas mejores predicciones.
Conclusiones
En esta entrada se ha discutido algunas ventajas de aplicar integración continua para la ciencia de datos. Una metodología ampliamente probada en los proyectos de desarrollo de software. Aunque, debido al espacio, no se ha entrado en detalle de como hacer esto, es algo que se puede dejar para futuras publicaciones.
Imagen de Gino Crescoli en Pixabay