File size: 4,249 Bytes
2862bae
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
model:

    start_epoch: 0
    max_epoch: 1
    train_lr: 2.5E-4
    finetune_lr: 1E-7
    patch_size: [2, 4, 4]
    embed_dim: 1536
    num_groups: 32
    num_heads: 8 
    window_size: 7
    short_num_steps: 20
    medium_num_steps: 40
    long_num_steps: 60
    finetune_step: 1
    step_change_freq: 200
    input_steps: 2
    num_blocks: 8
    checkpoint_dir : "./data/checkpoints"
    patience: 50

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

  # dataset设定
  dataset:
    type: "hdf5"
    data_dir: './data/' # "$ONESCIENCE_DATASETS_DIR/ERA5/newh5/" 
    train_time: [2000,2001]
    val_time: [2022]
    test_time: [2023] 
    img_size: [2, 721, 1440]
    verbose: true
    cache: false
    # 气象变量

    channels:  ['10m_u_component_of_wind', '10m_v_component_of_wind', '2m_temperature', 'mean_sea_level_pressure', 'total_precipitation',
                'geopotential_50', 'geopotential_100', 'geopotential_150', 'geopotential_200', 'geopotential_250', 
                'geopotential_300', 'geopotential_400', 'geopotential_500', 'geopotential_600', 'geopotential_700', 
                'geopotential_850', 'geopotential_925', 'geopotential_1000',
                'relative_humidity_50',  'relative_humidity_100', 'relative_humidity_150', 'relative_humidity_200', 'relative_humidity_250', 
                'relative_humidity_300', 'relative_humidity_400', 'relative_humidity_500', 'relative_humidity_600', 'relative_humidity_700', 
                'relative_humidity_850','relative_humidity_925', 'relative_humidity_1000',
                'u_component_of_wind_50', 'u_component_of_wind_100', 'u_component_of_wind_150', 'u_component_of_wind_200', 'u_component_of_wind_250', 
                'u_component_of_wind_300', 'u_component_of_wind_400', 'u_component_of_wind_500', 'u_component_of_wind_600','u_component_of_wind_700', 
                'u_component_of_wind_850', 'u_component_of_wind_925', 'u_component_of_wind_1000',
                'v_component_of_wind_50', 'v_component_of_wind_100', 'v_component_of_wind_150', 'v_component_of_wind_200', 'v_component_of_wind_250', 
                'v_component_of_wind_300', 'v_component_of_wind_400', 'v_component_of_wind_500', 'v_component_of_wind_600','v_component_of_wind_700', 
                'v_component_of_wind_850', 'v_component_of_wind_925', 'v_component_of_wind_1000',
                'temperature_50', 'temperature_100', 'temperature_150', 'temperature_200', 'temperature_250', 
                'temperature_300', 'temperature_400', 'temperature_500', 'temperature_600', 'temperature_700', 
                'temperature_850', 'temperature_925', 'temperature_1000'
                ]

    variables:
      - "u10"        # 10m U wind component
      - "v10"        # 10m V wind component
      - "t2m"        # 2m temperature
      - "msl"        # Mean sea level pressure
      - "z500"       # Geopotential at 500 hPa
      - "t850"       # Temperature at 850 hPa
    
    # 时间配置
    time_range: ["2000-01-01", "2020-12-31"]
    time_steps: 1
    time_res: 6
    
    # 空间配置
    spatial_resolution: [0.25, 0.25]
    
    # 采样配置
    num_samples: -1  # -1 表示使用全部数据
    shuffle: true
    random_seed: 42
    
    # 领域特定配置
    extra:
      levels: [500, 850, 1000]
      lat_range: [-90, 90]
      lon_range: [0, 360]
  
  # 数据转换配置
  transforms:
    - type: "Normalize"
      params:
        mean: [0.0, 0.0, 288.0, 101325.0, 50000.0, 270.0]
        std: [5.0, 5.0, 15.0, 1000.0, 5000.0, 10.0]
        keys: ["input", "target"]
    
    - type: "ToTensor"
      params:
        keys: null  # null表示转换所有numpy数组
  
  # 其他配置


  # DataLoader配置
  dataloader:
    mask_dtype: "float32"
    batch_size: 1
    num_workers: 1
    pin_memory: true
    drop_last: true
    shuffle: false  # 使用sampler时设为false
    prefetch_factor: 2
    persistent_workers: true
  
  # 分布式配置
  distributed:
    enabled: true
    sampler: "DistributedSampler"
    rank: 0
    world_size: 4
    shuffle: true
    seed: 42
    drop_last: true