Reference configuration¶
The full default configuration composed from icenet_mp/config/base.yaml and all its sub-configs.
This is the configuration used when you run any command without overrides.
Note
Interpolation markers such as ${base_path} are left unresolved so you can see exactly which keys reference shared values.
Set base_path in your local config file to point to your data directory.
Named model configs¶
The model section below shows the default (naive-unet-naive).
Alternative model configs live in icenet_mp/config/model/ and can be selected with:
Full config¶
data:
datasets:
samp-floatsouth-argo-25p0km-2020-2024-24h-v3:
name: samp-floatsouth-argo-25p0km-2020-2024-24h-v3
group_as: float-argo
description: ARGO float data for southern hemisphere
attribution: ARGO
licence: CC-BY-4.0
dates:
start: '2020-01-01T12:00:00'
end: '2024-07-31T12:00:00'
frequency: 24h
missing:
- start: '2022-01-01T12:00:00'
end: '2022-06-30T12:00:00'
- start: '2022-08-01T12:00:00'
end: '2022-12-31T12:00:00'
- start: '2023-02-01T12:00:00'
end: '2023-12-31T12:00:00'
- start: '2024-02-01T12:00:00'
end: '2024-06-30T12:00:00'
input:
pipe:
- argo:
area: 0/-180/-90/180
crs: EPSG:6932
param:
- TEMP
- PSAL
resolution: 25p0km
shape:
- 432
- 432
- nan-to-num:
variables:
- TEMP
- PSAL
replace_with: 99
- set-geography:
crs: ${...0.argo.crs}
resolution: ${...0.argo.resolution}
samp-sicsouth-osisaf-25p0km-2020-2024-24h-v1:
name: samp-sicsouth-osisaf-25p0km-2020-2024-24h-v1
group_as: sic-osisaf
description: Sea ice concentration from SMMR/SSMI/SSMIS + AMSR-E/AMSR-2 + AMSR2
for southern hemisphere
attribution: EUMETSAT/OSISAF
licence: CC-BY-4.0
dates:
start: '2020-01-01T12:00:00'
end: '2024-07-31T12:00:00'
frequency: 24h
missing:
- start: '2022-01-01T12:00:00'
end: '2022-06-30T12:00:00'
- start: '2022-08-01T12:00:00'
end: '2022-12-31T12:00:00'
- start: '2023-02-01T12:00:00'
end: '2023-12-31T12:00:00'
- start: '2024-02-01T12:00:00'
end: '2024-06-30T12:00:00'
postprocessors:
mask_generator:
_target_: icenet_mp.ingestion.postprocessors.StatusFlagMaskGenerator
input:
pipe:
- concat:
- dates:
start: '2012-07-24T12:00:00'
end: '2020-12-31T12:00:00'
frequency: 24h
ftp:
url: ftp://osisaf.met.no/reprocessed/ice/conc_amsr/v3p0/{date:strftime(%Y)}/{date:strftime(%m)}/ice_conc_sh_ease2-250_cdr-v3p0-amsr_{date:strftime(%Y%m%d)}1200.nc
- dates:
start: '2021-01-01T12:00:00'
end: '2025-12-31T12:00:00'
frequency: 24h
ftp:
url: ftp://osisaf.met.no/reprocessed/ice/conc-cont-reproc-amsr/v3p0/{date:strftime(%Y)}/{date:strftime(%m)}/ice_conc_sh_ease2-250_icdr-v3p0-amsr_{date:strftime(%Y%m%d)}1200.nc
- drop:
param:
- algorithm_standard_uncertainty
- raw_ice_conc_values
- smearing_standard_uncertainty
- rescale:
scale: 0.01
offset: 0.0
param: ice_conc
- rescale:
scale: 0.01
offset: 0.0
param: total_standard_uncertainty
- nan-to-num:
variables:
- ice_conc
- total_standard_uncertainty
replace_with: 0.0
- set-geography:
crs: EPSG:6932
resolution: 25p0km
samp-weathersouth-era5-25p0km-2020-2024-24h-v4:
name: samp-weathersouth-era5-25p0km-2020-2024-24h-v4
group_as: era5
description: Weather from ERA5 for partial southern hemisphere
attribution: ECMWF/C3S
licence: CC-BY-4.0
dates:
start: '2020-01-01T12:00:00'
end: '2024-07-31T12:00:00'
frequency: 24h
missing:
- start: '2022-01-01T12:00:00'
end: '2022-06-30T12:00:00'
- start: '2022-08-01T12:00:00'
end: '2022-12-31T12:00:00'
- start: '2023-02-01T12:00:00'
end: '2023-12-31T12:00:00'
- start: '2024-02-01T12:00:00'
end: '2024-06-30T12:00:00'
input:
pipe:
- join:
- mars:
use_cdsapi_dataset: reanalysis-era5-complete
area: -15/-180/-90/180
grid: 0.25 / 0.25
levtype: sfc
param:
- 2t
- sp
- 10u
- 10v
- msl
- mars:
use_cdsapi_dataset: reanalysis-era5-complete
area: -15/-180/-90/180
grid: 0.25 / 0.25
level:
- 10
- 250
- 500
- 1000
levtype: pl
param:
- z
- t
- q
- u
- v
- forcings:
param:
- cos_julian_day
- insolation
- sin_julian_day
template: \${input.pipe.0.join.0.mars}
- reproject:
crs: EPSG:6932
resolution: 25p0km
shape:
- 432
- 432
split:
batch_size: 2
predict:
- start: null
end: null
test:
- start: '2024-01-01'
end: '2024-01-31'
- start: '2024-07-01'
end: '2024-07-31'
train:
- start: '2020-01-01'
end: '2021-12-31'
validate:
- start: '2022-07-01'
end: '2022-07-31'
- start: '2023-01-01'
end: '2023-01-31'
evaluate:
callbacks:
activation_saver:
_target_: icenet_mp.callbacks.ActivationSaver
layer_paths: []
output_dir: ${base_path}/evaluation/activations/
metric_summary:
_target_: icenet_mp.callbacks.MetricSummaryCallback
plotting:
_target_: icenet_mp.callbacks.PlottingCallback
frequency:
number: 3
make_input_plots: false
make_static_plots: true
make_video_plots: true
trainer: ${train.trainer}
loggers:
wandb:
_target_: lightning.pytorch.loggers.wandb.WandbLogger
entity: turing-seaice
log_model: false
name: null
offline: false
save_dir: ${base_path}/training/
loss:
_target_: icenet_mp.losses.amse_loss.AMSELoss
mode: hybrid
spectral_weight: 0.1
delta: 0.5
merge_bins_below: 4
eps: 1.0e-12
wavenumber_weight: null
model:
_target_: icenet_mp.models.EncodeProcessDecode
name: quick-test
encoders:
latent_space:
- 128
- 128
era5:
_target_: icenet_mp.models.encoders.NaiveLinearEncoder
float-argo:
_target_: icenet_mp.models.encoders.NaiveLinearEncoder
sic-osisaf:
_target_: icenet_mp.models.encoders.NaiveLinearEncoder
sic-ssmis:
_target_: icenet_mp.models.encoders.NaiveLinearEncoder
processor:
_target_: icenet_mp.models.processors.UNetProcessor
start_out_channels: 64
decoder:
_target_: icenet_mp.models.decoders.NaiveLinearDecoder
mask_type: active
restrict_range: sigmoid
skip_connection:
method: none
predict:
target:
group_name: sic-osisaf
variables:
- ice_conc
n_forecast_steps: 2
n_history_steps: 3
random:
seed: null
fully_deterministic: false
train:
callbacks:
best_checkpoint:
_target_: lightning.pytorch.callbacks.ModelCheckpoint
monitor: validation_loss
mode: min
save_top_k: 1
save_last: true
early_stopping:
_target_: lightning.pytorch.callbacks.EarlyStopping
monitor: validation_loss
mode: min
patience: 20
ema_weight_averaging:
_target_: icenet_mp.callbacks.EMAWeightAveragingCallback
decay_rate: 0.999
every_n_epochs: 1
every_n_steps: 100
learning_rate:
_target_: lightning.pytorch.callbacks.LearningRateMonitor
metric_summary:
_target_: icenet_mp.callbacks.MetricSummaryCallback
plotting:
_target_: icenet_mp.callbacks.PlottingCallback
frequency:
number: 3
make_input_plots: false
make_static_plots: true
make_video_plots: false
plot_spec:
dpi: 72
lr_scheduler:
frequency: 1
interval: epoch
name: learning-rate
multistage:
finetune:
optimizer:
lr: 0.0005
optimizer:
_target_: torch.optim.AdamW
lr: 0.005
weight_decay: 0.01
scheduler:
_target_: torch.optim.lr_scheduler.CosineAnnealingLR
eta_min: 1.0e-06
T_max: ${..trainer.max_epochs}
trainer:
_target_: lightning.pytorch.trainer.trainer.Trainer
accelerator: auto
devices: auto
gradient_clip_val: 1.0
log_every_n_steps: 50
max_epochs: 50
strategy: auto
base_path: ../base