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 earth2studioouuv 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) :
- Horizon temporel — jusqu'à combien de temps à l'avance ? Heures (nowcast), jours (moyen terme), semaines/mois (saisonnier) ?
- Variables d'intérêt — qu'entend-il prédire ? (température, vent, géopotentiel, précipitations, etc.)
- Région — global ou régional (p. ex. CONUS pour les modèles basés sur HRRR) ?
- 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_coordsdu 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
nstepset 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é :
- Récupérez le lexique du candidat depuis
earth2studio/lexicon/<source>.py - 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 |