🖥️ Diapositivas — Sesión 27 (vie 4 dic)
Todo lo que va del curso corre en una laptop, y es a propósito: datos pequeños e iteración rápida enseñan más por hora que datos grandes y colas largas. Pero los proyectos reales se salen de esa talla. Esta página es el mapa para cuando eso ocurra.
Cuándo se le quedó chica la laptop¶
Dos síntomas, uno para la memoria y otro para el tiempo:
- Datos más grandes que la RAM. Pandas quiere su tabla en memoria varias veces durante una unión o una agrupación. Una vez que el conjunto de trabajo pasa unas cuantas decenas de gigabytes, o usted transmite por flujo (lecturas por fragmentos, Zarr, carga perezosa con Dask/xarray) o se muda a una máquina con más memoria. Pruebe primero el flujo; es gratis.
- Entrenamientos de más de unas horas. Un modelo que entrena en 10 minutos le permite correr el estudio de 6 corridas de la sección 5.2 a la hora de la comida. Un modelo que entrena en 10 horas hace que cada error cueste un día, y vuelve imposible la búsqueda de hiperparámetros. Una sola GPU decente suele comprar una aceleración de 10 a 50 veces frente a la CPU de la laptop para modelos profundos.
Un tercer síntoma, más suave: usted necesita correr muchos trabajos independientes (procesamiento por estación, barridos de semillas, pliegues de validación cruzada). Eso es vergonzosamente paralelo y es exactamente para lo que existen los clústeres.
Antes de escalar, perfile. Muchos problemas de «necesito un clúster» son en realidad un bucle O(n²), float64 donde bastaría float32, o recargar los datos dentro del bucle. Una hora de perfilado es más barata que cualquier GPU.
La escalera de opciones¶
Suba solo hasta donde necesite.
Servidores departamentales y HPC universitario¶
Suele ser su primera y más barata parada: el estudiantado de la UW tiene acceso a Hyak, y la mayoría de las universidades grandes de América Latina y España operan algo equivalente (en México, el supercómputo de la UNAM en la DGTIC, con Miztli, y el laboratorio ABACUS del Cinvestav; en Chile, los clústeres universitarios y el recurso compartido del NLHPC; en Argentina, los clústeres del CONICET y de las universidades nacionales). Los clústeres corren un planificador, casi siempre SLURM. Usted describe el trabajo; el planificador le encuentra un nodo:
sbatch --gres=gpu:1 --mem=64G --time=08:00:00 --wrap "pixi run python train.py --config sweep3.yaml"Su pila de reproducibilidad se transfiere tal cual: clone el repositorio en el clúster, pixi install (o construya un contenedor Apptainer a partir de su imagen), corra los mismos scripts. Si su flujo de trabajo solo funciona en su laptop, la sección 5.1 todavía no está terminada.
Asignaciones nacionales de tiempo de cómputo¶
Varios países financian supercómputo académico y lo reparten por convocatoria; el tiempo suele ser gratuito para investigación con respaldo institucional, y las colas son la moneda real.
- Estados Unidos: NSF ACCESS otorga tiempo de cómputo gratuito en sistemas nacionales a personas investigadoras de EE. UU. — incluidos nodos con GPU mucho más grandes que el equipo departamental. Las asignaciones «Explore» son pequeñas, rápidas de obtener y dimensionadas para un proyecto de posgrado; su asesor o asesora puede sostener asignaciones mayores.
- México: el LANCAD (Laboratorio Nacional de Cómputo de Alto Desempeño, consorcio de la UNAM, la UAM y el Cinvestav) publica una convocatoria anual de asignación de horas sobre las supercomputadoras Miztli (UNAM), Xiuhcóatl (Cinvestav) y Yoltla (UAM). Va dirigida a personal de investigación adscrito a instituciones mexicanas externas a esas tres; para quien trabaja en instituciones públicas, el costo de las horas lo cubre el propio LANCAD.
- Argentina: el SNCAD (Sistema Nacional de Computación de Alto Desempeño) coordina los centros de cómputo del sistema científico nacional y publica convocatorias de acceso; el CONICET y las universidades nacionales aportan clústeres a esa red.
- Chile: el NLHPC (Laboratorio Nacional de Computación de Alto Rendimiento, con sede en la Universidad de Chile) da cuentas de cómputo a la comunidad académica y estudiantil de las instituciones chilenas: cuentas de iniciación, pequeñas y rápidas de obtener, y cuentas de investigación mayores.
- España: la Red Española de Supercomputación reparte tiempo por convocatoria competitiva en sistemas que incluyen MareNostrum, en el Barcelona Supercomputing Center.
Por debajo de todo esto está la conectividad académica: RedCLARA enlaza las redes nacionales de investigación de América Latina (CUDI en México, REUNA en Chile, InnovaRed en Argentina, entre otras) entre sí y con GÉANT e Internet2, que es lo que hace practicable mover conjuntos de datos grandes entre un archivo y el clúster donde correrá el análisis.
Si su proyecto es investigación con financiamiento, pida una asignación antes de pagarle a un proveedor de nube.
Nube comercial (AWS, GCP, Azure)¶
La nube vende dos cosas que a usted pueden interesarle: cómputo elástico (cien máquinas por una hora) y almacenamiento de objetos junto a conjuntos de datos públicos. Las piezas que conviene conocer:
- Almacenamiento de objetos (S3 / GCS / Azure Blob): espacios de nombres planos de objetos direccionados por URL, prácticamente infinitos, baratos de almacenar, tarifados por acceso y por salida de datos. La mayoría de los archivos geocientíficos modernos (Sentinel, ERA5, datos sísmicos en AWS Open Data) viven aquí.
- Instancias GPU spot / interrumpibles: el mismo equipo con un descuento de 60 a 90 %, con la salvedad de que el proveedor puede reclamarlo avisando con minutos. Sirven para entrenar si usted crea puntos de control (checkpoints) con regularidad — cosa que debería hacer de todos modos.
- Disciplina de costos: estime antes de correr (cada proveedor tiene una calculadora de precios: precio de la instancia × horas × cantidad, más almacenamiento y salida de datos); ponga una alarma de facturación el primer día, antes de la primera instancia, no después de la primera sorpresa; apague las cosas — una instancia con GPU ociosa factura exactamente igual que una ocupada; y prefiera patrones de acceso sin costo de salida (compute en la misma región donde están los datos).
Quien corre una cuenta de nube sin tope aprende sobre disciplina de costos exactamente una vez. Ponga la alarma primero.
Escala de docencia: Colab y Codespaces¶
Google Colab da una GPU gratuita (limitada) conectada a un cuaderno, y GitHub Codespaces da una máquina VS Code desechable enlazada a su repositorio. Ambos sirven para el trabajo del curso, demostraciones y probar una idea antes de solicitar recursos de verdad. Ninguno es una plataforma de investigación: las sesiones son efímeras, el equipo es impredecible y los trabajos largos se cancelan. Trátelos como papel borrador.
Entornos restringidos¶
Todo lo anterior supone internet de salida abierto: pixi install alcanzando conda-forge y PyPI, CI en github.com, rastreadores de experimentos alojados, lecturas anónimas de buckets públicos. Los laboratorios nacionales, los enclaves seguros y muchas redes gubernamentales e industriales bloquean parte o todo eso. El flujo de trabajo sobrevive; lo que cambia es el transporte. Cuatro sustituciones cubren la mayoría de los casos.
Espejos de paquetes e instalaciones sin conexión. El flujo de trabajo con pixi del capítulo 1.3 y el entorno bloqueado de 5.1 se transfieren sin cambios — lo único que se mueve son las URL de los canales. La mayoría de los sitios restringidos opera un espejo interno de conda-forge y PyPI (Artifactory, Nexus o un simple espejo de archivos); apunte pixi hacia él con una tabla [mirrors] en su configuración, y el mismo pixi.toml + pixi.lock resuelven al mismo entorno. Para un sistema completamente aislado, resuelva y descargue en una máquina conectada, mueva la caché de paquetes (o una imagen de contenedor, abajo) por la puerta de transferencia aprobada, e instale sin conexión. Pregunte en su instalación cuál es la vía autorizada antes de inventar una.
Transferencia de contenedores. Construya donde hay internet, ejecute donde no lo hay. Construya la imagen Apptainer (o haga docker save a un tarball) en una máquina abierta, mueva el único archivo .sif por la puerta de transferencia, y ejecútelo sin privilegios en el clúster — ningún nodo de cómputo necesita alcanzar conda-forge. En HPC restringido esta es la vía principal para el entorno, no una nota al pie: un archivo carga toda la pila fijada de 5.1.
CI autoalojada. El patrón de verificaciones ejecutables — entorno fijado, reejecutar todo en cada cambio — es lo que sostiene la garantía de 5.1 y el flujo de trabajo copiable de 5.3; GitHub Actions es apenas uno de sus posibles anfitriones. GitLab CI, Jenkins o un ejecutor autoalojado dentro del enclave corren el mismo trabajo con otro dialecto de YAML. Si github.com es inalcanzable, una instancia interna de GitLab con un ejecutor en una estación de trabajo del laboratorio preserva la propiedad que importa: lo que cuenta es lo que la CI logre ejecutar.
Rastreadores de experimentos alojados frente a autoalojados. Weights & Biases, tal como se usa en 5.2, es un servicio alojado: cada parámetro, métrica y artefacto registrado sale de su red. Antes de adoptarlo, someta la decisión a las reglas de clasificación de datos de su institución — los metadatos de una corrida pueden estar restringidos por el patrocinador o sujetos a control de exportaciones aunque el código no lo esté. MLflow autoalojado guarda los mismos registros dentro del enclave, y el rastreador de 30 líneas en JSON que se construye en 5.2 cumple en cualquier lado, porque solo escribe archivos locales. La misma revisión aplica al acceso a los datos: las lecturas anónimas de buckets públicos de la siguiente sección son llamadas de salida que su red puede bloquear, y la alternativa es un espejo institucional o un subconjunto preparado de antemano a través de la puerta de transferencia.
Acceso a datos optimizado para la nube: leer en el lugar¶
El flujo de trabajo antiguo — descargar el archivo completo y luego analizar — se rompe cuando el archivo pesa 100 TB. Los formatos optimizados para la nube lo arreglan abaratando las lecturas parciales sobre HTTP: Zarr para arreglos N-dimensionales por fragmentos, Cloud-Optimized GeoTIFF (COG) para rásteres, más Parquet para tablas. Usted abre el conjunto de datos remoto de forma perezosa y trae solo los fragmentos que su cómputo toca.
El cuaderno 5.5 ejecuta este patrón de verdad, contra el almacén Zarr de 30 TiB de temperatura superficial del mar MUR en los datos abiertos de AWS: apertura perezosa en ~12 s a partir de una lectura de metadatos de 10 KiB, un subconjunto regional de diez días que mueve 60 MiB para producir una respuesta de 9 MiB — una parte en ~525 000 del almacén — y una media mensual por flujo que nunca retiene más de unos pocos fragmentos en memoria. El patrón que hay que interiorizar: la consulta se mueve hacia los datos, y de vuelta solo se mueven resultados del tamaño de su respuesta. Combinado con cómputo en la misma región de la nube, esto reemplaza descargas de terabytes por lecturas de megabytes. fsspec ofrece el mismo truco para casi cualquier sistema de almacenamiento, y pooch (sección 5.3) sigue siendo la herramienta adecuada para los archivos pequeños y versionados de los que su repositorio realmente depende.
Lecturas adicionales¶
- Libro SCOPED HPS, capítulo de nube: https://
seisscoped .org /HPS -book /chapters /cloud /Introduction .html — cómputo en la nube para sismología, con práctica. - Recursos de nube de UW cloudmaven / eScience: https://
cloudmaven .github .io /documentation / — incorporación a la nube con enfoque universitario. - Proyecto Pangeo (https://pangeo.io/) — la comunidad de referencia para el análisis geocientífico nativo de nube con xarray, Dask y Zarr.