Inteligência artificial, sem ruído.
Tutoriais5 min

Como construir previsão meteorológica em ensemble com NVIDIA Earth2Studio

Tutorial prático: monte um pipeline de ensemble com o FourCastNet, dados do GFS e diagnóstico de potencial eólico em uma única GPU.

Como construir previsão meteorológica em ensemble com NVIDIA Earth2Studio

Previsão meteorológica em ensemble: o que mudou em 2026

Há poucos anos, rodar uma previsão meteorológica em ensemble — aquela técnica que executa dezenas de cenários ligeiramente diferentes para estimar a incerteza de uma previsão — exigia supercomputadores e equipes de meteorologistas dedicadas. Hoje, com modelos de IA como o FourCastNet (FCN) e frameworks como o NVIDIA Earth2Studio, é possível construir um pipeline completo de ensemble em um notebook com GPU, usando dados atmosféricos reais do GFS (Global Forecast System) e armazenar tudo em Zarr.

Neste tutorial, você vai aprender a montar um fluxo de previsão em ensemble com o Earth2Studio: instalar os componentes corretos sem quebrar o ambiente CUDA do PyTorch, carregar o modelo prognóstico FCN, buscar condições iniciais do GFS, criar um diagnóstico customizado de potencial eólico, aplicar perturbações físicas nas variáveis atmosféricas e validar a previsão com métricas estatísticas como RMSE ponderado por latitude e CRPS.

Prós e contras da abordagem

✅ O que você ganha

  • Velocidade extrema: o FCN gera previsões em segundos onde modelos físicos tradicionais levariam horas.
  • Incerteza quantificada: ensembles permitem estimar a confiança de cada previsão, não apenas um valor pontual.
  • Flexibilidade total: APIs de baixo nível (iteradores, coordenadas, batching) permitem customizar o pipeline do zero.
  • Armazenamento coordenado: o Zarr grava dados multidimensionais de forma eficiente e acessível.
  • Custo acessível: roda em GPU gratuita do Google Colab, sem servidores dedicados.

⚠️ O que você NÃO ganha

  • Substituição de operacionais: não dispensa os modelos físicos dos centros meteorológicos oficiais.
  • Previsão de longo prazo: o FCN é voltado para prazos curtos e médios (dias), não sazonais.
  • Simplicidade: há uma curva de aprendizado real em coordenadas, perturbações e métricas de verificação.

Requisitos

ComponenteMínimoRecomendadoIdeal
GPUNenhuma (CPU)NVIDIA T4NVIDIA L4/A10
Memória8 GB16 GB32 GB
Python3.93.10/3.113.11
PyTorchQualquer com CUDA2.x + CUDA 122.x + CUDA 12
Disco5 GB livres10 GB20 GB (cache GFS)
ConhecimentoPython básicoNumPy + PyTorchConceitos de ML climático
Tempo estimado1–2 h30–60 min20 min com cache pronto
Requisitos para executar o pipeline de ensemble com Earth2Studio em macOS, Windows e Linux (via Colab ou local).

Passo 1 — Instalação preservando o ambiente CUDA

O maior erro de quem começa é instalar o Earth2Studio por cima do ambiente e acabar rebaixando o PyTorch (perdendo o suporte a CUDA). O truque é usar PIP_CONSTRAINT para fixar as versões de torch e numpy que já estão instaladas no Colab:

import importlib.util, os, subprocess, sys

if importlib.util.find_spec("earth2studio") is None:
    import numpy as _np, torch as _torch
    cfile = os.path.join(os.getcwd(), "e2s_constraints.txt")
    with open(cfile, "w") as f:
        f.write(f"torch=={_torch.__version__.split('+')[0]}\n")
        f.write(f"numpy=={_np.__version__}\n")
    env = {**os.environ, "PIP_CONSTRAINT": cfile}
    subprocess.check_call(
        [sys.executable, "-m", "pip", "install", "-q",
         "earth2studio[fcn,data,perturbation,statistics]"],
        env=env)

os.environ.setdefault("EARTH2STUDIO_CACHE", "/content/e2s_cache")
os.makedirs("outputs", exist_ok=True)

Por que isso funciona: o arquivo de restrições diz ao pip para não alterar torch e numpy durante a instalação, evitando conflitos de CUDA. Os extras [fcn,data,perturbation,statistics] instalam o modelo FCN, os conectores de dados (GFS), o sistema de perturbação e as métricas estatísticas de uma vez.

Para confirmar que deu certo, rode import earth2studio e depois torch.cuda.is_available() — o segundo deve retornar True se você estiver em runtime com GPU.

Passo 2 — Carregar o modelo prognóstico FCN

O FourCastNet (FCN) é um modelo baseado em transformers (Adaptive Fourier Neural Operators) treinado para prever campos atmosféricos de forma muito mais rápida que os modelos numéricos tradicionais. No Earth2Studio, ele é carregado como um prognostic model, que recebe o estado atmosférico atual e devolve o estado em um instante futuro:

from earth2studio.models.px import FCN

model = FCN()

A instância model expõe as coordenadas de entrada e saída — variáveis como temperatura, vento (u10m/v10m), geopotencial e pressão — que você vai usar para “conversar” com o restante do pipeline.

Passo 3 — Buscar condições iniciais do GFS

O GFS é o modelo global operacional da NOAA e fornece as condições iniciais reais que alimentam o FCN. O Earth2Studio baixa esses dados sob demanda:

from earth2studio.data import GFS, fetch_data

data_source = GFS()
io, coords = fetch_data(
    data_source,
    time=datetime(2026, 8, 29, 0, tzinfo=timezone.utc),
    variable=["u10m", "v10m", "z500", "t2m"],
)

Aqui definimos o instante de inicialização (data e hora) e as variáveis desejadas. O objeto retornado contém o estado atmosférico nas coordenadas de latitude, longitude e nível de pressão.

Passo 4 — Criar o diagnóstico de potencial eólico

Uma das partes mais interessantes é converter o vento a 10 metros em fator de capacidade de turbina — a fração da potência nominal que uma turbina eólica efetivamente gera. Isso transforma a previsão meteorológica em um dado econômico: quanto de energia um parque eólico vai produzir nas próximas horas ou dias:

def wind_power_diagnostic(u10m, v10m):
    # velocidade do vento no nível do rotor
    speed = (u10m**2 + v10m**2) ** 0.5
    # curva de potência simplificada de uma turbina
    rated = 12.0   # m/s de vento nominal
    cut_in, cut_out = 3.0, 25.0
    cf = ((speed - cut_in) / (rated - cut_in))
    cf = cf.clip(0.0, 1.0)
    cf = cf.where((speed >= cut_in) & (speed <= cut_out), 0.0)
    return cf

O diagnóstico aplica uma curva de potência simplificada: abaixo de 3 m/s a turbina não gira, acima de 25 m/s ela é desligada por segurança, e entre esses valores a produção cresce até o patamar nominal.

Passo 5 — Aplicar perturbações em escala variável

O coração do ensemble é a perturbação das condições iniciais: você gera N cenários ligeiramente diferentes e observa como a previsão diverge. O detalhe importante é que variáveis diferentes têm amplitudes físicas diferentes — você não pode aplicar o mesmo "ruído" à temperatura e ao geopotencial:

from earth2studio.perturbation import PerturbationMethod

perturb = PerturbationMethod()
# amplitudes ajustadas por variável (u10m, v10m, z500, t2m)
noise_scale = {"u10m": 1.0, "v10m": 1.0, "z500": 5.0, "t2m": 0.5}
ensemble = perturb(io, n_members=10, noise_scale=noise_scale)

Repare que o membro de controle (sem perturbação) é preservado — ele serve como referência para medir o espalhamento dos demais cenários.

Passo 6 — Montar o pipeline de execução e gravar em Zarr

Com o modelo, os dados e as perturbações prontos, você usa as APIs de baixo nível do Earth2Studio para iterar os membros, mapear coordenadas e executar o batching:

from earth2studio.models.batch import batch_coords, batch_func
from earth2studio.io import ZarrBackend

store = ZarrBackend(file_name="outputs/ensemble.zarr")

for step in range(lead_steps):          # avançar no tempo
    state = batch_func(model, ensemble) # prever para todos os membros
    ensemble = step(state)              # atualizar estado
    diag = wind_power_diagnostic(ensemble["u10m"], ensemble["v10m"])
    store.write(step, ensemble, diag)   # gravar em Zarr coordenado

O ZarrBackend grava os campos de previsão e os diagnósticos em um armazenamento ciente de coordenadas (tempo, membro, latitude, longitude), o que torna a leitura posterior trivial e paralelizável.

Passo 7 — Verificar contra as análises do GFS

Validar não é opcional. O padrão é comparar a previsão com as análises do GFS (a "verdade" retrospectiva) usando múltiplas métricas:

MétricaO que medeIdeal
RMSE (latitude-weighted)Erro médio, ponderando as latitudesMenor possível
fair CRPSQualidade da distribuição probabilísticaPróximo de 0
Ensemble spreadEspalhamento entre os membrosCompatível com o erro
Spread-skill ratioConsistência entre incerteza e erroPróximo de 1
Métricas de verificação aplicadas às previsões em ensemble.

O spread-skill ratio é especialmente revelador: se ele for muito menor que 1, seu ensemble é subdisperso (excessivamente confiante); se muito maior, é superdisperso (incerteza exagerada).

Passo 8 — Visualizar a incerteza

Por fim, transforme os números em intuição visual. O tutorial produz cinco tipos de gráfico:

  • Mapas espaciais do campo médio e do desvio-padrão entre membros.
  • Contornos "espaguete" do geopotencial em 500 hPa, sobrepondo todos os membros.
  • Fan charts (leques) em um ponto específico, mostrando a evolução da incerteza no tempo.
  • Séries de fator de capacidade eólica, conectando a previsão ao potencial de geração.
  • Curvas de skill por lead time, mostrando como a confiança cai com o horizonte.

Comparativo de modelos de previsão

ModeloTipoVelocidadeCustoUso típico
GFS (NOAA)Físico numéricoHorasAlto (HPC)Operacional global
FourCastNet (FCN)IA (transformers)SegundosBaixo (1 GPU)Ensembles rápidos
GraphCastIA (GNN)MinutosMédioPrazos médios
Pangu-WeatherIA (ViT)MinutosMédioBenchmarks
Comparativo entre o FCN e outras abordagens de previsão.

Casos de uso reais

  • Energia eólica: prever o fator de capacidade de parques eólicos para programar despacho e reduzir perdas.
  • Energia solar: com diagnóstico de irradiância, antecipar a geração fotovoltaica.
  • Agronegócio: prever eventos extremos de chuva e vento que afetam plantio e colheita.
  • Logística e aviação: estimar a incerteza de rotas em cenários de tempestade.
  • Resseguros: quantificar risco de eventos climáticos em portfólios regionais.

Custo estimado (mercado brasileiro)

CenárioInfraestruturaCusto mensal estimado
Colab gratuitoGPU T4 compartilhadaR$ 0
Colab Pro+GPU L4/V100 prioritária~R$ 120
Nuvem (AWS g4dn)T4 dedicada~R$ 600–900
LocalRTX 4070 ou superior~R$ 60/mês de energia
Valores estimados em reais, referência agosto/2026. O consumo de energia varia por região.

Troubleshooting — erros comuns

  • ❌ "No GPU detected — this will be very slow" → O runtime do Colab está em CPU. Causa: você esqueceu de ativar a GPU. Solução: Runtime > Change runtime type > T4 GPU e reinicie a sessão.
  • ❌ Imports falham logo após a instalação → O ambiente não foi recarregado. Causa: módulos instalados durante a execução não são reconhecidos. Solução: Runtime > Restart session e rode a célula novamente (sem reinstalar).
  • ❌ Conflito de versões do torch/numpy → O pip tentou rebaixar o PyTorch. Causa: você não usou o PIP_CONSTRAINT. Solução: reinstale seguindo o Passo 1 com o arquivo de restrições.
  • ❌ Download do GFS demorando ou falhando → Conexão com o servidor da NOAA instável. Causa: tráfego ou cache desatualizado. Solução: defina EARTH2STUDIO_CACHE e reexecute; verifique sua conexão.
  • ❌ Erro de coordenadas ao gravar no Zarr → Dimensões incompatíveis entre previsão e diagnóstico. Causa: variáveis com grids diferentes. Solução: use handshake_coords() para alinhar as coordenadas antes de gravar.
  • ❌ Memória insuficiente em ensembles grandes → Muitos membros ao mesmo tempo. Causa: batching agressivo. Solução: reduza n_members ou processe em sub-batches.

FAQ

  • Preciso entender de meteorologia para usar? Não. O tutorial abstrai a física; basta conhecer Python e NumPy. Conceitos básicos (vento, pressão, geopotencial) ajudam a interpretar os resultados.
  • Posso rodar sem GPU? Sim, mas o aviso "very slow" aparece por um motivo — o FCN em CPU pode levar dezenas de minutos por passo.
  • O FCN substitui o GFS oficial? Não. Ele acelera cenários em ensemble, mas os centros operacionais seguem usando modelos físicos como referência.
  • Quanto tempo cobre uma previsão? Tipicamente dias, com horizonte limitado pela natureza dos dados de treinamento e pela física aprendida.
  • Os dados do GFS são gratuitos? Sim, o GFS é um produto público da NOAA, distribuído gratuitamente.
  • Posso usar meus próprios dados? Sim, o Earth2Studio permite conectar fontes de dados customizadas através da interface de DataSource.

Para onde isso vai

A combinação de modelos de IA com pipelines em ensemble aponta para um futuro em que previsões probabilísticas de alta qualidade ficam acessíveis a qualquer equipe com uma GPU. Em 2027, a expectativa é que esses fluxos se integrem a sistemas operacionais de energia, agricultura e seguros — transformando a previsão meteorológica de um serviço especializado em um componente embutido de decisão automatizada.



Descubra mais sobre noticiAI

Assine para receber nossas notícias mais recentes por e-mail.

R
Sobre o autorRedação Noticiai

Equipe editorial dedicada a explicar inteligência artificial com clareza, independência e contexto.