File size: 2,974 Bytes
9c16f7b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
{
  "model_name": "WeatherNext2",
  "model_type": "fgn",
  "architectures": [
    "FGN"
  ],
  "framework": "PyTorch",
  "domain": "climate-and-atmosphere",
  "task": "probabilistic-weather-forecasting",
  "implementation": {
    "entry_point": "model/fgn.py",
    "scope": "minimal PyTorch FGN reproduction with regular-grid graph operations, conditional LayerNorm noise injection, autoregressive ensembles, and fair CRPS"
  },
  "architecture": {
    "family": "probabilistic GNN encoder, graph-Transformer processor, and GNN decoder",
    "attention_mechanism": "multi-head self-attention over a regular latent mesh with fixed wrap-around 8-neighbor graph message passing",
    "input_format": "BSTCHW",
    "output_format": "BMTCHW",
    "encoder": "per-cell MLP, adaptive pooling from the observation grid to the latent mesh, and GNN message passing",
    "processor": "graph-Transformer blocks conditioned by a sampled global noise vector",
    "decoder": "latent-mesh GNN, bilinear upsampling, and per-cell output MLP",
    "activation": "GELU",
    "normalization": "ConditionalLayerNorm",
    "repository_default_config": {
      "purpose": "small connectivity-validation configuration",
      "in_channels": 6,
      "out_channels": 6,
      "input_steps": 2,
      "output_steps": 2,
      "grid_shape": [
        32,
        32
      ],
      "mesh_shape": [
        8,
        8
      ],
      "latent_dim": 64,
      "num_encoder_layers": 2,
      "num_decoder_layers": 2,
      "num_processor_blocks": 2,
      "n_heads": 4,
      "hidden_dim": 64,
      "noise_dim": 32,
      "num_ensemble_models": 1,
      "num_members": 2,
      "channel_weights": [
        1,
        1,
        1,
        1,
        1,
        1
      ]
    },
    "paper_configuration": {
      "in_channels": 84,
      "out_channels": 84,
      "input_steps": 2,
      "output_steps": 60,
      "grid_shape": [
        721,
        1440
      ],
      "latent_mesh": "six-times-subdivided icosahedral grid with approximately 40,000 nodes",
      "latent_dim": 768,
      "num_processor_blocks": 24,
      "n_heads": 6,
      "noise_dim": 32,
      "num_ensemble_models": 4,
      "num_members_per_model": 14
    }
  },
  "data": {
    "dataset": "ERA5-format HDF5",
    "variables": [
      "2m_temperature",
      "10m_u_component_of_wind",
      "10m_v_component_of_wind",
      "mean_sea_level_pressure",
      "sea_surface_temperature",
      "total_precipitation"
    ],
    "frame_interval_hours": 6,
    "input_length": 2,
    "output_length": 2,
    "channels": 6,
    "default_smoke_spatial_size": [
      32,
      32
    ],
    "paper_spatial_size": [
      721,
      1440
    ],
    "paper_output_length": 60,
    "normalization": "per-channel means and standard deviations stored in HDF5"
  },
  "configuration_sources": [
    "conf/config.yaml",
    "model/fgn.py",
    "scripts/train.py",
    "scripts/inference.py",
    "scripts/fake_data.py",
    "README.md"
  ]
}