Última actualización el 3 de marzo de 2022
Publicación patrocinada
Yo, un científico de datos, y cuadernos Jupyter. Bueno, nuestra relación comenzó cuando comencé a aprender Python. Los cuadernos de Jupyter fueron mi refugio cuando quería asegurarme de que mi código funcionaba. Hoy en día, enseño programación y realizo varios proyectos de ciencia de datos y aún así, los cuadernos son las mejores herramientas para la experimentación y la programación interactiva. Desafortunadamente, cuando se intenta usar notebooks en proyectos de ciencia de datos, las cosas pueden salirse de control rápidamente. Como resultado de la experimentación surgen cuadernos monolíticos, difíciles de mantener y modificar. Y sí, lleva mucho tiempo trabajar dos veces: experimentar y luego transformar su código en scripts de Python. Sin mencionar que es doloroso probar dicho código, y el control de versiones también es un problema. Este es el punto en el que debes pensar, ¡tiene que haber una mejor manera! Por suerte, la respuesta no está en evitar mis queridos cuadernos Jupyter.
Sígueme y conoce algunas ideas geniales de eduardo blancas y su proyecto, llamado plomero sobre cómo hacer mejores proyectos de ciencia de datos y cómo usar y crear cuadernos Jupyter de manera inteligente, incluso en producción.
Jupyter es una herramienta web gratuita y de código abierto, en la que se puede escribir código en celdas, que luego se envía al «núcleo» de back-end e inmediatamente obtiene los resultados. Uno de mis colegas dice que es como una aplicación de mensajería de la vieja escuela con código. La popularidad de la notebook Jupyter se disparó en los últimos años, gracias a la capacidad de combinar código de software, salida computacional, texto explicativo y recursos multimedia en un solo documento. [1]. Entre otras cosas, los cuadernos podrían usarse para computación científica, exploración de datos, tutoriales y manuales interactivos. Además, los cuadernos pueden hablar docenas de idiomas (obtuvo su nombre de Julia, Python y R). Un análisis del sitio de código compartido GitHub contabilizó más de 7,5 millones de cuadernos de Jupyter públicos en enero de 2022. Como científico de datos, utilizo principalmente cuadernos de Jupyter para disputar datos con Python y R, y también enseño a los estudiantes los conceptos básicos de Python a través de cuadernos de Jupyter.
A pesar de su popularidad, muchos científicos de datos (incluyéndome a mí) enfrentan problemas con los portátiles Jupyter. [2]. No podría resumirlo mejor, así que cito las palabras de joel grusquien explicó algunos problemas con los cuadernos [1].
“He visto a programadores frustrarse cuando los portátiles no se comportan como se esperaba, normalmente porque, sin darse cuenta, ejecutan celdas de código fuera de servicio. Los cuadernos de Jupyter también fomentan la mala práctica de codificación al dificultar la organización lógica del código, dividirlo en módulos reutilizables y desarrollar pruebas para garantizar que el código funcione correctamente”.
Los portátiles son difíciles de depurar y probar, y también pasé mucho tiempo en mi carrera refactorizando el código en algunos scripts, funciones que se pueden usar en producción. También hay problemas con el control de versiones, ya que los cuadernos son archivos JSON y git genera una comparación ilegible entre versiones, lo que dificulta el seguimiento de los cambios realizados. [2]. Aquí puede encontrar un resumen más detallado y una explicación sobre los problemas de los portátiles Jupyter.
Los problemas enumerados anteriormente podrían haber sido suficientes para llevarme a encontrar Ptelar, pero descubrí este increíble proyecto a través de mi búsqueda de modularización. Lo que necesitaba era una herramienta para crear y ejecutar fácilmente tareas o fragmentos de código en el orden definido sin pedir ayuda a mis colegas ingenieros de datos. Lo que necesitaba se llama tubería. Con una tubería, uno puede dividir tareas para componentes más pequeños y automatizarlos. Las tuberías pueden tener muchas formas y tamaños. Uno puede crear tuberías incluso en sklearn y pandas. [3].
plomero es un proyecto de código abierto iniciado por Eduardo Blancas para crear tuberías de Python. Me pareció una herramienta fácil de usar, con la que podía definir rápidamente mis tareas con orden de ejecución y dividir mi análisis en partes modulares. Ploomber viene con varios proyectos de muestra donde puede encontrar excelentes ejemplos de la herramienta. También comparto mis experimentos con Ploomber en este repositorio. Lo que me gusta especialmente de Ploomber es la Blog y el comunidad en holguradonde pude preguntar cualquier cosa sobre este proyecto.
Bien, encontré un gran proyecto para modularizar mis proyectos de ciencia de datos, pero ¿cómo me ayudó con mi lucha constante con las computadoras portátiles?
Bueno, Ploomber viene con jupytexto, un paquete que nos permite guardar cuadernos como archivos py, pero interactuar con ellos como cuadernos. El problema del control de versiones fue resuelto.
Luego viene el problema de la refactorización y la modularización. Uno no tiene que deshacerse de los portátiles porque Ploomber puede manejarlos como unidades de canalización. De esta manera, solo tengo que limpiar mis cuadernos y dedicar tiempo a convertirlos a una estructura de código y una arquitectura completamente diferentes. También es posible mezclar cuadernos y scripts en tareas de canalización. Hay una serie de publicaciones de blog sobre cómo dividir cuadernos monolíticos en partes más pequeñas. Lo que siempre les digo a los estudiantes y también sugiere Eduardo, es que escriban su cuaderno de modo que siempre puedan reiniciar su kernel y ejecutar todo su código de arriba a abajo. A veces, un cuaderno tarda mucho tiempo en ejecutarse con una gran cantidad de datos, luego simplemente configure un parámetro de muestra para obtener un subconjunto para probar que su código se ejecuta.
Además de los trucos de la modularización, otra conclusión muy importante que leí en blog de plomber y aplicarme en el trabajo es bloquear las dependencias del proyecto y empaquetarlo para poder importar código de otras libretas. He encontrado problemas con la versión del paquete en algunos proyectos hasta ahora, por lo que puedo asegurarle que puede ahorrarle algunas horas.
Un proyecto de varios cuadernos más cortos y limpios en lugar de unos pocos monolíticos facilita la reproducción, la comprensión y la modificación del código. Además, también permite diseñar un estrategia de prueba para probar códigos ML. Varias publicaciones sobre por qué fallan los proyectos de aprendizaje automático mencionan la dificultad de código de actualización y los problemas de mantenimiento que consumen mucho tiempo. Con un código más breve y limpio, dependencias bloqueadas y un control de versiones adecuado, el mantenimiento y la colaboración se vuelven más fáciles y rápidos.
Las ideas anteriores son solo algunos pensamientos principales que encontré útiles en el blog de Ploomber. Desde entonces, he tenido una caja de herramientas sobre cómo dividir portátiles en partes modulares y cómo usarlos y convertirlos en una canalización en proyectos más pequeños. Me gusta compartir y enseñar ideas sobre cómo hacer mejores cuadernos y código, y vale la pena considerar estas prácticas de codificación.
Si está interesado en obtener más detalles sobre Ploomber y cómo trabajar de manera más eficiente con computadoras portátiles, asegúrese de consultar la charla de Eduardo Blancas sobre su proyecto en la Conferencia Reforzar la IA este marzo! ¿Quién podría decirnos más que el propio CEO y cofundador de Ploomber?
Referencias
[1] Jeffrey M Perkel (2018). Por qué Jupyter es el cuaderno computacional preferido de los científicos de datos. Naturaleza 563, 145-146.
[2] Eduardo Blancas (2021). Por qué (y cómo) poner portátiles en producción. blog ploomber.io.
[3] Anouk Dutree (2021). Canalizaciones de datos: qué, por qué y cuáles. Blog Hacia la ciencia de datos.