Phase 00 - Lesson 05
Jupyter Notebooks
Los notebooks son el banco de laboratorio de la ingeniería de IA. Aquí prototipas y luego llevas lo que funciona a producción.
Tipo: Build Lenguajes: Python Requisitos previos: Fase 0, Lección 01 Tiempo: ~30 minutos
Objetivos de Aprendizaje
- Instalar y ejecutar JupyterLab, Jupyter Notebook o VS Code con la extensión de Jupyter
- Usar comandos mágicos (
%timeit,%%time,%matplotlib inline) para medir el rendimiento y visualizar inline - Distinguir cuándo usar notebooks o scripts y aplicar el flujo "explora en notebooks, entrega en scripts"
- Identificar y evitar trampas comunes de los notebooks: ejecución fuera de orden, estado oculto y fugas de memoria
El Problema
Todo artículo de IA, tutorial y competencia de Kaggle usa Jupyter notebooks. Te permiten ejecutar código por partes, ver salidas inline, mezclar código con explicaciones e iterar rápido. Si intentas aprender IA sin notebooks, es como hacer la tarea de matemáticas sin papel borrador.
Pero los notebooks tienen trampas reales. La gente los usa para todo, incluso para cosas en las que son pésimos. Saber cuándo usar un notebook y cuándo usar un script te ahorrará pesadillas de depuración más adelante.
El Concepto
Un notebook es una lista de celdas. Cada celda es código o texto.
graph TD
A["**Markdown Cell**\n# My Experiment\nTesting learning rate 0.01"] --> B["**Code Cell** ► Run\nmodel.fit(X, y, lr=0.01)\n---\nOutput: loss = 0.342"]
B --> C["**Code Cell** ► Run\nplt.plot(losses)\n---\nOutput: inline plot"]
El kernel es un proceso de Python que se ejecuta en segundo plano. Cuando ejecutas una celda, envía el código al kernel, que lo ejecuta y devuelve el resultado. Todas las celdas comparten el mismo kernel, así que las variables persisten entre celdas.
graph LR
A[Notebook UI] <--> B[Kernel\nPython process]
B --> C[Keeps variables in memory]
B --> D[Runs cells in whatever order you click]
B --> E[Dies when you restart it]
Esa parte de "en el orden que hagas clic" es a la vez el superpoder y el tiro en el pie.
Build It
Paso 1: Elige tu interfaz
Tres opciones, un formato:
| Interfaz | Instalación | Mejor para |
|---|---|---|
| JupyterLab | pip install jupyterlab y luego jupyter lab |
Experiencia completa de IDE, múltiples pestañas, explorador de archivos, terminal |
| Jupyter Notebook | pip install notebook y luego jupyter notebook |
Simple, ligero, un notebook a la vez |
| VS Code | Instalar la extensión "Jupyter" | Ya en tu editor, integración con git, depuración |
Las tres leen y escriben el mismo archivo .ipynb. Elige la que prefieras. JupyterLab es la más común en el trabajo con IA.
pip install jupyterlab
jupyter lab
Paso 2: Atajos de teclado que importan
Operas en dos modos. Presiona Escape para el modo de comando (barra azul a la izquierda), Enter para el modo de edición (barra verde).
Modo de comando (el más usado):
| Tecla | Acción |
|---|---|
Shift+Enter |
Ejecuta la celda, pasa a la siguiente |
A |
Inserta celda arriba |
B |
Inserta celda abajo |
DD |
Elimina la celda |
M |
Convierte a markdown |
Y |
Convierte a código |
Z |
Deshace la operación de la celda |
Ctrl+Shift+H |
Muestra todos los atajos |
Modo de edición:
| Tecla | Acción |
|---|---|
Tab |
Autocompletar |
Shift+Tab |
Muestra la firma de la función |
Ctrl+/ |
Alterna comentario |
Shift+Enter es el que usarás mil veces al día. Apréndelo primero.
Paso 3: Tipos de celda
Las celdas de código ejecutan Python y muestran la salida:
import numpy as np
data = np.random.randn(1000)
data.mean(), data.std()
Salida: (0.0032, 0.9987)
Las celdas de markdown renderizan texto con formato. Úsalas para documentar lo que haces y por qué. Soportan encabezados, negrita, cursiva, matemática LaTeX ($E = mc^2$), tablas e imágenes.
Paso 4: Comandos mágicos
Estos no son Python. Son comandos específicos de Jupyter que comienzan con % (magia de línea) o %% (magia de celda).
Cronometra tu código:
%timeit np.random.randn(10000)
Salida: 45.2 us +/- 1.3 us per loop
%%time
model.fit(X_train, y_train, epochs=10)
Salida: Wall time: 2.34 s
%timeit ejecuta el código muchas veces y promedia. %%time lo ejecuta una vez. Usa %timeit para microbenchmarks y %%time para ejecuciones de entrenamiento.
Habilita los plots inline:
%matplotlib inline
Ahora cada plt.plot() o plt.show() se renderiza directamente en el notebook.
Instala paquetes sin salir del notebook:
!pip install scikit-learn
El prefijo ! ejecuta cualquier comando de shell.
Revisa las variables de entorno:
%env CUDA_VISIBLE_DEVICES
Paso 5: Muestra salida enriquecida inline
Los notebooks muestran automáticamente la última expresión de una celda. Pero puedes controlarlo:
import pandas as pd
df = pd.DataFrame({
"model": ["Linear", "Random Forest", "Neural Net"],
"accuracy": [0.72, 0.89, 0.94],
"training_time": [0.1, 2.3, 45.6]
})
df
Esto renderiza una tabla HTML con formato, no un volcado de texto. Lo mismo con los plots:
import matplotlib.pyplot as plt
plt.figure(figsize=(8, 4))
plt.plot([1, 2, 3, 4], [1, 4, 2, 3])
plt.title("Inline Plot")
plt.show()
El plot aparece justo debajo de la celda. Por esto los notebooks dominan el trabajo con IA. Ves los datos, el plot y el código juntos.
Para imágenes:
from IPython.display import Image, display
display(Image(filename="architecture.png"))
Paso 6: Google Colab
Colab es un Jupyter notebook gratuito en la nube. Te da una GPU, bibliotecas preinstaladas e integración con Google Drive. Sin configuración necesaria.
- Ve a colab.research.google.com
- Sube cualquier archivo
.ipynbde este curso - Runtime > Change runtime type > T4 GPU (gratis)
Diferencias de Colab respecto a Jupyter local:
- Los archivos no persisten entre sesiones (guarda en Drive o descarga)
- Preinstalados: numpy, pandas, matplotlib, torch, tensorflow, sklearn
from google.colab import filespara subir/descargar archivosfrom google.colab import drive; drive.mount('/content/drive')para almacenamiento persistente- Las sesiones expiran tras 90 minutos de inactividad (nivel gratuito)
Use It
Notebooks vs Scripts: cuándo usar cada uno
| Usa notebooks para | Usa scripts para |
|---|---|
| Explorar un dataset | Pipelines de entrenamiento |
| Prototipar un modelo | Utilidades reutilizables |
| Visualizar resultados | Cualquier cosa con if __name__ |
| Explicar tu trabajo | Código que se ejecuta de forma programada |
| Experimentos rápidos | Código de producción |
| Ejercicios del curso | Paquetes y bibliotecas |
La regla: explora en notebooks, entrega en scripts.
Un flujo común en IA:
- Explora los datos en un notebook
- Prototipa tu modelo en el notebook
- Una vez que funcione, mueve el código a archivos
.py - Importa esos archivos
.pyde vuelta al notebook para más experimentos
Trampas comunes
Ejecución fuera de orden. Ejecutas la celda 5, luego la 2, luego la 7. El notebook funciona en tu máquina, pero falla cuando alguien lo ejecuta de arriba a abajo. Solución: Kernel > Restart & Run All antes de compartir.
Estado oculto. Eliminas una celda, pero la variable que creó sigue en memoria. El notebook se ve limpio, pero depende de una celda fantasma. Solución: reinicia el kernel con regularidad.
Fugas de memoria. Cargar un dataset de 4GB, entrenar un modelo, cargar otro dataset. Nada se libera. Solución: del variable_name y gc.collect(), o reinicia el kernel.
Ship It
Esta lección produce:
outputs/prompt-notebook-helper.mdpara depurar problemas de notebooks
Ejercicios
- Abre JupyterLab, crea un notebook y usa
%timeitpara comparar list comprehension vs numpy al crear un array de 100.000 números aleatorios - Crea un notebook con celdas de markdown y de código que cargue un CSV, muestre un dataframe y dibuje un gráfico. Luego ejecuta Kernel > Restart & Run All para verificar que funcione de arriba a abajo
- Toma el código de
code/notebook_tips.py, pégalo en un notebook de Colab y ejecútalo con una GPU gratuita
Términos Clave
| Término | Lo que dice la gente | Lo que realmente significa |
|---|---|---|
| Kernel | "La cosa que ejecuta mi código" | Un proceso de Python separado que ejecuta celdas y mantiene las variables en memoria |
| Celda | "Un bloque de código" | Una unidad ejecutable de forma independiente en un notebook, ya sea código o markdown |
| Comando mágico | "Trucos de Jupyter" | Comandos especiales con prefijo % o %% que controlan el entorno del notebook |
.ipynb |
"Archivo de notebook" | Un archivo JSON que contiene celdas, salidas y metadatos. Significa IPython Notebook |
Lectura Adicional
- JupyterLab Docs para el conjunto completo de funciones
- Google Colab FAQ para límites y funciones específicas de Colab
- 28 Jupyter Notebook Tips para atajos de usuario avanzado