Francismj commited on
Commit
1fdde4f
·
verified ·
1 Parent(s): 9eb5d67

Upload folder using huggingface_hub

Browse files
Files changed (4) hide show
  1. README.md +37 -0
  2. config.json +92 -0
  3. model.safetensors +3 -0
  4. 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/).