Upload models - u0bc3fi9
Browse files- README.md +20 -19
- data_config.yaml +125 -2
- model_config.yaml +29 -5
- model_weights.safetensors +2 -2
README.md
CHANGED
|
@@ -3,14 +3,14 @@ language: en
|
|
| 3 |
library_name: pytorch
|
| 4 |
license: mit
|
| 5 |
---
|
|
|
|
|
|
|
|
|
|
| 6 |
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
|
| 12 |
# PVNet2
|
| 13 |
|
|
|
|
| 14 |
## Model Description
|
| 15 |
|
| 16 |
<!-- Provide a longer summary of what this model is/does. -->
|
|
@@ -26,11 +26,17 @@ This model class uses satellite data, numerical weather predictions, and recent
|
|
| 26 |
|
| 27 |
## Data
|
| 28 |
|
| 29 |
-
<!--
|
|
|
|
|
|
|
|
|
|
|
|
|
| 30 |
|
| 31 |
-
The model is trained on data from 2019-
|
| 32 |
|
| 33 |
|
|
|
|
|
|
|
| 34 |
### Preprocessing
|
| 35 |
|
| 36 |
Data is prepared with the `ocf_data_sampler/torch_datasets/datasets/pvnet_uk` Dataset [2].
|
|
@@ -38,19 +44,17 @@ Data is prepared with the `ocf_data_sampler/torch_datasets/datasets/pvnet_uk` Da
|
|
| 38 |
|
| 39 |
## Results
|
| 40 |
|
|
|
|
| 41 |
The training logs for the current model can be found here:
|
| 42 |
-
- [https://wandb.ai/openclimatefix/pvnet2.1/runs/
|
| 43 |
-
|
| 44 |
-
|
| 45 |
-
The training logs for all model runs of PVNet2 can be found [here](https://wandb.ai/openclimatefix/pvnet2.1).
|
| 46 |
-
|
| 47 |
-
Some experimental notes can be found at in [the google doc](https://docs.google.com/document/d/1fbkfkBzp16WbnCg7RDuRDvgzInA6XQu3xh4NCjV-WDA/edit?usp=sharing)
|
| 48 |
|
| 49 |
|
|
|
|
| 50 |
### Hardware
|
| 51 |
|
| 52 |
Trained on a single NVIDIA Tesla T4
|
| 53 |
|
|
|
|
| 54 |
### Software
|
| 55 |
|
| 56 |
This model was trained using the following Open Climate Fix packages:
|
|
@@ -58,10 +62,7 @@ This model was trained using the following Open Climate Fix packages:
|
|
| 58 |
- [1] https://github.com/openclimatefix/PVNet
|
| 59 |
- [2] https://github.com/openclimatefix/ocf-data-sampler
|
| 60 |
|
|
|
|
| 61 |
The versions of these packages can be found below:
|
| 62 |
-
- pvnet==
|
| 63 |
-
- ocf-data-sampler==0.
|
| 64 |
-
|
| 65 |
-
|
| 66 |
-
---
|
| 67 |
-
**Migration Note**: This model was migrated on 2025-08-08 to pvnet version 5.0.3.post0+git.c5a17176.dirty
|
|
|
|
| 3 |
library_name: pytorch
|
| 4 |
license: mit
|
| 5 |
---
|
| 6 |
+
<!--
|
| 7 |
+
Do not remove elements like the above surrounded by two curly braces and do not add any more of them. These entries are required by the PVNet library and are automaticall infilled when the model is uploaded to huggingface
|
| 8 |
+
-->
|
| 9 |
|
| 10 |
+
<!-- Title - e.g. PVNet2, WindNet, PVNet India -->
|
|
|
|
|
|
|
|
|
|
|
|
|
| 11 |
# PVNet2
|
| 12 |
|
| 13 |
+
<!-- Provide a longer summary of what this model is/does. -->
|
| 14 |
## Model Description
|
| 15 |
|
| 16 |
<!-- Provide a longer summary of what this model is/does. -->
|
|
|
|
| 26 |
|
| 27 |
## Data
|
| 28 |
|
| 29 |
+
<!-- eg.
|
| 30 |
+
The model is trained on data from 2019-2022 and validated on data from 2022-2023. It uses NWP data from ECMWF IFS model, and the UK Met Office UKV model. It uses satellite data from the EUMETSAT MSG SEVIRI instrument.
|
| 31 |
+
|
| 32 |
+
See the data_config.yaml file for more information on the channels and window-size used for each input data source.
|
| 33 |
+
-->
|
| 34 |
|
| 35 |
+
The model is trained on data from 2019-2021 and validated on data from 2022. It uses NWP data from ECMWF IFS model, and the UK Met Office UKV model. It uses also uses inputs from OCF's cloudcasting model
|
| 36 |
|
| 37 |
|
| 38 |
+
|
| 39 |
+
<!-- The preprocessing section is not strictly nessessary but perhaps nice to have -->
|
| 40 |
### Preprocessing
|
| 41 |
|
| 42 |
Data is prepared with the `ocf_data_sampler/torch_datasets/datasets/pvnet_uk` Dataset [2].
|
|
|
|
| 44 |
|
| 45 |
## Results
|
| 46 |
|
| 47 |
+
<!-- Do not remove the lines below -->
|
| 48 |
The training logs for the current model can be found here:
|
| 49 |
+
- [https://wandb.ai/openclimatefix/pvnet2.1/runs/u0bc3fi9](https://wandb.ai/openclimatefix/pvnet2.1/runs/u0bc3fi9)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 50 |
|
| 51 |
|
| 52 |
+
<!-- The hardware section is also just nice to have -->
|
| 53 |
### Hardware
|
| 54 |
|
| 55 |
Trained on a single NVIDIA Tesla T4
|
| 56 |
|
| 57 |
+
<!-- Do not remove the section below -->
|
| 58 |
### Software
|
| 59 |
|
| 60 |
This model was trained using the following Open Climate Fix packages:
|
|
|
|
| 62 |
- [1] https://github.com/openclimatefix/PVNet
|
| 63 |
- [2] https://github.com/openclimatefix/ocf-data-sampler
|
| 64 |
|
| 65 |
+
<!-- Especially do not change the two lines below -->
|
| 66 |
The versions of these packages can be found below:
|
| 67 |
+
- pvnet==5.0.0.post1+git.f4f6bfed.dirty
|
| 68 |
+
- ocf-data-sampler==0.3.1
|
|
|
|
|
|
|
|
|
|
|
|
data_config.yaml
CHANGED
|
@@ -1,6 +1,5 @@
|
|
| 1 |
general:
|
| 2 |
-
description: Config for
|
| 3 |
-
name: PVNet current
|
| 4 |
input_data:
|
| 5 |
gsp:
|
| 6 |
boundaries_version: '20250109'
|
|
@@ -11,6 +10,73 @@ input_data:
|
|
| 11 |
time_resolution_minutes: 30
|
| 12 |
zarr_path: PLACEHOLDER.zarr
|
| 13 |
nwp:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 14 |
ukv:
|
| 15 |
channels:
|
| 16 |
- t
|
|
@@ -69,6 +135,63 @@ input_data:
|
|
| 69 |
provider: ukv
|
| 70 |
time_resolution_minutes: 60
|
| 71 |
zarr_path: PLACEHOLDER.zarr
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 72 |
solar_position:
|
| 73 |
interval_end_minutes: 480
|
| 74 |
interval_start_minutes: -120
|
|
|
|
| 1 |
general:
|
| 2 |
+
description: Config for producing batches for training PVNet+cloudcasting
|
|
|
|
| 3 |
input_data:
|
| 4 |
gsp:
|
| 5 |
boundaries_version: '20250109'
|
|
|
|
| 10 |
time_resolution_minutes: 30
|
| 11 |
zarr_path: PLACEHOLDER.zarr
|
| 12 |
nwp:
|
| 13 |
+
ecmwf:
|
| 14 |
+
accum_channels:
|
| 15 |
+
- dswrf
|
| 16 |
+
- dlwrf
|
| 17 |
+
- sr
|
| 18 |
+
- duvrs
|
| 19 |
+
channels:
|
| 20 |
+
- t2m
|
| 21 |
+
- dswrf
|
| 22 |
+
- dlwrf
|
| 23 |
+
- hcc
|
| 24 |
+
- mcc
|
| 25 |
+
- lcc
|
| 26 |
+
- tcc
|
| 27 |
+
- sd
|
| 28 |
+
- sr
|
| 29 |
+
- duvrs
|
| 30 |
+
- u10
|
| 31 |
+
- v10
|
| 32 |
+
dropout_fraction: 1.0
|
| 33 |
+
dropout_timedeltas_minutes:
|
| 34 |
+
- -360
|
| 35 |
+
image_size_pixels_height: 12
|
| 36 |
+
image_size_pixels_width: 12
|
| 37 |
+
interval_end_minutes: 480
|
| 38 |
+
interval_start_minutes: -120
|
| 39 |
+
max_staleness_minutes: null
|
| 40 |
+
normalisation_constants:
|
| 41 |
+
diff_dlwrf:
|
| 42 |
+
mean: 1136464.0
|
| 43 |
+
std: 131942.03125
|
| 44 |
+
diff_dswrf:
|
| 45 |
+
mean: 420584.6875
|
| 46 |
+
std: 715366.3125
|
| 47 |
+
diff_duvrs:
|
| 48 |
+
mean: 48265.4765625
|
| 49 |
+
std: 81605.25
|
| 50 |
+
diff_sr:
|
| 51 |
+
mean: 469169.5
|
| 52 |
+
std: 818950.6875
|
| 53 |
+
hcc:
|
| 54 |
+
mean: 0.3961029052734375
|
| 55 |
+
std: 0.42244860529899597
|
| 56 |
+
lcc:
|
| 57 |
+
mean: 0.44901806116104126
|
| 58 |
+
std: 0.3791404366493225
|
| 59 |
+
mcc:
|
| 60 |
+
mean: 0.3288780450820923
|
| 61 |
+
std: 0.38039860129356384
|
| 62 |
+
sd:
|
| 63 |
+
mean: 8.107526082312688e-05
|
| 64 |
+
std: 0.000913831521756947
|
| 65 |
+
t2m:
|
| 66 |
+
mean: 283.48333740234375
|
| 67 |
+
std: 3.692270040512085
|
| 68 |
+
tcc:
|
| 69 |
+
mean: 0.7049227356910706
|
| 70 |
+
std: 0.37487083673477173
|
| 71 |
+
u10:
|
| 72 |
+
mean: 1.7677178382873535
|
| 73 |
+
std: 5.531515598297119
|
| 74 |
+
v10:
|
| 75 |
+
mean: 0.985887885093689
|
| 76 |
+
std: 5.411230564117432
|
| 77 |
+
provider: ecmwf
|
| 78 |
+
time_resolution_minutes: 60
|
| 79 |
+
zarr_path: PLACEHOLDER.zarr
|
| 80 |
ukv:
|
| 81 |
channels:
|
| 82 |
- t
|
|
|
|
| 135 |
provider: ukv
|
| 136 |
time_resolution_minutes: 60
|
| 137 |
zarr_path: PLACEHOLDER.zarr
|
| 138 |
+
sat_pred:
|
| 139 |
+
provider: cloudcasting
|
| 140 |
+
zarr_path: PLACEHOLDER.zarr
|
| 141 |
+
interval_start_minutes: 15
|
| 142 |
+
interval_end_minutes: 180
|
| 143 |
+
time_resolution_minutes: 15
|
| 144 |
+
image_size_pixels_height: 24
|
| 145 |
+
image_size_pixels_width: 24
|
| 146 |
+
dropout_timedeltas_minutes: []
|
| 147 |
+
dropout_fraction: 0
|
| 148 |
+
max_staleness_minutes: null
|
| 149 |
+
channels:
|
| 150 |
+
- IR_016
|
| 151 |
+
- IR_039
|
| 152 |
+
- IR_087
|
| 153 |
+
- IR_097
|
| 154 |
+
- IR_108
|
| 155 |
+
- IR_120
|
| 156 |
+
- IR_134
|
| 157 |
+
- VIS006
|
| 158 |
+
- VIS008
|
| 159 |
+
- WV_062
|
| 160 |
+
- WV_073
|
| 161 |
+
normalisation_constants:
|
| 162 |
+
IR_016:
|
| 163 |
+
mean: 0.17594202
|
| 164 |
+
std: 0.21462157
|
| 165 |
+
IR_039:
|
| 166 |
+
mean: 0.86167645
|
| 167 |
+
std: 0.04618041
|
| 168 |
+
IR_087:
|
| 169 |
+
mean: 0.7719318
|
| 170 |
+
std: 0.06687243
|
| 171 |
+
IR_097:
|
| 172 |
+
mean: 0.8014212
|
| 173 |
+
std: 0.0468558
|
| 174 |
+
IR_108:
|
| 175 |
+
mean: 0.71254843
|
| 176 |
+
std: 0.17482725
|
| 177 |
+
IR_120:
|
| 178 |
+
mean: 0.89058584
|
| 179 |
+
std: 0.06115861
|
| 180 |
+
IR_134:
|
| 181 |
+
mean: 0.944365
|
| 182 |
+
std: 0.04492306
|
| 183 |
+
VIS006:
|
| 184 |
+
mean: 0.09633306
|
| 185 |
+
std: 0.12184761
|
| 186 |
+
VIS008:
|
| 187 |
+
mean: 0.11426069
|
| 188 |
+
std: 0.13090034
|
| 189 |
+
WV_062:
|
| 190 |
+
mean: 0.7359355
|
| 191 |
+
std: 0.16111417
|
| 192 |
+
WV_073:
|
| 193 |
+
mean: 0.62479186
|
| 194 |
+
std: 0.12924142
|
| 195 |
solar_position:
|
| 196 |
interval_end_minutes: 480
|
| 197 |
interval_start_minutes: -120
|
model_config.yaml
CHANGED
|
@@ -7,6 +7,7 @@ output_quantiles:
|
|
| 7 |
- 0.75
|
| 8 |
- 0.9
|
| 9 |
- 0.98
|
|
|
|
| 10 |
nwp_encoders_dict:
|
| 11 |
ukv:
|
| 12 |
_target_: pvnet.models.late_fusion.encoders.encoders3d.DefaultPVNet
|
|
@@ -16,8 +17,26 @@ nwp_encoders_dict:
|
|
| 16 |
number_of_conv3d_layers: 6
|
| 17 |
conv3d_channels: 32
|
| 18 |
image_size_pixels: 24
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 19 |
sat_encoder: null
|
| 20 |
-
add_image_embedding_channel: false
|
| 21 |
pv_encoder: null
|
| 22 |
output_network:
|
| 23 |
_target_: pvnet.models.late_fusion.linear_networks.networks.ResFCNet
|
|
@@ -31,13 +50,18 @@ include_sun: true
|
|
| 31 |
include_gsp_yield_history: false
|
| 32 |
forecast_minutes: 480
|
| 33 |
history_minutes: 120
|
| 34 |
-
min_sat_delay_minutes: 30
|
| 35 |
-
sat_history_minutes: 60
|
| 36 |
-
pv_history_minutes: 180
|
| 37 |
nwp_history_minutes:
|
| 38 |
ukv: 120
|
|
|
|
|
|
|
| 39 |
nwp_forecast_minutes:
|
| 40 |
ukv: 480
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 41 |
location_id_mapping:
|
| 42 |
1: 1
|
| 43 |
2: 2
|
|
@@ -370,4 +394,4 @@ location_id_mapping:
|
|
| 370 |
340: 329
|
| 371 |
341: 330
|
| 372 |
342: 331
|
| 373 |
-
adapt_batches:
|
|
|
|
| 7 |
- 0.75
|
| 8 |
- 0.9
|
| 9 |
- 0.98
|
| 10 |
+
add_image_embedding_channel: false
|
| 11 |
nwp_encoders_dict:
|
| 12 |
ukv:
|
| 13 |
_target_: pvnet.models.late_fusion.encoders.encoders3d.DefaultPVNet
|
|
|
|
| 17 |
number_of_conv3d_layers: 6
|
| 18 |
conv3d_channels: 32
|
| 19 |
image_size_pixels: 24
|
| 20 |
+
ecmwf:
|
| 21 |
+
_target_: pvnet.models.late_fusion.encoders.encoders3d.DefaultPVNet
|
| 22 |
+
_partial_: true
|
| 23 |
+
in_channels: 12
|
| 24 |
+
out_features: 256
|
| 25 |
+
number_of_conv3d_layers: 4
|
| 26 |
+
conv3d_channels: 32
|
| 27 |
+
image_size_pixels: 12
|
| 28 |
+
sat_pred:
|
| 29 |
+
_target_: pvnet.models.late_fusion.encoders.encoders3d.ResConv3DNet
|
| 30 |
+
_partial_: true
|
| 31 |
+
in_channels: 11
|
| 32 |
+
out_features: 256
|
| 33 |
+
image_size_pixels: 24
|
| 34 |
+
hidden_channels: 32
|
| 35 |
+
n_res_blocks: 3
|
| 36 |
+
res_block_layers: 3
|
| 37 |
+
batch_norm: true
|
| 38 |
+
dropout_frac: 0.0
|
| 39 |
sat_encoder: null
|
|
|
|
| 40 |
pv_encoder: null
|
| 41 |
output_network:
|
| 42 |
_target_: pvnet.models.late_fusion.linear_networks.networks.ResFCNet
|
|
|
|
| 50 |
include_gsp_yield_history: false
|
| 51 |
forecast_minutes: 480
|
| 52 |
history_minutes: 120
|
|
|
|
|
|
|
|
|
|
| 53 |
nwp_history_minutes:
|
| 54 |
ukv: 120
|
| 55 |
+
ecmwf: 120
|
| 56 |
+
sat_pred: -15
|
| 57 |
nwp_forecast_minutes:
|
| 58 |
ukv: 480
|
| 59 |
+
ecmwf: 480
|
| 60 |
+
sat_pred: 180
|
| 61 |
+
nwp_interval_minutes:
|
| 62 |
+
ukv: 60
|
| 63 |
+
ecmwf: 60
|
| 64 |
+
sat_pred: 15
|
| 65 |
location_id_mapping:
|
| 66 |
1: 1
|
| 67 |
2: 2
|
|
|
|
| 394 |
340: 329
|
| 395 |
341: 330
|
| 396 |
342: 331
|
| 397 |
+
adapt_batches: false
|
model_weights.safetensors
CHANGED
|
@@ -1,3 +1,3 @@
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:
|
| 3 |
-
size
|
|
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:1e4c41f2ed9186132832d1e15cdb96062248180f9da828cff8bb837ea1678008
|
| 3 |
+
size 35975432
|