| --- |
| license: openmdw-1.1 |
| --- |
| |
| # Earth-2 Checkpoints: StormScope-Solar-GOES-NSRDB |
|
|
| ## Description: |
|
|
| StormScope-Solar (NSRDB) is a generative AI model that estimates surface solar irradiance, specifically Global Horizontal Irradiance (GHI), from geostationary satellite (GOES) imagery over the continental US (CONUS). |
| The model is the solar component of the StormScope nowcasting system: it pairs with the [StormScope-GOES](https://huggingface.co/nvidia/stormscope-goes-mrms) model, which autoregressively predicts future GOES imagery, to nowcast GHI at short lead times. Each predicted (or observed) GOES frame is mapped to a GHI field on the 3 km [HRRR](https://rapidrefresh.noaa.gov/hrrr/) model grid over CONUS. |
|
|
| The model uses a deterministic regression prediction that is optionally refined with an EDM diffusion denoiser via SDEdit (warm-started diffusion), and is conditioned on the most recent GOES state. It supports clearness-index normalization, where GHI is normalized by the top-of-atmosphere insolation, so that predictions remain physically consistent with the solar geometry. |
|
|
| For inference see [NVIDIA Earth2Studio](https://github.com/NVIDIA/earth2studio). |
|
|
| This model is ready for commercial or non-commercial use. |
|
|
| ### License/Terms of Use: |
|
|
| **Governing Terms**: Use of this model is governed by the [Linux Foundation OpenMDW License Agreement, version 1.1](https://github.com/OpenMDW/OpenMDW/blob/main/1.1/LICENSE.OpenMDW-1.1). |
|
|
| ### Deployment Geography: |
|
|
| Global |
|
|
| ### Use Case: |
|
|
| High-resolution nowcasting of surface solar irradiance (GHI) over the continental US (CONUS) from geostationary satellite imagery, for solar energy forecasting, grid operations, and atmospheric/renewable-energy research. |
|
|
| ### Release Date: |
|
|
| Hugging Face [08/31/2026] via [https://huggingface.co/nvidia/stormscope-NSRDB](https://huggingface.co/nvidia/stormscope-NSRDB) |
|
|
| <!-- Unreleased. Planned release location: Hugging Face (repo currently private). Fill in the release date (MM/DD/YYYY) at publish time; add additional Build.Nvidia.com / GitHub / NGC / Other lines here in the same "[Insert MM/DD/YYYY] via [URL]" format if the model is also published there. --> |
|
|
| ## References(s): |
|
|
| - StormScope-GOES-MRMS model card: [https://huggingface.co/nvidia/stormscope-goes-mrms](https://huggingface.co/nvidia/stormscope-goes-mrms) |
| - NVIDIA Earth2Studio: [https://github.com/NVIDIA/earth2studio](https://github.com/NVIDIA/earth2studio) |
| - NSRDB (National Solar Radiation Database): [https://nsrdb.nrel.gov/](https://nsrdb.nrel.gov/) |
|
|
| ## Model Architecture |
|
|
| **Architecture Type:** Diffusion-based image-to-image regression model. A deterministic regression network produces an initial GHI estimate that is refined by an EDM (elucidated diffusion model) denoiser using SDEdit (warm-started diffusion). <br> |
| **Network Architecture:** Diffusion denoiser with optional regression backbone <br> |
|
|
| **Number of model parameters:** ~3M per network (SongUNet regression + SongUNet diffusion denoiser; `model_channels=64`, `num_blocks=2` each). |
|
|
| <!-- |
| ## Computational Load (Internal Only: For NVIDIA Models Only; please add as an HTML comment and remove the fields below from the published model card) |
| **Cumulative Compute:** ~2.1e20 FLOP (BF16) |
|
|
| Method: GPU-time method (EU AI Act "How to Calculate", option 2) — the 6ND rule is not |
| used because both networks are convolutional SongUNets (each weight is reused across all |
| spatial locations, so 6ND badly underestimates conv/UNet compute). |
|
|
| Training Compute = training_time x num_GPUs x peak_FLOP/s x utilization |
| |
| Measured from training logs (`output/rundir/.../train.log`), H100 SXM, AMP-BF16 |
| (peak = 9.9e14 FLOP/s dense BF16 tensor): |
| - Regression SongUNet: 50,000 steps x 0.62 s/step on 8x H100 = ~68.9 GPU-h (global batch 16) |
| - Diffusion EDM SongUNet: 50,000 steps x 0.57 s/step on 16x H100 = ~126.7 GPU-h (global batch 32) |
| - Total ~= 196 H100 GPU-hours (~7.0e5 GPU-seconds), excluding requeue idle time. |
| Assuming 30% model-FLOP utilization: 7.0e5 s x 9.9e14 FLOP/s x 0.30 ~= 2.1e20 FLOP. |
| (Range ~0.7e20 to 2.8e20 FLOP for 10-40% MFU.) |
| |
| This is ~5 orders of magnitude below the EU AI Act GPAISR threshold of 1e25 cumulative |
| training-compute FLOP; no systemic-risk classification is triggered. |
| |
| **Estimated Energy and Emissions for Model Training:** ~153 kWh, ~0.063 tCO2e |
| |
| Step 1 - Energy (LBNL 2024 methodology): |
| Total kWh = #nodes x #GPUs/node x TGP(W) x 0.001 x 80% x time_to_train(h) x PUE |
| Assumptions: TGP = 700 W (H100 SXM); 80% of TGP as avg max power draw (LBNL 2024, |
| p.22, range 78-83%); PUE = 1.4 (LBNL 2024, p.43, no site data); GPU utilization 100%. |
| Time to train = 50,000 steps x measured s/step (from train.log), steady-state. |
| - Regression: 1 node x 8 GPU x 700 x 0.001 x 0.80 x 8.61 h (0.62 s/step) x 1.4 = 54.0 kWh |
| - Diffusion: 2 node x 8 GPU x 700 x 0.001 x 0.80 x 7.92 h (0.57 s/step) x 1.4 = 99.4 kWh |
| - Total ~= 153 kWh |
| |
| Step 2 - Emissions: |
| Total tCO2e = Total kWh x grid emission factor (gCO2e/kWh) x 1e-6 |
| Grid factor = 410.5 gCO2e/kWh (IEA 2023 weighted average; no site grid data). |
| - 153.3 kWh x 410.5 x 1e-6 ~= 0.063 tCO2e |
| |
| Reporting precision: FP16 (H100 FP16/BF16 tensor peak identical; model trained in AMP-BF16). |
| --> |
| |
| ## Input: |
| |
| **Input Type(s):** |
| |
| - Tensor (GOES state variables, used as conditioning for the GHI estimate) |
| - DateTime (NumPy Array), used to compute solar insolation / clearness-index normalization <br> |
| |
| **Input Format(s):** PyTorch Tensor / NumPy array <br> |
| **Input Parameters:** |
| |
| - Five Dimensional (5D) (batch, lead time, variable, height, width) <br> |
| - Input DateTime (1D) <br> |
| |
| **Other Properties Related to Input:** |
| |
| - Input grid (height/width) dimensions are that of the HRRR model grid (3 km CONUS). |
| - Conditioning GOES variables: `abi01c`, `abi02c`, `abi03c`, `abi07c`, `abi08c`, `abi09c`, `abi10c`, `abi13c`. |
| - Conditioning is regridded from the raw GOES satellite grid onto the model grid; pixels with no GOES coverage are flagged invalid and zeroed after normalization. |
| - A static cosine-of-solar-zenith / insolation field is computed from the input DateTime for clearness-index normalization. |
| |
| For variable naming information, review the [GOES](https://github.com/NVIDIA/earth2studio/blob/main/earth2studio/lexicon/goes.py) Lexicon in Earth2Studio. |
| |
| ## Output: |
| |
| **Output Type(s):** Tensor (surface Global Horizontal Irradiance, `ghi`) <br> |
| **Output Format:** PyTorch Tensors <br> |
| **Output Parameters:** Five Dimensional (5D) (batch, lead time, variable, latitude, longitude) <br> |
| **Other Properties Related to Output:** |
| |
| - Output grid (height/width) dimensions are that of the HRRR/NSRDB 3 km model grid over CONUS. |
| - Output variable: `ghi` (Global Horizontal Irradiance, W/m²). |
| - Output lead time is of size 1 (model estimates GHI at the GOES observation time). |
| |
| Our AI models are designed and/or optimized to run on NVIDIA GPU-accelerated systems. By leveraging NVIDIA’s hardware (e.g. GPU cores) and software frameworks (e.g., CUDA libraries), the model achieves faster training and inference times compared to CPU-only solutions. |
| |
| ## Software Integration |
| |
| **Runtime Engine(s):** [PhysicsNeMo](https://github.com/NVIDIA/physicsnemo); [NVIDIA Earth2Studio](https://github.com/NVIDIA/earth2studio) <br> |
| **Acceleration Engine:** Not Applicable (the model runs in native PyTorch; no TensorRT / TensorRT-LLM / Triton optimization is applied) <br> |
| **Supported Hardware Microarchitecture Compatibility:** <br> |
| * NVIDIA Ampere <br> |
| * NVIDIA Blackwell <br> |
| * NVIDIA Hopper <br> |
| |
| **Supported Operating System(s):** |
| * Linux <br> |
| |
| The integration of foundation and fine-tuned models into AI systems requires additional testing using use-case-specific data to ensure safe and effective deployment. Following the V-model methodology, iterative testing and validation at both unit and system levels are essential to mitigate risks, meet technical and functional requirements, and ensure compliance with safety and ethical standards before deployment. |
| |
| ## Model Version(s): |
| |
| **Model Version:** v1 (`stormscope_nsrdb`) <br> |
|
|
| # Training, Testing, and Evaluation Datasets: |
|
|
| ## Training Dataset: |
|
|
| **Link:** [NSRDB](https://nsrdb.nrel.gov/) <br> |
|
|
| *Data Collection Method by dataset:* <br> |
| * Automatic/Sensors <br> |
|
|
| *Labeling Method by dataset:* <br> |
| * Automatic/Sensors <br> |
|
|
| *Data Modality:* |
| * Gridded geophysical time series |
|
|
| *Data Size:* |
| * **~2.5 TB** on disk (gridded NSRDB GHI on the 3 km HRRR CONUS grid, 5-min cadence: **627 GB** for 2020 and **~625 GB** each for 2021–2023) |
|
|
| **Properties:** |
| NSRDB (National Solar Radiation Database) surface solar irradiance estimates used as the GHI target. NSRDB provides modeled solar radiation derived from satellite observations over CONUS. Training period: **2020–2023** (held-out validation year: **2024**). <br> |
|
|
| **Link:** [GOES](https://registry.opendata.aws/noaa-goes/) <br> |
|
|
| *Data Collection Method by dataset* <br> |
| * Automatic/Sensors <br> |
|
|
| *Labeling Method by dataset* <br> |
| * Automatic/Sensors <br> |
|
|
| *Data Modality:* |
| * Gridded geophysical time series |
|
|
| *Data Size:* |
| * **~25 TB** logical (uncompressed) for the 8 conditioning bands, 2020–2023: ~6.3 TB/year (`goes_16c` array shape ≈ [52,560 timesteps × 8 bands × 1500 × 2500], float32, ~10-min cadence on the native GOES grid). Stored Blosc-compressed on disk (smaller footprint); a subset of the shared StormScope GOES ABI CONUS zarr archive. |
|
|
| **Properties:** |
| GOES imaging data used as model conditioning. GOES is a NOAA geostationary satellite product providing multispectral radiances at 3 km resolution over a disk covering the continental US. Training period: **2020–2023** (GOES-16/17/18 as available; held-out validation year: **2024** with GOES-16). <br> |
|
|
| ## Testing Dataset: |
|
|
| **Link:** [NSRDB](https://nsrdb.nrel.gov/) <br> |
|
|
| *Data Collection Method by dataset:* <br> |
| * Automatic/Sensors <br> |
|
|
| *Labeling Method by dataset:* <br> |
| * Automatic/Sensors <br> |
|
|
| *Data Modality:* |
| * Gridded geophysical time series |
|
|
| *Data Size:* |
| * **~627 GB** on disk (gridded NSRDB GHI for the held-out **2024** year on the 3 km HRRR CONUS grid, 5-min cadence). Paired GOES 2024 conditioning is a subset of the shared StormScope GOES zarr archive (not itemized separately). |
|
|
| **Properties:** |
| NSRDB and GOES data over a held-out time period. Validation year: **2024**. <br> |
|
|
| **Link:** [SURFRAD](https://gml.noaa.gov/grad/surfrad/) / [SOLRAD](https://gml.noaa.gov/grad/solrad/) ground stations <br> |
|
|
| *Data Collection Method by dataset:* <br> |
| * Automatic/Sensors <br> |
|
|
| *Labeling Method by dataset:* <br> |
| * Automatic/Sensors <br> |
|
|
| *Data Modality:* |
| * In-situ point time series (surface pyranometer GHI) |
|
|
| *Data Size:* |
| * **n = 2,942** paired comparisons across **14 stations** (year-representative 2025: 5 days/month × daytime hours). |
|
|
| **Properties:** |
| Independent **out-of-sample test** uses **ground-station** GHI measurements (SURFRAD/SOLRAD, read via `pvlib`) for calendar year **2025**. NSRDB is used for training/validation through 2024, but **NSRDB was not yet published for 2025** at evaluation time, so gridded NSRDB truth is unavailable for that year; ground-station pyranometer observations provide the only independent 2025 truth and additionally test the model against *direct measurements* rather than another satellite-derived product. The operational **HRRR analysis** (DSWRF, F00) is scored as a baseline at the same station locations. GOES-East is auto-selected (GOES-16 → GOES-19 at the 2025-04-07 handover). <br> |
|
|
| ## Evaluation Dataset: |
|
|
| **Link:** [NSRDB](https://nsrdb.nrel.gov/) <br> |
|
|
| *Data Collection Method by dataset:* <br> |
| * Automatic/Sensors <br> |
|
|
| *Labeling Method by dataset:* <br> |
| * Automatic/Sensors <br> |
|
|
| *Data Modality:* |
| * Gridded geophysical time series |
|
|
| *Data Size:* |
| * **70 timesteps** (subset of the held-out 2024 NSRDB year, July 15–19, UTC hours 10–23), regridded onto the 3 km HRRR CONUS grid (1024 × 1792). |
|
|
| **Properties:** |
| NSRDB 2024 GHI regridded onto the model's 3 km CONUS grid (spherical k-nearest-neighbor IDW, 6 km max distance). Valid pixels: model land mask ∩ daytime GHI > 0 ∩ finite NSRDB (`fill_flag < 255`, GHI fill sentinel masked). <br> |
|
|
| **Link:** [GOES](https://registry.opendata.aws/noaa-goes/) <br> |
|
|
| *Data Collection Method by dataset* <br> |
| * Automatic/Sensors <br> |
|
|
| *Labeling Method by dataset* <br> |
| * Automatic/Sensors <br> |
|
|
| *Data Modality:* |
| * Gridded geophysical time series |
|
|
| *Data Size:* |
| * **70 GOES-16 ABI CONUS frames** (July 15–19, 2024, UTC hours 10–23), one conditioning frame per evaluated timestep; fetched on demand from the NOAA GOES public archive. |
|
|
| **Properties:** |
| GOES-16 ABI CONUS (scan mode C) for **July 15–19, 2024**, UTC hours 10–23 (**70 timesteps**, 5 days). **Estimation-step validation only:** observed GOES at time *T* → GHI at *T*. No StormScope-GOES forecast and no autoregressive rollout; end-to-end nowcast skill at lead time > 0 depends on the separate [StormScope-GOES](https://huggingface.co/nvidia/stormscope-goes-mrms) model and is out of scope for this benchmark. <br> |
|
|
| **Benchmark Score:** |
|
|
| **GHI estimation step** (shipped `default` mode: regression warm-start + **12** SDEdit EDM steps, `S_churn=0`, single sample per timestep). Ground truth: NSRDB 2024. |
|
|
| **Dates / samples:** **5 dates** (July 15–19, 2024) × **14 hourly steps** (UTC 10–23) = **70 samples** (one full CONUS GHI field per sample). |
|
|
| **Verification process:** for each sample, the *observed* GOES image at time *T* is fetched, run through `estimate_from_goes` to produce a GHI field on the 3 km HRRR grid, and compared pixel-by-pixel against NSRDB 2024 regridded to the same grid. Metrics are computed over valid pixels only (model land mask ∩ daytime GHI > 0 ∩ finite NSRDB with `fill_flag < 255`) per timestep, then averaged over the 70 samples. This isolates the **estimation step** (GOES at *T* → GHI at *T*); no GOES forecast or autoregressive rollout is involved. |
|
|
| Overall (mean over 70 samples): |
|
|
| | Mode | MBE [W/m²] | rMBE [%] | RMSE [W/m²] | rRMSE [%] | MAE [W/m²] | rMAE [%] | P95\|e\| | corr | R² | stdR | KGE | n | |
| |------|------------|----------|-------------|-----------|------------|----------|----------|------|-----|------|-----|---| |
| | **default** (shipped) | **−0.53** | −0.88 | **42.16** | 12.06 | **23.20** | 6.89 | 91.46 | **0.96** | **0.92** | **1.00** | **0.95** | 70 | |
| | diffusion_warmstart | +2.47 | −0.03 | 46.01 | 13.19 | 26.42 | 7.95 | 99.34 | 0.96 | 0.91 | 1.02 | 0.94 | 70 | |
| | oneshot | +2.07 | −0.26 | 39.53 | 12.02 | 26.35 | 8.13 | 81.18 | 0.97 | 0.93 | 1.01 | 0.95 | 70 | |
| |
| The shipped `default` mode — regression first-guess + warm-started SDEdit diffusion — is the **production inference path** (`estimate_from_goes`). It is selected on the basis of **lowest bias, lowest MAE, and physically realistic fine-scale structure**, rather than a single error metric: it is essentially unbiased (MBE −0.53 W/m² vs +2.07 for `oneshot`) and has the lowest MAE (23.20 W/m²). The other rows are internal ablations. `oneshot` is the **regression-only** estimate (no diffusion refinement); because a regression network is trained to minimize MSE it produces a smooth field, which yields marginally lower RMSE/rRMSE and correlation/R² but **misses the fine-scale spatial structure** (cloud texture, sharp irradiance gradients) that the diffusion refinement restores — so it is less physically realistic despite the slightly better pixel-wise error. `diffusion_warmstart` replaces the regression first guess with a high-σ diffusion denoise and raises the afternoon bias (+2–3 W/m² overall, up to ~+12 W/m² at peak insolation hours). In short, warm-starting the diffusion refinement from the deterministic regression guess (SDEdit) keeps the estimate bias-free while retaining realistic fine-scale detail, which is why it is the shipped configuration. |
|
|
| Diurnal breakdown (`default` mode, mean over 5 days): |
|
|
| | UTC hour band | Mean bias | Mean relative RMSE | Mean R² | Notes | |
| |---------------|-----------|-------------------|---------|-------| |
| | 10–11 (morning) | −2.2 W/m² | ~28% | ~0.81 | Low insolation; rapidly evolving cloud | |
| | 12–16 (midday) | +1.1 W/m² | ~10% | ~0.97 | Best performance | |
| | 17–19 (afternoon peak) | −1.7 W/m² | ~8% | ~0.90 | | |
| | 20–23 (evening) | −0.8 W/m² | ~10% | ~0.94 | | |
|
|
| **Extended seasonal benchmark (in progress):** A four-season 2024 evaluation (Jan / Apr / Jul / Oct, 5 days each, UTC 10–23, *n*=280 timesteps, `default` mode) is underway; this table will be updated with per-season and full-year aggregate rows when complete. |
|
|
| ### Independent 2025 ground-station test (vs HRRR analysis) |
|
|
| Because NSRDB is not yet available for 2025, the shipped `default` model is additionally tested against **ground-station** GHI (SURFRAD/SOLRAD via `pvlib`), with the operational **HRRR analysis** (DSWRF, F00) as an operational baseline scored at the same locations. |
|
|
| **Dates / samples:** year-representative 2025 sampling of **5 days/month × 12 months = 60 dates**, each at **11 daytime UTC hours (13–23)**, over **14 stations** — yielding **n = 2,942** finite, daytime (insolation-above-threshold) paired comparisons after filtering. GOES-East is auto-selected across the 2025-04-07 GOES-16 → GOES-19 handover. |
|
|
| **Verification process:** at each valid time the *observed* GOES image is run through `estimate_from_goes` and the resulting GHI field is sampled at each station's lat/lon; the HRRR analysis (DSWRF, lead 0) is fetched live and sampled at the same points; both are scored against the station pyranometer GHI in physical W/m² and in clearness index (`GHI / (insolation + eps)`). Only finite, above-insolation-threshold daytime points are counted. |
|
|
| | Space | Model | MBE | MAE | RMSE | corr | R² | KGE | |
| |-------|-------|-----|-----|------|------|-----|-----| |
| | **GHI [W/m²]** | **StormScope-Solar (default)** | +7.8 | **50.2** | **84.2** | **0.958** | **0.916** | **0.948** | |
| | GHI [W/m²] | HRRR analysis (baseline) | +0.4 | 85.0 | 140.9 | 0.888 | 0.765 | 0.881 | |
| | **Clearness index** | **StormScope-Solar (default)** | +0.016 | **0.077** | **0.116** | 0.889 | 0.780 | 0.881 | |
| | Clearness index | HRRR analysis (baseline) | +0.006 | 0.121 | 0.177 | 0.781 | 0.493 | 0.749 | |
|
|
| Against independent surface measurements, StormScope-Solar reduces GHI **MAE by ~41%** and **RMSE by ~40%** relative to the HRRR analysis, with higher correlation, R² and KGE at every station. It carries a small positive daytime GHI bias (+7.8 W/m², rMBE < ~2%); HRRR is nearly mean-unbiased but substantially noisier. |
|
|
| **Properties (continued):** |
| Held-out calendar year for validation: **2024** (training: **2020–2023**); independent out-of-sample test on **2025** ground stations (NSRDB unavailable for 2025). Gridded NSRDB estimation benchmark above covers **5 summer days** of 2024. <br> |
|
|
| ## Inference: |
|
|
| **Engine:** PyTorch <br> |
| **Test Hardware:** |
| * NVIDIA Hopper (H100) <br> |
|
|
| ## Ethical Considerations: |
|
|
| NVIDIA believes Trustworthy AI is a shared responsibility and we have established policies and practices to enable development for a wide array of AI applications. Developers should work with their internal model team to ensure this model meets requirements for the relevant industry and use case and addresses unforeseen product misuse. |
|
|
| For more detailed information on ethical considerations for this model, please see the Model Card++ Bias, Explainability, Safety & Security, and Privacy Subcards. |
|
|
| Please report model quality, risk, security vulnerabilities or NVIDIA AI Concerns [here](https://www.nvidia.com/en-us/support/submit-security-vulnerability/). |
|
|
| ## Notes: |
|
|
| This project is currently not accepting contributions |
|
|