File size: 2,517 Bytes
92d0b3f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
# GraphDOP 训练配置示例
# 论文配置:输入一个 12 小时观测窗口(O96 reduced Gaussian 网格约 1°、40320 潜节点),
# 经 GNN 编码器映射到潜网格、Transformer 处理器推进时间、GNN 解码器预测下一窗口观测;
# 潜空间通道 1024,WMSE 目标,18 年数据(2004-2021)训练,64×H100 70k 步。
# 当前为连通性验证小配置:虚拟数据 32×32 网格、潜网格 8×8、latent_dim=64。
model:
  start_epoch: 0
  max_epoch: 100
  lr: 1E-3                 # 论文起始 lr=1e-3,cosine 退火到 3e-7(warmup 1000 步)
  patience: 50
  checkpoint_dir: "./data/checkpoints"

  # GraphDOP 结构参数(论文值见注释)
  in_channels: 6           # 观测通道数(论文为多仪器通道,如 ATMS/AMSU-A/IASI 等)
  out_channels: 6          # 预报通道数
  input_steps: 2           # 输入窗口帧数(论文为单个 12h 窗口;time_step=6h 故取 2 帧)
  output_steps: 2          # 输出窗口帧数(论文为下一个 12h 窗口)
  grid_shape: [32, 32]     # 观测网格尺寸(论文 O96 约 1°)
  mesh_shape: [8, 8]       # 潜网格尺寸(论文 O96 reduced Gaussian 40320 节点)
  latent_dim: 64           # 潜空间通道数(论文 1024)
  num_encoder_layers: 2    # 编码器 GNN 消息传递层数
  num_decoder_layers: 2    # 解码器 GNN 消息传递层数
  num_processor_blocks: 1  # 处理器 Transformer 块数
  n_heads: 4
  hidden_dim: 64
  channel_weights: [1, 1, 1, 1, 1, 1]  # WMSE 逐通道权重(论文 w_{c,i} 经验值)

# 整个数据读取流程
datapipe:
  name: "ERA5"
  task: "weather_forecasting"

  dataset:
    type: "hdf5"
    data_dir: './data/'
    train_time: [1951, 1952]
    val_time: [1953]
    test_time: [1954]
    img_size: [32, 32]
    verbose: true
    cache: false

    # 气象变量(论文观测类型占位:ATMS 亮温/掩星弯角/散射计后向散射/雷达高度计有效波高/常规观测)
    channels: ['atms_brightness_temperature', 'gpsro_bending_angle', 'ascat_sigma0',
               'significant_wave_height', '2m_temperature', '10m_wind_speed']

  # DataLoader 配置
  dataloader:
    mask_dtype: "float32"
    batch_size: 4
    num_workers: 1
    pin_memory: true
    drop_last: true
    shuffle: false
    prefetch_factor: 2
    persistent_workers: true

  # 分布式配置
  distributed:
    enabled: true
    sampler: "DistributedSampler"
    rank: 0
    world_size: 2
    shuffle: true
    seed: 42
    drop_last: true