| # ============================================================================= | |
| # AIFS v1.1 β Configuration | |
| # ============================================================================= | |
| # βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| # Data (most frequently modified) | |
| # βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| data: | |
| data_dir: "./fake_era5" # ERA5 H5 root (contains data/{year}.h5) | |
| # data_dir: "/work2/share/sugonhpcapp01/ERA5" | |
| train_years: # training set | |
| - 2005 | |
| - 2006 | |
| val_years: # validation set | |
| - 2007 | |
| test_years: # test / inference set | |
| - 2008 | |
| test_lead_time: 24 # hours (240 = 10 days, official default) | |
| fake_data_nt: 60 # timesteps per fake-data year | |
| # βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| # Hardware | |
| # βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| hardware: | |
| device: "dcu" | |
| device_ids: "0" | |
| # βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| # Checkpoint | |
| # βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| checkpoint: | |
| pretrained: "./weights/model_bak.ckpt" # official AIFS v1.1 checkpoint (relative to aifs_v11/) | |
| output_dir: "./weights" | |
| # βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| # Model (model/aifs.py β onescience-style wrapper) | |
| # βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| model: | |
| module: "model.aifs.AIFS" # Python import path | |
| description: >- | |
| Wraps AnemoiModelEncProcDec (encoder-processor-decoder GNN) loaded from | |
| the pretrained checkpoint. Exposes input/output variable ordering, | |
| N320 grid coordinates, and node weights via public properties. | |
| # βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| # Output | |
| # βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| output: | |
| inference_dir: "./output" | |
| plot_dir: "./plots" | |
| # βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| # Training (config_pretraining.yaml) | |
| # βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| training: | |
| batch_size: 1 | |
| from_scratch: true # true: random weights (like FengWu/Fuxi); false: load pretrained | |
| accum_grad_batches: 1 | |
| max_steps: 5 | |
| warmup_steps: 0 | |
| peak_lr: 3.125e-5 | |
| min_lr: 3.0e-7 | |
| precision: "16-mixed" | |
| amp_dtype: "float16" # "float16" or "bfloat16" (DCU may need bfloat16) | |
| gradient_clip_val: 32.0 | |
| gradient_clip_algorithm: "value" | |
| multistep_input: 2 | |
| seed: 42 | |
| optimizer: | |
| betas: [0.9, 0.95] | |
| weight_decay: 0.01 # official AdamW weight_decay | |
| lr_schedule: | |
| type: "cosine" | |
| warmup: 1000 | |
| iterations: 260000 | |
| log_interval: 100 | |
| val_interval: 500 | |
| save_interval: 5000 | |
| # βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| # Normalizer (config_pretraining.yaml data.normalizer) | |
| # βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| normalizer: | |
| default: "mean-std" | |
| statistics_path: "weights/era5_stats.npz" # auto-computed if missing; set "" for identity (fake data) | |
| remap: | |
| cp: "tp" | |
| sf: "tp" | |
| std: | |
| - tp | |
| - cp | |
| - sf | |
| - ro | |
| - tcw | |
| - ssrd | |
| - q_50 | |
| - q_100 | |
| - q_150 | |
| - q_200 | |
| - q_250 | |
| - q_300 | |
| - q_400 | |
| - q_500 | |
| - q_600 | |
| - q_700 | |
| - q_850 | |
| - q_925 | |
| - q_1000 | |
| max: | |
| - sdor | |
| - slor | |
| - z | |
| none: | |
| - cos_latitude | |
| - cos_longitude | |
| - sin_latitude | |
| - sin_longitude | |
| - cos_julian_day | |
| - cos_local_time | |
| - sin_julian_day | |
| - sin_local_time | |
| - insolation | |
| - lsm | |
| - tcc | |
| - mcc | |
| - hcc | |
| - lcc | |
| - swvl1 | |
| - swvl2 | |
| # βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| # Loss scaling (config_pretraining.yaml training.variable_loss_scaling) | |
| # βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| loss_scaling: | |
| default: 1 | |
| pl: | |
| q: 0.6 | |
| t: 6 | |
| u: 0.8 | |
| v: 0.5 | |
| w: 0.001 | |
| z: 12 | |
| sfc: | |
| sp: 10 | |
| 10u: 0.5 | |
| 10v: 0.5 | |
| 100u: 0.1 | |
| 100v: 0.1 | |
| 2d: 0.5 | |
| tp: 0.025 | |
| cp: 0.0025 | |
| ro: 0.0025 | |
| sf: 0.025 | |
| tcc: 0.1 | |
| mcc: 0.1 | |
| lcc: 0.1 | |
| hcc: 0.1 | |
| swvl2: 2 | |
| swvl1: 1 | |
| stl2: 10 | |
| stl1: 1 | |
| ssrd: 0.05 | |
| strd: 0.1 | |
| pressure_level_scaler: | |
| minimum: 0.2 | |
| slope: 0.001 | |
| # βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| # AIFS variable definitions (immutable β from official checkpoint) | |
| # βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| aifs_variables: | |
| surface: | |
| - 10u | |
| - 10v | |
| - 2d | |
| - 2t | |
| - msl | |
| - skt | |
| - sp | |
| - tcw | |
| - lsm | |
| - z | |
| - slor | |
| - sdor | |
| soil: | |
| - stl1 | |
| - stl2 | |
| - swvl1 | |
| - swvl2 | |
| pressure_level: | |
| - z | |
| - t | |
| - u | |
| - v | |
| - w | |
| - q | |
| pressure_levels: | |
| - 50 | |
| - 100 | |
| - 150 | |
| - 200 | |
| - 250 | |
| - 300 | |
| - 400 | |
| - 500 | |
| - 600 | |
| - 700 | |
| - 850 | |
| - 925 | |
| - 1000 | |
| diagnostic: | |
| - tp | |
| - cp | |
| - sf | |
| - tcc | |
| - hcc | |
| - lcc | |
| - mcc | |
| - ro | |
| - ssrd | |
| - strd | |
| - 100u | |
| - 100v | |
| computed_forcing: | |
| - cos_latitude | |
| - cos_longitude | |
| - sin_latitude | |
| - sin_longitude | |
| - cos_julian_day | |
| - cos_local_time | |
| - sin_julian_day | |
| - sin_local_time | |
| - insolation | |
| # βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| # ERA5 H5 β AIFS variable-name mapping | |
| # βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| # Keys = canonical AIFS names (DO NOT CHANGE). | |
| # Values = ERA5 H5 variable names (update to match your H5). | |
| era5_mapping: | |
| surface: | |
| 10u: "10m_u_component_of_wind" | |
| 10v: "10m_v_component_of_wind" | |
| 2d: "2m_dewpoint_temperature" | |
| 2t: "2m_temperature" | |
| msl: "mean_sea_level_pressure" | |
| skt: "skin_temperature" | |
| sp: "surface_pressure" | |
| tcw: "total_column_water" | |
| lsm: "land_sea_mask" | |
| z: "geopotential" | |
| slor: "slope_of_sub_gridscale_orography" | |
| sdor: "standard_deviation_of_orography" | |
| soil: | |
| stl1: "soil_temperature_level_1" | |
| stl2: "soil_temperature_level_2" | |
| swvl1: "volumetric_soil_water_layer_1" | |
| swvl2: "volumetric_soil_water_layer_2" | |
| pressure_level: | |
| z: "geopotential_{level}" | |
| t: "temperature_{level}" | |
| u: "u_component_of_wind_{level}" | |
| v: "v_component_of_wind_{level}" | |
| w: "vertical_velocity_{level}" | |
| q: "specific_humidity_{level}" | |
| diagnostic: | |
| tp: "total_precipitation" | |
| cp: "convective_precipitation" | |
| sf: "snowfall_water_equivalent" | |
| tcc: "total_cloud_cover" | |
| hcc: "high_cloud_cover" | |
| lcc: "low_cloud_cover" | |
| mcc: "medium_cloud_cover" | |
| ro: "runoff" | |
| ssrd: "surface_solar_radiation_downwards" | |
| strd: "surface_thermal_radiation_downwards" | |
| 100u: "100m_u_component_of_wind" | |
| 100v: "100m_v_component_of_wind" | |
| fuzzy_fixes: | |
| surface_solar_radiation_downwards: "surface_solar_radiation" | |
| total_column_water_vapour: "total_column_water" | |