No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Integración de Git en Jupyter Notebooks con NB Dime

9/17
Recursos

¿Cómo integrar Git con Jupyter Notebooks?

Incorporar control de versiones en archivos de Jupyter Notebooks puede ser bastante desafiante debido a que están basados en JSON. Esto complica la tarea de visualizar cambios y comparaciones, ya que Git no se adapta bien a archivos de este tipo. Sin embargo, no estás solo en este reto: existen herramientas diseñadas para facilitar la integración de Git con estos notebooks, permitiéndote visualizar los cambios a nivel de celdas y mejorando la colaboración.

¿Qué problemas presenta el control de versiones en GitHub con Jupyter Notebooks?

Cuando trabajas con GitHub y Jupyter Notebooks, podrías notar que los cambios realizados en los notebooks no siempre son tan ilegibles o fáciles de interpretar como te gustaría. Esto se debe a que las modificaciones no se muestran de manera explícita y suelen incluir cambios innecesarios dentro de la estructura del archivo JSON del notebook.

¿Qué es NB Dime y cómo puede ayudar?

NB Dime es una herramienta potentemente útil para manejar las diferencias y cambios en notebooks, enfocándose en las modificaciones de las celdas. Esta herramienta puede instalarse mediante conda y configurarse con Git para una integración eficiente en tu flujo de trabajo.

conda install nbdime
nbdime config-git

Con NB Dime, no solo puedes comparar notebooks celda por celda, sino también fusionar cambios conflictivos entre diferentes versiones del mismo archivo, asegurando que el resultado final combine lo mejor de ambas fuentes.

¿Cómo comparar y fusionar cambios en notebooks con NB Dime?

  1. Comparar notebooks:

    NB Dime permite ver claras las diferencias entre diferentes versiones de un notebook, especificando qué celdas han cambiado.

    nbdiff <file1.ipynb> <file2.ipynb>
    

    Este comando revelará las diferencias específicas entre los notebooks especificados.

  2. Fusionar cambios:

    En caso de conflictos, NB Dime permite fusionar notebooks, requiriendo tres archivos: un archivo base y dos archivos modificados. Esto facilita la colaboración simultánea.

    nbmerge <base_file.ipynb> <modified_file1.ipynb> <modified_file2.ipynb> --output <output_file.ipynb>
    

    Se recomienda crear siempre un archivo de salida para preservar los cambios y mantener su trabajo organizado.

¿Cuáles son las mejores prácticas para usar Git en Jupyter Notebooks?

Implementar Git en tus notebooks de manera efectiva requiere algunas recomendaciones clave:

  • Utilizar .gitignore: Filtrar archivos innecesarios como checkpoints que generan los notebooks para evitar que interfieran en tu control de versiones.

  • División de tareas: Cuando trabajes con notebooks extensos, divídelos en diferentes archivos para facilitar su manejo y documentación.

  • Documentación de commits: Cada cambio debe estar bien documentado para que tanto tú como tus colaboradores puedan entender fácilmente qué se ha almacenado en cada commit.

Tomar estas medidas no solo mejorará tu flujo de trabajo, sino que también facilitará la colaboración con otros profesionales en proyectos de ciencia de datos y Machine Learning.

Siguiendo estas recomendaciones, puedes estar seguro de que utilizarás Git de manera efectiva en todos tus futuros proyectos de ciencia de datos. ¡Es hora de llevar tu control de versiones al siguiente nivel!

Aportes 6

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Nosotros que nos estamos formando como científicos de datos, debemos cuidar al máximo el carácter científico de nuestro quehacer con datos. El control de versiones, además de ser muy útil en el trabajo individual y de equipo, hacer parte de una tendencia contemporánea que consiste en documentar meticulosamente cada cambio en el proceso investigativo, tendencia que tiene un nombre específico: **versionado de investigación** o **control de versiones científicas** (*scientific version control*). Este concepto, aunque en esencia forma parte de la metodología científica, se ha popularizado como una práctica formal en los últimos años con el auge de la **ciencia reproducible** (*reproducible science*) y de un movimiento más amplio de **ciencia abierta** (open science), que busca hacer accesibles todos los aspectos del proceso científico, desde los datos hasta los métodos y resultados.
📝 Les dejo mis apuntes de la clase Los Jupyter notebooks son basados en JSON, por lo cuál los cambios que hagamos en una notebook resultan un tanto difíciles de leer a partir de un commit de git, ya que este nos muestra los cambios realizados a un archivo línea a línea de tipo texto; cuando trabajamos con Jupyter notebooks lo que queremos ver son los cambios a nivel de código. La herramienta `nbdime` nos permite comparar dos archivos `.ipynb` a nivel de celdas, esto quiere decir que solo nos mostrará los cambios solo en las celdas modificadas. Otra funcionalidad que `nbdime` tiene es la de fusionar (merge) dos notebooks. **Manejo de cambios en notebooks con** `nbdime` ```txt # Activamos el entorno conda activate [NOMBRE_ENTORNO] # instalamos la herrmaienta conda install nbdime # Si el proyecto esta en otro directorio nos mevemos a el cd [RUTA_DIRECTORIO] ``` 📌 Si el proyecto no esta inicializado con git, debemos inicializarlo. ```js git init ``` Configuramos el proyecto para utilizar `nbdime`: ```txt # Condifugramos el repositorio nbdime config-git --enable # Comparamos las diferencias entre dos archivos nbdiff [ARCHIVO_1].ipynb [ARCHIVO_2].ipynb # Creamos una copia base de uno de los archivos a fusionar cp [ARCHIVO_1].ipynb base.ipynb # Fusionamos los notebooks en base. bnmerge base.ipynb [ARCHIVO_1].ipynb [ARCHIVO_2].ipynb # Generamos un archivo con el resultado del merge bnmerge base.ipynb [ARCHIVO_1].ipynb [ARCHIVO_2].ipynb --out [NOMBRE_ARCHIVO].ipynb ``` **Buenas prácticas** en el uso de git dentro de Jupyter Notebooks * **Usar** `.gitignore`: Para evitar añadir al repositorio archivos que van generando los notebooks. * **Dividir notebooks grandes**: Dividir notebooks extensos en notebooks más pequeños, cada uno con un objetivo especio. * **Documentar commits**: Llevar un registro claro de cada cambio en el código y notebooks.
El comando `nbdime` se utiliza para manejar diferencias y conflictos en archivos de Jupyter Notebooks. A diferencia de Git, que compara archivos de texto a nivel de línea, `nbdime` permite visualizar cambios a nivel de celdas, lo que facilita la colaboración entre desarrolladores. Ayuda a integrar Jupyter Notebooks con Git de manera más efectiva y a resolver conflictos que puedan surgir cuando múltiples personas editan el mismo notebook.
El comando correcto para fusionar archivos usando `nbmerge` debe especificar el archivo de salida. En tu comentario, señalas que debería ser `nbmerge base.ipynb ejemplo2.ipynb -o base.ipynb`. Tienes razón en que la opción `-o` indica el archivo donde se guardará el resultado, el cual puede sobreescribir el original si se desea. Es fundamental tener claro este detalle para evitar confusiones y asegurar una correcta gestión de versiones en Jupyter Notebooks.
tenia la duda y preguntandole a la ia me da a enternder que no es necesario inicializar un repo the git para poder hacer uso de las funcionalidades de nbdime.
¿Qué puedo hacer si estuve trabajando en el mismo archivo de jupyter notebook que otro compañero y hay conflictos al hacer pull? ¿Cómo se resuelven los conflictos en este caso con nbdime de forma visual? En mi caso, use el siguiente comando que abre una interfaz web gráfica bastante amigable que permite resolver los conflictos. `nbdime mergetool` Es importante que el comando sea ejecutado en la terminal de colab con el entorno activo. Les comparto una captura de la interfaz. ![](https://imgur.com/a/n1R3OpX)