earth2studio-deterministic-forecast

Par nvidia · skills

Créez des scripts de prévision déterministes avec Earth2Studio (modèle, source de données, IO, inférence). N'utilisez PAS pour les ensembles, les diagnostics, la récupération de données seule, ou l'installation.

npx skills add https://github.com/nvidia/skills --skill earth2studio-deterministic-forecast

Skill de prévision déterministe Earth2Studio

Objectif

Guider les utilisateurs dans la construction de scripts d'inférence de prévision météorologique déterministe (mono-membre) avec Earth2Studio. Couvre la sélection de modèle, la compatibilité des sources de données, le choix du backend IO, le calcul de nsteps, et la génération d'un script complet suivant earth2studio.run.deterministic.

Prérequis

  • Earth2Studio installé (pip install earth2studio ou uv add earth2studio)
  • GPU compatible CUDA avec VRAM suffisant pour le modèle choisi
  • Accès réseau pour le téléchargement des poids du modèle et la récupération des données
  • Python 3.10+

Instructions

Vous aidez un utilisateur à construire un script d'inférence de prévision déterministe en utilisant Earth2Studio. Le script suit la structure de earth2studio.run.deterministic — un pipeline qui prend un modèle pronostique, récupère les conditions initiales à partir d'une source de données, fait progresser le modèle, et écrit la sortie dans un backend IO.

Principe fondamental : la documentation en direct oriente chaque recommandation

La disponibilité des modèles, les APIs des sources de données, et les backends IO changent entre les versions. Avant de recommander un composant, récupérez la page de documentation en direct pertinente pour confirmer qu'elle existe et vérifiez son interface actuelle.

Références de documentation en direct (récupérez uniquement ce que l'étape actuelle exige) :

Composant URL
Modèles pronostiques https://nvidia.github.io/earth2studio/modules/models_px.html
Sources de données (analyse) https://nvidia.github.io/earth2studio/modules/datasources_analysis.html
Sources de données (prévision) https://nvidia.github.io/earth2studio/modules/datasources_forecast.html
Backends IO https://nvidia.github.io/earth2studio/modules/io.html
Source run.deterministic https://github.com/NVIDIA/earth2studio/blob/main/earth2studio/run.py
Lexique (compatibilité variables) https://github.com/NVIDIA/earth2studio/tree/main/earth2studio/lexicon

Protocole d'interaction

Étape 1. Comprendre les exigences de prévision

Posez à l'utilisateur (max 3 questions, passez ce qui est déjà répondu) :

  1. Horizon temporel — jusqu'à combien de temps à l'avance ? Heures (nowcast), jours (moyen terme), semaines/mois (saisonnier) ?
  2. Variables d'intérêt — qu'entend-il prédire ? (température, vent, géopotentiel, précipitations, etc.)
  3. Région — global ou régional (p. ex. CONUS pour les modèles basés sur HRRR) ?
  4. Matériel — quel GPU / VRAM dispose-t-il ? (filtre les choix de modèle)

Étape 2. Sélectionner le modèle pronostique

Récupérez la page des modèles pronostiques. Filtrez les candidats par :

  • Horizon temporel → badge de classe de modèle (NWC, MR, S2S, CM)
  • Région → badge de région (Global, NA, etc.)
  • VRAM → badge VRAM recommandée
  • Variables → vérifiez input_coords/output_coords du modèle contre les besoins de l'utilisateur

Présentez 2–4 modèles candidats avec les compromis (résolution, vitesse, précision, VRAM). Laissez l'utilisateur choisir.

Une fois sélectionné, notez :

  • Les variables d'entrée requises (de input_coords["variable"])
  • La taille du pas de temps (de output_coords["lead_time"])
  • Ils déterminent nsteps et contraignent les sources de données compatibles

Étape 3. Sélectionner la source de données

La source de données doit fournir les variables d'entrée requises du modèle. Récupérez la page de la source de données d'analyse (ou la page de source de prévision si vous comparez avec des prévisions opérationnelles).

Vérifiez la compatibilité :

  1. Récupérez le lexique du candidat depuis earth2studio/lexicon/<source>.py
  2. Confirmez que toutes les variables de input_coords["variable"] du modèle existent comme clés dans le VOCAB de la source

Présentez les options viables. Pairages courants :

  • Modèles globaux (AIFS, Pangu, GraphCast, SFNO, etc.) → GFS, ARCO, CDS, WB2ERA5, IFS
  • Modèles régionaux (StormCast, basés sur HRRR) → HRRR
  • Runs historiques/recherche → ARCO, CDS, WB2ERA5, NCAR_ERA5

Laissez l'utilisateur choisir. Confirmez le(s) temps d'initialisation à partir duquel/desquels il souhaite faire une prévision.

Étape 4. Sélectionner le backend IO

Présentez les backends IO disponibles (récupérez la page IO pour confirmer la liste actuelle) :

Backend Idéal pour
ZarrBackend Grandes sorties, stockage par chunks, recommandé par défaut
AsyncZarrBackend Même que Zarr mais écritures asynchrones pour la performance
NetCDF4Backend Compatibilité avec les outils hérités
XarrayBackend En mémoire, petites exécutions, exploration interactive
KVBackend Dict clé-valeur, débogage

Recommandez ZarrBackend sauf si l'utilisateur a une raison spécifique pour un autre. Demandez où il veut que la sortie soit sauvegardée.

Étape 5. Déterminer nsteps

Calculez nsteps à partir de :

  • L'horizon de prévision souhaité par l'utilisateur (p. ex. 5 jours)
  • Le pas de temps du modèle (p. ex. 6 heures pour la plupart des modèles globaux)
  • nsteps = forecast_hours / model_step_hours

Confirmez avec l'utilisateur : « Pour une prévision de 5 jours avec un pas de temps de 6 heures, c'est 20 étapes. Correct ? »

Étape 6. Générer le script d'inférence

Écrivez un script Python complet suivant le pattern earth2studio.run.deterministic. La structure du script :

import datetime
from collections import OrderedDict

import numpy as np
import torch

from earth2studio.models.px import <ModelClass>
from earth2studio.data import <DataSourceClass>
from earth2studio.io import <IOBackendClass>
from earth2studio.run import deterministic

# 1. Initialiser le modèle
model = <ModelClass>.load_model(<ModelClass>.load_default_package())

# 2. Initialiser la source de données
data = <DataSourceClass>()

# 3. Initialiser le backend IO
io = <IOBackendClass>("<output_path>")

# 4. (Optionnel) Sous-sélectionner les variables/coords de sortie
output_coords = OrderedDict({
    "variable": np.array(["t2m", "u10m", ...]),  # sauvegarder uniquement ceux-ci
})

# 5. Exécuter la prévision déterministe
io = deterministic(
    time=["YYYY-MM-DDTHH:MM:SS"],
    nsteps=<N>,
    prognostic=model,
    data=data,
    io=io,
    output_coords=output_coords,  # optionnel
    device=torch.device("cuda"),
)

# 6. Post-exécution : inspecter les résultats
print("Prévision terminée. Sortie à : <output_path>")

Avant d'écrire le script, récupérez la page de documentation du modèle spécifique pour confirmer :

  • Le chemin d'import de classe correct
  • Comment charger le modèle (load_model + load_default_package() est le pattern standard mais vérifiez)
  • Tous arguments de constructeur spécifiques au modèle

Récupérez aussi la page de la source de données pour confirmer les arguments du constructeur (certains ont besoin de chemins de cache, de tokens, etc.).

Étape 7. Expliquer le script et les étapes suivantes

Après avoir livré le script, expliquez :

  • Comment changer le temps de prévision (éditez simplement la liste time)
  • Comment exécuter plusieurs initialisations (ajoutez plus d'entrées à time)
  • Comment sous-sélectionner les variables de sortie via output_coords
  • Où la sortie est sauvegardée et comment la relire (p. ex. xr.open_zarr(...))
  • S'ils veulent ajouter des diagnostiques par-dessus, pointez-les vers le pattern du workflow diagnostic

Propriété et hors champ

Possède : sélection du modèle pronostique pour les prévisions déterministes, vérification de la compatibilité des sources de données, sélection du backend IO, calcul de nsteps, génération du script d'inférence complet suivant la structure earth2studio.run.deterministic.

Ne possède pas : workflows d'ensemble, chaînage de modèles diagnostiques, récupération de données uniquement (earth2studio-data-fetch), installation (earth2studio-install), entraînement de modèles ou fine-tuning, développement de modèles personnalisés.

Exemples

Invocation typique :

« Exécuter une prévision globale de 5 jours avec Pangu-Weather à partir de l'analyse GFS d'aujourd'hui, en sauvegardant la sortie dans Zarr. »

Le skill passe par les étapes 1-7 : confirme les exigences, sélectionne Pangu24, apparie avec la source de données GFS, choisit ZarrBackend, calcule nsteps=5 (pas de 24h), génère le script, et explique comment inspecter les résultats.

Limitations

  • Uniquement les prévisions déterministes (mono-membre) ; utilisez le workflow d'ensemble pour les exécutions probabilistes
  • Impossible d'entraîner ou de faire du fine-tuning sur les modèles — inférence uniquement
  • Les poids du modèle nécessitent un téléchargement initial (plusieurs Go selon le modèle)
  • Les modèles régionaux (p. ex. StormCast) nécessitent des sources de données régionales correspondantes
  • GPU requis ; l'inférence CPU uniquement n'est pas supportée pour la plupart des modèles

Dépannage

Erreur Cause Solution
KeyError sur variable Lexique manquant la variable Vérifiez la compatibilité ; choisissez une source différente
OutOfMemoryError VRAM dépassée Utilisez un modèle plus petit ou videz le cache
FileNotFoundError package Poids non mis en cache Appelez load_default_package() d'abord
TimeoutError récupération données API lente/inaccessible Réessayez ou utilisez une source mise en cache
ValueError: nsteps Horizon < pas du modèle Augmentez l'horizon ou utilisez un modèle plus fin

Skills similaires