File size: 2,007 Bytes
4947683
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
# metadata specialised for each experiment
core:
  version: ${get_flowmm_version:}
  tags:
    - ${now:%Y-%m-%d}

logging:
  # log frequency
  val_check_interval: 5
  wandb:
    project: ${model.target_distribution}-${hydra:runtime.choices.data}
    entity: null
    log_model: True
    mode: 'cloud'
    experiment_name: flowmm

  wandb_watch:
    log: all
    log_freq: 500

  lr_monitor:
    logging_interval: step
    log_momentum: False

optim:
  # RFM
  optimizer:
    _target_: torch.optim.AdamW
    lr: 0.0003
    lr_diff: False
    lr_backbone: 0.00003
    lr_head: 0.0003
    weight_decay: 0.0
  lr_scheduler:
    _target_: torch.optim.lr_scheduler.CosineAnnealingLR
    T_max: ${data.train_max_epochs}
    eta_min: 1e-5
  interval: epoch
  ema_decay: 0.999

train:
  # reproducibility
  deterministic: warn
  random_seed: 42

  # training
  pl_trainer:
    fast_dev_run: False # Enable this for debug purposes
    strategy: ddp
    num_nodes: 1
    devices: 1
    accelerator: gpu
    precision: 32
    # max_steps: 10000
    max_epochs: ${data.train_max_epochs}
    accumulate_grad_batches: 1
    num_sanity_val_steps: 1
    gradient_clip_val: 0.5
    gradient_clip_algorithm: value
    profiler: simple

  monitor_metric: "val/loss"  # "val/nll"
  monitor_metric_mode: min

  # early_stopping:
  #   patience: ${data.early_stopping_patience}
  #   verbose: False

  model_checkpoints:
    save_top_k: 1
    verbose: False
    save_last: False

  every_n_epochs_checkpoint:
    every_n_epochs: 100
    save_top_k: -1
    verbose: False
    save_last: False

val:
  compute_nll: false

test:
  compute_nll: false
  compute_loss: true

integrate:
  div_mode: rademacher  # "exact" is an alternative
  method: euler
  num_steps: 1_000
  normalize_loglik: True  # this is normalized by dimension
  inference_anneal_slope: 0.0
  inference_anneal_offset: 0.0

defaults:
  - _self_
  - data: perov
  - model: null_nonsym
  - vectorfield: rfm_cspnet
  - hydra: trash

base_distribution_from_data: False