¿Por Qué la Inferencia Satelital es Difícil?

La mayoría de los modelos de ML ingieren unos megabytes y devuelven un resultado en milisegundos. La inferencia de observación de la Tierra (EO) opera a una escala completamente diferente: un solo job de fine-tuning de un modelo de fundación puede mover terabytes de datos y correr por horas. Las entradas abarcan múltiples bandas espectrales, tipos de sensores y pasos temporales en grandes áreas geográficas. Vienen de proveedores diferentes con proyecciones y resoluciones variadas, y frecuentemente incluyen observaciones ausentes u oscurecidas por nubes. La salida es ella misma un mapa—cada predicción debe permanecer precisamente alineada con la misma cuadrícula de coordenadas que sus vecinas.

Incluso la adquisición de datos puede dominar el tiempo de ejecución. Los jobs de predicción a menudo pasan más tiempo descargando y preparando imágenes que corriendo el modelo en sí. Los pipelines eficientes deben manejar I/O de alto volumen mientras proporcionan compute para reproyección y remuestreo. Este es el desafío central que la Plataforma OlmoEarth fue construida para resolver.

Insight clave: Trata la ingeniería de datos como ciudadana de primera clase, no como una ocurrencia tardía. El modelo es solo una parte del pipeline.

Distributed computing cluster with CPUs and GPUs processing satellite imagery for OlmoEarth platform Coding Session Visual

La Arquitectura de Tres Etapas: Hardware Correcto para la Tarea Correcta

Como la adquisición y preparación de datos a menudo dominan el tiempo de ejecución, asignar ese trabajo a las GPUs desperdiciaría el hardware más caro. La plataforma divide cada job en tres etapas, cada una emparejada con un perfil de hardware distinto:

EtapaHardwareResponsabilidad
Adquisición y preprocesamiento de datosCPU, alto I/OObtener, reproyectar, alinear, normalizar imágenes; escribir en formato de carga rápida
InferenciaGPUEjecutar forward pass del modelo; escribir salidas mínimamente procesadas al storage
PostprocesamientoCPUUnir salidas por ventana; aplicar máscaras/reescalado; exportar a Zarr, GeoTIFF, GeoJSON

La plataforma distribuye estas etapas a través de muchas máquinas mientras mantiene las GPUs totalmente utilizadas. Data loaders multiproceso alimentan continuamente cada GPU, y las salidas completadas fluyen directamente al blob storage.

Una Requisición, Cientos de Workers, Miles de Procesos

OlmoEarth Run (la capa de ejecución) divide la región geográfica en particiones dimensionadas para instancias de compute individuales, luego subdivide esas particiones en ventanas más pequeñas procesadas independientemente. Particiones adyacentes se superponen ligeramente; la superposición se reconcilia durante el ensamblaje para que ninguna costura aparezca en el raster final.

Un área del tamaño de un estado puede convertirse en ~100 particiones; una ejecución a escala continental puede convertirse en miles. Como las particiones son independientes, la misma etapa puede correr en miles de instancias simultáneamente.

Números del mundo real: Un mapa de riesgo de incendio cubriendo toda América del Norte usó ~19,600 CPUs y 994 GPUs en paralelo, con throughput de red excediendo 168 GB/s. Esto redujo un estimado de 4,737 horas de compute serial a cerca de 30.5 horas de tiempo de pared—un speedup de 155×.

El fan-out no es ilimitado. Más workers presionan las cuotas de cloud, así que el paralelismo es un botón por ejecución. Otros trade-offs ajustables incluyen resolución de salida (volumen de datos vs. detalle), tamaño del modelo (tiempo de GPU vs. precisión) y caché de imágenes crudas (storage vs. velocidad en ejecuciones repetidas).

# Ejemplo: lógica conceptual de particionamiento (no es código real de OlmoEarth)
def partition_region(bbox, max_workers):
    """Divide una bounding box en particiones de área aproximadamente igual."""
    # Simplificado: asume región cuadrada para ilustración
    side = int(max_workers ** 0.5)
    lat_step = (bbox['max_lat'] - bbox['min_lat']) / side
    lon_step = (bbox['max_lon'] - bbox['min_lon']) / side
    partitions = []
    for i in range(side):
        for j in range(side):
            partitions.append({
                'min_lat': bbox['min_lat'] + i * lat_step,
                'max_lat': bbox['min_lat'] + (i + 1) * lat_step,
                'min_lon': bbox['min_lon'] + j * lon_step,
                'max_lon': bbox['min_lon'] + (j + 1) * lon_step,
            })
    return partitions

Tip pro: Al construir pipelines geoespaciales a gran escala, siempre diseña para idempotencia y reentrancia. Las fallas son la norma, no la excepción.

Cloud storage and STAC catalog integration for large-scale geospatial inference pipeline IT Technology Image

Encontrando y Obteniendo los Pixels Correctos (y Manejando Fallas)

Dada una región e intervalo de tiempo, la plataforma debe determinar qué escenas satelitales usar. Eso significa identificar qué fue capturado, dónde y cuándo, entre proveedores con catálogos, formatos y retrasos de publicación diferentes. Los criterios de selección dependen de la fuente: para imágenes ópticas como Sentinel-2, se prefieren escenas con menos nubes; para radar de apertura sintética, los canales de polarización pueden importar más.

La plataforma depende de catálogos STAC públicos y estándares abiertos donde sea posible. Pero un job grande puede generar miles de consultas de metadatos a la vez—mucho más de lo que servicios externos como las APIs STAC de la ESA o del Microsoft Planetary Computer fueron diseñados para manejar concurrentemente. Para evitar sobrecargar esos servicios, OlmoEarth mantiene su propio índice de metadatos, actualizado conforme se publican nuevas imágenes. Para datasets hospedados en AWS Open Data, notificaciones SNS disparan actualizaciones; de lo contrario, polling ocurre cada pocos minutos. Cada entrada del índice almacena metadatos de la escena y punteros a todos los lugares donde los pixels están disponibles. En tiempo de ejecución, la plataforma selecciona la mejor fuente y realiza lecturas en ventana contra formatos optimizados para cloud (COG, Zarr), recuperando solo los bytes necesarios para una partición dada.

Manejando Fallas a Escala

La plataforma está diseñada para recuperarse automáticamente. Cada tarea provisiona dinámicamente una VM corriendo un contenedor Docker que recupera parámetros, ejecuta el trabajo, devuelve resultados y se apaga. Como cada tarea es reentrante e idempotente, las fallas intermitentes se manejan de forma segura al reejecutar. El sistema distingue errores reintentables de fatales, hace fallback a proveedores alternativos cuando está disponible, y usa un proceso de monitoreo separado para detectar y reiniciar runners atascados.

Mejores prácticas para publicar datos EO (derivadas de proveedores que hicieron este workflow más fácil):

  • Notificaciones basadas en cola cuando nuevas imágenes están disponibles
  • Almacenamiento en grandes plataformas cloud sin límites de tasa bespoke
  • Formatos optimizados para cloud que soportan lecturas ranged

Cuidado crítico: Esta arquitectura asume infraestructura cloud confiable y puede no ser viable para organizaciones con presupuestos limitados o restricciones on-premise. La plataforma se opera actualmente en Google Cloud, aunque el diseño soporta multi-cloud y despliegues on-prem.

Wildfire risk map visualization generated from satellite data using OlmoEarth models Algorithm Concept Visual

Conclusión & Próximos Pasos

La Plataforma OlmoEarth de AI2 demuestra que operacionalizar modelos de fundación geoespaciales requiere tanto rigor de ingeniería como desarrollo de modelo. Las lecciones clave:

  • Separa preocupaciones por perfil de hardware (CPU para I/O, GPU para inferencia) para maximizar utilización.
  • Particiona agresivamente y diseña cada tarea para ser idempotente y reentrante.
  • Mantén tu propio índice de metadatos para evitar sobrecargar APIs externas.
  • Trata las fallas como esperadas y construye recuperación automática desde el día uno.

La plataforma actualmente corre inferencia a escala continental en ~1 día a fracciones de centavo por km². El roadmap incluye ejecuciones automatizadas de modelo, alertas de detección de cambio, herramientas agénticas, arquitecturas más rápidas, más modalidades (datos meteorológicos, nuevos sensores), embeddings a escala global y despliegue multi-cloud/on-prem.

Para equipos construyendo sistemas similares, la mayor lección es invertir en pipelines de datos temprano—dominarán tu tiempo de ejecución y tus costos. Empieza con una región pequeña, mide dónde se gasta el tiempo y optimiza el cuello de botella primero.

Lectura adicional:

Fuente: Post del blog OlmoEarth Platform

Este contenido fue redactado con la asistencia de herramientas de IA, basándose en fuentes confiables, y fue revisado por nuestro equipo editorial antes de su publicación. No reemplaza el asesoramiento de un profesional especializado.