Upload folder using huggingface_hub
Browse files- README.md +37 -0
- config.json +92 -0
- model.safetensors +3 -0
- normalization_note.txt +1 -0
README.md
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
license: apache-2.0
|
| 3 |
+
library_name: pytorch
|
| 4 |
+
tags:
|
| 5 |
+
- weather
|
| 6 |
+
- era5
|
| 7 |
+
- pytorch
|
| 8 |
+
- sonny
|
| 9 |
+
pipeline_tag: other
|
| 10 |
+
---
|
| 11 |
+
|
| 12 |
+
# Sonny — 69-channel ERA5-like backbone (120×240, 6 h)
|
| 13 |
+
|
| 14 |
+
**Sonny** is a ViT-style one-step weather backbone trained at 1.5°-style resolution (lat×lon = 120×240), 69 ERA5-like variables, patch size 2, EMA weights at epoch 50.
|
| 15 |
+
|
| 16 |
+
## Loading (with the `stormer` codebase)
|
| 17 |
+
|
| 18 |
+
This Hub snapshot stores weights only (`model.safetensors`) plus `config.json` (`init_args`). You need the same Python dependencies as training (**PyTorch**, **timm**, **xformers** on GPU, etc.) and the `stormer` package that defines the model.
|
| 19 |
+
|
| 20 |
+
```python
|
| 21 |
+
from stormer.models.hub.sonny import load_sonny_from_hub
|
| 22 |
+
|
| 23 |
+
model = load_sonny_from_hub("Francismj/sonny-era5-backbone", map_location="cuda")
|
| 24 |
+
model.eval()
|
| 25 |
+
```
|
| 26 |
+
|
| 27 |
+
Or download files manually and build :class:`~stormer.models.hub.sonny.Sonny`(**init_args**) then :meth:`load_state_dict`.
|
| 28 |
+
|
| 29 |
+
## Files
|
| 30 |
+
|
| 31 |
+
- `config.json` — hyperparameters / variable list for :class:`Sonny`
|
| 32 |
+
- `model.safetensors` — EMA ``ema_model_state_dict``
|
| 33 |
+
- `normalization_note.txt` — reminder to use your local ``normalization_constants`` from the training repo for real inference
|
| 34 |
+
|
| 35 |
+
## Citation
|
| 36 |
+
|
| 37 |
+
If you use this checkpoint, cite your project / paper and link this model card.
|
config.json
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"sonny_version": "1.0",
|
| 3 |
+
"architecture_name": "sonny",
|
| 4 |
+
"class_qualname": "stormer.models.hub.sonny.Sonny",
|
| 5 |
+
"source_checkpoint": "stormbreaker5_checkpoint_ema_epoch_050.pth",
|
| 6 |
+
"source_epoch": 50,
|
| 7 |
+
"init_args": {
|
| 8 |
+
"variables": [
|
| 9 |
+
"2m_temperature",
|
| 10 |
+
"10m_u_component_of_wind",
|
| 11 |
+
"10m_v_component_of_wind",
|
| 12 |
+
"mean_sea_level_pressure",
|
| 13 |
+
"geopotential_50",
|
| 14 |
+
"geopotential_100",
|
| 15 |
+
"geopotential_150",
|
| 16 |
+
"geopotential_200",
|
| 17 |
+
"geopotential_250",
|
| 18 |
+
"geopotential_300",
|
| 19 |
+
"geopotential_400",
|
| 20 |
+
"geopotential_500",
|
| 21 |
+
"geopotential_600",
|
| 22 |
+
"geopotential_700",
|
| 23 |
+
"geopotential_850",
|
| 24 |
+
"geopotential_925",
|
| 25 |
+
"geopotential_1000",
|
| 26 |
+
"u_component_of_wind_50",
|
| 27 |
+
"u_component_of_wind_100",
|
| 28 |
+
"u_component_of_wind_150",
|
| 29 |
+
"u_component_of_wind_200",
|
| 30 |
+
"u_component_of_wind_250",
|
| 31 |
+
"u_component_of_wind_300",
|
| 32 |
+
"u_component_of_wind_400",
|
| 33 |
+
"u_component_of_wind_500",
|
| 34 |
+
"u_component_of_wind_600",
|
| 35 |
+
"u_component_of_wind_700",
|
| 36 |
+
"u_component_of_wind_850",
|
| 37 |
+
"u_component_of_wind_925",
|
| 38 |
+
"u_component_of_wind_1000",
|
| 39 |
+
"v_component_of_wind_50",
|
| 40 |
+
"v_component_of_wind_100",
|
| 41 |
+
"v_component_of_wind_150",
|
| 42 |
+
"v_component_of_wind_200",
|
| 43 |
+
"v_component_of_wind_250",
|
| 44 |
+
"v_component_of_wind_300",
|
| 45 |
+
"v_component_of_wind_400",
|
| 46 |
+
"v_component_of_wind_500",
|
| 47 |
+
"v_component_of_wind_600",
|
| 48 |
+
"v_component_of_wind_700",
|
| 49 |
+
"v_component_of_wind_850",
|
| 50 |
+
"v_component_of_wind_925",
|
| 51 |
+
"v_component_of_wind_1000",
|
| 52 |
+
"temperature_50",
|
| 53 |
+
"temperature_100",
|
| 54 |
+
"temperature_150",
|
| 55 |
+
"temperature_200",
|
| 56 |
+
"temperature_250",
|
| 57 |
+
"temperature_300",
|
| 58 |
+
"temperature_400",
|
| 59 |
+
"temperature_500",
|
| 60 |
+
"temperature_600",
|
| 61 |
+
"temperature_700",
|
| 62 |
+
"temperature_850",
|
| 63 |
+
"temperature_925",
|
| 64 |
+
"temperature_1000",
|
| 65 |
+
"specific_humidity_50",
|
| 66 |
+
"specific_humidity_100",
|
| 67 |
+
"specific_humidity_150",
|
| 68 |
+
"specific_humidity_200",
|
| 69 |
+
"specific_humidity_250",
|
| 70 |
+
"specific_humidity_300",
|
| 71 |
+
"specific_humidity_400",
|
| 72 |
+
"specific_humidity_500",
|
| 73 |
+
"specific_humidity_600",
|
| 74 |
+
"specific_humidity_700",
|
| 75 |
+
"specific_humidity_850",
|
| 76 |
+
"specific_humidity_925",
|
| 77 |
+
"specific_humidity_1000"
|
| 78 |
+
],
|
| 79 |
+
"in_img_size": [
|
| 80 |
+
120,
|
| 81 |
+
240
|
| 82 |
+
],
|
| 83 |
+
"patch_size": 2,
|
| 84 |
+
"use_cnn_head": true,
|
| 85 |
+
"cnn_head_channels": 256,
|
| 86 |
+
"hidden_size": 384,
|
| 87 |
+
"depth": 12,
|
| 88 |
+
"num_heads": 6,
|
| 89 |
+
"mlp_ratio": 4.0,
|
| 90 |
+
"step_ratio": 0.5
|
| 91 |
+
}
|
| 92 |
+
}
|
model.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:4d9c715bb4ac0c29589dde4f66f3a4e8706958feb04ec6d5912bd413af144f7b
|
| 3 |
+
size 94337712
|
normalization_note.txt
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
For evaluation/inference you still need normalize_mean.npz / normalize_std.npz / normalize_diff_std_*.npz from the training repository (normalization_constants/).
|