File size: 5,029 Bytes
d6d123e |
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 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 |
# --------------------------------------------------------------------------------------------------------------------- #
# This yaml file implements 6 hourly FuXi on NSF NCAR HPCs (casper.ucar.edu and derecho.hpc.ucar.edu)
# the FuXi architecture has been modified to reduce the overall model size
# The model is trained on hourly model-level ERA5 data with top solar irradiance, geopotential, and land-sea mask inputs
# Output variables: model level [U, V, T, Q], single level [SP, t2m], and 500 hPa [U, V, T, Z, Q]
#
# Yingkai Sha
# [email protected]
# --------------------------------------------------------------------------------------------------------------------- #
save_loc: '/glade/work/ksha/CREDIT_runs/fuxi_6h/'
seed: 1000
data:
# upper-air variables
variables: ['U','V','T','Q']
save_loc: '/glade/derecho/scratch/ksha/CREDIT_data/ERA5_mlevel_arXiv/SixHourly_y*'
# surface variables
surface_variables: ['SP','t2m','V500','U500','T500','Z500','Q500']
save_loc_surface: '/glade/derecho/scratch/ksha/CREDIT_data/ERA5_mlevel_arXiv/SixHourly_y*'
# dynamic forcing variables
dynamic_forcing_variables: ['tsi']
save_loc_dynamic_forcing: '/glade/derecho/scratch/dgagne/credit_solar_6h_0.25deg/*.nc'
# static variables
static_variables: ['Z_GDS4_SFC','LSM']
save_loc_static: '/glade/derecho/scratch/ksha/CREDIT_data/static_norm_old.nc'
# mean / std path
mean_path: '/glade/derecho/scratch/ksha/CREDIT_data/mean_6h_1979_2018_16lev_0.25deg.nc'
std_path: '/glade/derecho/scratch/ksha/CREDIT_data/std_residual_6h_1979_2018_16lev_0.25deg.nc'
# train / validation split
train_years: [1979, 2018]
valid_years: [2018, 2019]
# data workflow
scaler_type: 'std_new'
# number of input states
# FuXi has 2 input states
history_len: 2
valid_history_len: 2
# number of forecast steps to compute loss
# 0 for single step training / validation
# larger than 0 for multi-step training / validation
forecast_len: 0
valid_forecast_len: 0
# 1 for hourly model
lead_time_periods: 6
# do not use skip_period
skip_periods: null
# compatible with the old 'std'
static_first: True
trainer:
type: standard
mode: fsdp
model:
type: "fuxi"
frames: 2 # number of input states
image_height: 640 # number of latitude grids
image_width: 1280 # number of longitude grids
levels: 16 # number of upper-air variable levels
channels: 4 # upper-air variable channels
surface_channels: 7 # surface variable channels
input_only_channels: 3 # dynamic forcing, forcing, static channels
output_only_channels: 0 # diagnostic variable channels
# patchify layer
patch_height: 4 # number of latitude grids in each 3D patch
patch_width: 4 # number of longitude grids in each 3D patch
frame_patch_size: 2 # number of input states in each 3D patch
# hidden layers
dim: 1024 # dimension (default: 1536)
num_groups: 32 # number of groups (default: 32)
num_heads: 8 # number of heads (default: 8)
window_size: 7 # window size (default: 7)
depth: 16 # number of swin transformers (default: 48)
# use spectral norm
use_spectral_norm: True
# ============================================================== #
# New
# use interpolation to match the output size
interp: True
# map boundary padding
padding_conf:
activate: True
mode: earth
pad_lat: 80
pad_lon: 80
post_conf:
activate: True
tracer_fixer:
activate: True
denorm: True
tracer_name: ['Q', 'Q500']
tracer_thres: [1e-8, 1e-8]
loss:
use_latitude_weights: True
latitude_weights: "/glade/u/home/wchapman/MLWPS/DataLoader/LSM_static_variables_ERA5_zhght.nc"
predict:
forecasts:
type: "custom" # keep it as "custom"
start_year: 2021 # year of the first initialization (where rollout will start)
start_month: 12 # month of the first initialization
start_day: 31 # day of the first initialization
start_hours: [0, 12] # hour-of-day for each initialization, 0 for 00Z, 12 for 12Z
duration: 384 # number of days to initialize, starting from the (year, mon, day) above
# duration should be divisible by the number of GPUs
# (e.g., duration: 384 for 365-day rollout using 32 GPUs)
days: 10 # forecast lead time as days (1 means 24-hour forecast)
metadata: '/glade/u/home/ksha/miles-credit/credit/metadata/era5.yaml'
save_forecast: '/glade/derecho/scratch/ksha/CREDIT/RAW_OUTPUT/fuxi_6h_test/'
# turn-off low-pass filter
use_laplace_filter: False
|