En el episodio de hoy de Un podcast ninja sobre Big Data hablamos de los cuadernos de Jupyter 🪐
¿Cómo funcionan los Jupyter Notebooks? ¿Para qué sirven y para qué no sirven?
El proyecto Jupyter, es un proyecto de código abierto que permite ejecutar código en el navegador web.
Nació como spin off de IPython, un proyecto que permitía ejecutar código Python de manera interactiva.
Sin embargo, el proyecto Jupyter soportaba desde el principio varios lenguajes de programación.
De ahí el nombre de Jupyter.
Hoy en día ya soportan muchos más lenguajes de programación.
La base del proyecto Jupyter son los cuadernos (Jupyter notebooks).
Los Jupyter Notebooks, son ficheros con código que se ejecuta en un navegador web, lo que permite que sea mucho más fácil de compartir.
Al tener un formato cuaderno, en el que se van mezclando celdas con código y otras celdas con explicaciones de texto o visualizaciones facilita que alguien pueda ver este cuaderno y entender el proceso que se ha seguido para llegar a los resultados.
Tiene un punto de storytelling, que en análisis de datos es una cualidad muy importante.
Saber transmitir a alguien ajeno al proyecto de una manera sencilla lo que hemos encontrado en esos datos es fundamental.
Y eso en un cuaderno de Jupyter se consigue bastante bien a través de visualizaciones, resultados y explicaciones de texto, que puede estar formateado mediante Markdown.
Básicamente, el cuaderno de Jupyter es una experiencia visual de lo que hace nuestro código como si dijéramos. Es como si pudiéramos dividir un código muy extenso en cachitos más pequeños que podemos ejecutar de manera independiente.
Para empezar a utilizar los cuadernos de Jupyter en nuestro ordenador una opción muy generalizada es instalar Anaconda o Miniconda, que son distribuciones de software preparadas con todo lo que necesitas para hacer cosas de ciencia de datos.
Cuadernos de Jupyter incluidos.
Anaconda es la versión que viene con todo, más de 150 librerías de ciencia de datos y Miniconda es la versión que viene con lo esencial.
Las librerías no son más que paquetes de código que sirven para un propósito específico y que ha escrito alguien para que no tengamos que empezar siempre desde cero en nuestros proyectos de ciencia de datos.
Por ejemplo, pandas, numpy, pytorch, seaborn… Todas son librerías escritas en python que se utilizan en ciencia de datos y que podemos (debemos) reutilizar en nuestros proyectos.
Ambas distribuciones vienen con Conda que es un gestor de librerías para poder instalar, quitar o actualizarlas según necesitemos.
Eleguir una u otra distribución dependerá del espacio que tengamos en el ordenador.
Si tenéis mucho espacio libre podéis instalar Anaconda y si no, podéis ser más minimalistas, usar miniconda e ir instalando más librerías según las vayáis necesitando.
En cualquiera de los dos casos ya dispondréis de cuadernos de Jupyter para empezar con vuestros proyectos.
Pero, tened en cuenta que estos proyectos necesitarán de los recursos de vuestro ordenador (CPU, GPU, memoria RAM…)
Así que volvemos un poco al tema de que en el momento que queráis entrenar un modelo de Machine Learning un poco grande o manejar datasets más serios os encontraréis con algún que otro problema.
Para estos casos es mejor usar una GPU moderna de NVIDIA en lugar del CPU de nuestro ordenador. Especialmente para el procesamiento de imágenes con redes convolucionales, en estos casos usar una GPU puede aumentar la velocidad hasta 5 o 10 veces comparado con una CPU.
Así que llegados a este punto hay tres opciones para utilizar GPUs:
Colab es la forma más fácil de empezar ya que no requiere comprar hardware ni instalar software; solo necesitais abrir una pestaña en vuestro navegador y comenzar a programar.
Sin embargo, la versión gratis de Colab solo es adecuada para cargas de trabajo pequeñas. Si vais aumentando el tamaño de vuestros modelos de deep learning o de vuestros datasets necesitaréis aún más capacidad y no quedará otra que usar la primera o segunda opción, que os contaba antes.
También podemos conseguir horas gratis de uso de GPUs en Kaggle, que tiene implementados sus propios Notebooks basados en cuadernos de Jupyter.
Tanto en Kaggle como en Google Colab podemos acceder a 12 horas de tiempo de ejecución en CPUs o GPUs y 9 horas de tiempo de ejecución para sesiones con TPUs.
En el caso de Google Colab existe una opción de pago, Colab Pro+, que permite la ejecución continua de código durante un máximo de 24 horas.
Eso sí, el acceso a estos recursos no está garantizado así que es posible que si intentas entrenar un modelo en una GPU un día que hay mucha demanda, no puedas conseguir acceder a una.
Sin embargo, no todo es de color de rosa en los cuadernos de Jupyter. También tienen sus inconvenientes que hay que tener en cuenta.
En su versión original no permiten colaboración entre equipos en tiempo real ni comentarios de otros miembros del equipo.
Además, hay que ser muy organizado a la hora de escribir y ejecutar el código puesto que al permitir un enfoque muy libre, podemos terminar con un código desorganizado y difícil de seguir, especialmente para otros usuarios pero puede que incluso para nosotros mismos.
Este enfoque tan libre hace que sean muy buenos para experimentar con posibles soluciones pero que puedan llegar a ser contraproducentes para implementar buenas prácticas de desarrollo de software, que al final es lo que necesitamos cuando queremos llevar nuestro proyecto al mundo real.
Y entonces, acabamos reescribiendo todo el notebook para producción, lo que resulta en trabajo duplicado.
Otro inconveniente es que no facilitan el seguimiento de la evolución de los experimentos. No se versionan fácilmente y a veces surgen problemas al fusionar cambios, lo que puede llevar a que cada miembro de un equipo de datos trabaje de manera aislada.
Además hay que tener en cuenta que pueden ser muy dependientes del entorno específico en el que se crearon (versiones de las librerías, etc...). Esto puede llevar a problemas si se intenta ejecutar el mismo notebook en un entorno diferente.
Los cuadernos de Jupyter son una herramienta revolucionaria en el campo de la ciencia de datos.
Son interactivos y versátiles a la hora de hacer experimentos con nuestros datos y de ser capaces de contar la historia de nuestro experimento de manera que otros puedan entenderla.
Por supuesto que no son perfectos, ni sirven para todo, especialmente, como hemos visto, en lo que respecta a la colaboración en tiempo real y a la gestión del código para producción, pero su capacidad para integrar código, visualizaciones y texto los convierte en una opción indispensable para muchos ninjas de datos.
Sin hablar de la facilidad para seguir tutoriales que da un cuaderno de Jupyter al tener las explicaciones del código integradas.
Al final, al igual que con cualquier otra cosa, la clave está en saber cuándo y cómo utilizarlos de la mejor manera posible para complementar y enriquecer nuestro flujo de trabajo como ninjas de los datos.
Espero que el episodio de hoy os sea de provecho y que aprendáis algo de valor.
Si es así, no olvidéis dejar una valoración de 5 estrellas del podcast en Apple podcasts, en Spotify, en Ivoox 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.