Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
3840d2c
move noise related functions to separate module
AnnaKwa Feb 24, 2026
26807aa
add classes for noise distribution
AnnaKwa Feb 25, 2026
7ebc3a2
modify diffusionmodel to use noise distribution
AnnaKwa Feb 25, 2026
7dd0947
fix usage in diffusion
AnnaKwa Feb 26, 2026
ac62e90
exp config
AnnaKwa Feb 26, 2026
53328c3
Merge branch 'main' into feature/log-uniform-noise
AnnaKwa Feb 26, 2026
7154e61
eval configs
AnnaKwa Feb 27, 2026
c8ec02c
delete experiment configs
AnnaKwa Feb 27, 2026
68e607b
Merge branch 'main' into feature/log-uniform-noise
AnnaKwa Feb 27, 2026
f21999b
Fix event evaluator bug
AnnaKwa Feb 27, 2026
53906a5
update docstring
AnnaKwa Feb 27, 2026
c0ea351
update test config
AnnaKwa Feb 27, 2026
396aa5f
adds backwards compatibility test
AnnaKwa Mar 2, 2026
de05465
Merge branch 'main' into feature/log-uniform-noise
AnnaKwa Mar 2, 2026
de17a12
log loss vs noise
AnnaKwa Mar 3, 2026
e8e3320
bin losses by sigma
AnnaKwa Mar 3, 2026
51d6796
reduce sigma range in agg
AnnaKwa Mar 3, 2026
8fd8710
respond to PR comments
AnnaKwa Mar 5, 2026
c6094f0
reformat
AnnaKwa Mar 5, 2026
9a0aea1
enforce float32 dtype
AnnaKwa Mar 5, 2026
cd14d68
Merge branch 'feature/log-uniform-noise' into feature/loss-vs-noise-agg
AnnaKwa Mar 5, 2026
5dacf6b
add loss_weights config field
AnnaKwa Mar 6, 2026
0ab8760
exp configs
AnnaKwa Mar 6, 2026
33030be
up gpus
AnnaKwa Mar 6, 2026
f6fa1f3
fix val step
AnnaKwa Mar 7, 2026
69c5581
eval
AnnaKwa Mar 9, 2026
63a8774
update config range
AnnaKwa Mar 9, 2026
e8fd3f1
clamp max noise
AnnaKwa Mar 9, 2026
4f95fec
Merge branch 'feature/loss-vs-noise-agg' into feature/downsc-loss-wei…
AnnaKwa Mar 9, 2026
cd4ead7
rm previous_results line
AnnaKwa Mar 9, 2026
d4fa1a4
winds only training
AnnaKwa Mar 9, 2026
db83e31
tropics only, use 1/sigma weighting
AnnaKwa Mar 9, 2026
a6cfc87
increase val set size
AnnaKwa Mar 10, 2026
e1a63dc
update scripts
AnnaKwa Mar 10, 2026
0eb82ae
winds-only resume 0.75exp
AnnaKwa Mar 10, 2026
f403e07
winds only control
AnnaKwa Mar 10, 2026
62ef512
fix docstring
AnnaKwa Mar 10, 2026
e654a3f
resume on low priority 0weight prate
AnnaKwa Mar 10, 2026
4aedd3c
update to tropics region
AnnaKwa Mar 10, 2026
d29e7d1
global eval
AnnaKwa Mar 10, 2026
3df1c40
use datasets with prmsl
AnnaKwa Mar 11, 2026
9c863a6
step 29
AnnaKwa Mar 11, 2026
6f37b31
eval with manuscript prate ckpt
AnnaKwa Mar 11, 2026
5e5c874
global eval
AnnaKwa Mar 11, 2026
a9d1cfb
fix time range
AnnaKwa Mar 11, 2026
b5d127b
create BatchData wrapper in CascadePredictor._generate, make _generat…
AnnaKwa Mar 11, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,207 @@
experiment_dir: /results
n_samples: 2
patch:
divide_generation: true
composite_prediction: true
coarse_horizontal_overlap: 1
model:
checkpoint_path: /checkpoints/best_histogram_tail.ckpt #ema_ckpt.tar #best.ckpt
model_updates:
num_diffusion_generation_steps: 18
#sigma_max: 2000.0
#sigma_min: 0.002
#churn: 2.0
data:
coarse:
- merge:
- data_path: /climate-default/2025-09-25-downscaling-data-X-SHiELD-AMIP-downscaling
file_pattern: 100km.zarr
engine: zarr
subset:
#start_time: '2023-01-01T00:00:00'
start: 0
stop: 2
- data_path: /climate-default/2026-02-03-downscaling-data-X-SHiELD-AMIP-pressure-data
file_pattern: pressfc_renamed_to_prmsl_100km.zarr
engine: zarr
subset:
start: 0
stop: 2
#start_time: '2023-01-01T00:00:00'
fine:
- merge:
- data_path: /climate-default/2025-09-25-downscaling-data-X-SHiELD-AMIP-downscaling
file_pattern: 3km.zarr
engine: zarr
subset:
#start_time: '2023-01-01T00:00:00'
start: 0
stop: 2
- data_path: /climate-default/2026-02-03-downscaling-data-X-SHiELD-AMIP-pressure-data
file_pattern: instantaneous_surface_and_sea_level_pressure_3km.zarr
engine: zarr
subset:
#start_time: '2023-01-01T00:00:00'
start: 0
stop: 2
# CONUS
lat_extent:
start: 0
stop: 16
# start: 22.0
# stop: 50.0
lon_extent:
#start: 230.0
#stop: 295.0
start: 0
stop: 16
batch_size: 2
num_data_workers: 2
strict_ensemble: false
logging:
log_to_screen: true
log_to_wandb: true
log_to_file: true
project: multivariate-downscaling
entity: ai2cm
events:
- name: NE_US_Quebec_20230206
date: 2023-02-06T00:00
lat_extent:
start: 36
stop: 52
lon_extent:
start: 283
stop: 299
save_generated_samples: true
n_samples: 16
- name: WA_AR_20230101
date: 2023-01-01T06:00
lat_extent:
start: 36
stop: 52
lon_extent:
start: 228
stop: 244
save_generated_samples: true
n_samples: 16
- name: WPacific_hurricane_20230425
date: 2023-04-25T18:00
lat_extent:
start: 7
stop: 23
lon_extent:
start: 130.0
stop: 146.0
save_generated_samples: true
n_samples: 16
- name: WPacific_hurricane_landfall_china_20230510
date: 2023-05-10T12:00
lat_extent:
start: 7
stop: 23
lon_extent:
start: 104
stop: 120
save_generated_samples: true
n_samples: 16
- name: extratropical_cyclone_US_20230403
date: 2023-04-03T12:00
lat_extent:
start: 34
stop: 50
lon_extent:
start: 254
stop: 270
save_generated_samples: true
n_samples: 16
- name: santa_ana_winds_20231221
date: 2023-12-21T06:00
lat_extent:
start: 26
stop: 42
lon_extent:
start: 234
stop: 250
save_generated_samples: true
n_samples: 16
- name: alpine_foehn_20230330
date: 2023-03-30T18:00
lat_extent:
start: 37
stop: 53
lon_extent:
start: 2
stop: 18
save_generated_samples: true
n_samples: 16
- name: hindu_kush_20230122
date: 2023-01-22T06:00
lat_extent:
start: 28
stop: 44
lon_extent:
start: 60
stop: 76
save_generated_samples: true
n_samples: 16
- name: WPac_tc_20230426T06
date: 2023-04-26T06:00
lat_extent:
start: 8
stop: 24
lon_extent:
start: 130
stop: 146
save_generated_samples: true
n_samples: 16
- name: Phl_tc_landfall_20230514T06
date: 2023-05-14T06:00
lat_extent:
start: 4
stop: 20
lon_extent:
start: 117
stop: 133
save_generated_samples: true
n_samples: 16
- name: Phl_tc_landfall_20230517T18
date: 2023-05-17T18:00
lat_extent:
start: 7
stop: 23
lon_extent:
start: 133
stop: 149
save_generated_samples: true
n_samples: 16
- name: Taiwan_tc_landfall_20230707T18
date: 2023-07-07T18:00
lat_extent:
start: 14
stop: 30
lon_extent:
start: 115
stop: 131
save_generated_samples: true
n_samples: 16
- name: Japan_tc_landfall_20230919T18
date: 2023-09-19T18:00
lat_extent:
start: 22
stop: 38
lon_extent:
start: 123
stop: 139
save_generated_samples: true
n_samples: 16
- name: Phl_tc_landfall_20231027T00
date: 2023-10-27T00:00
lat_extent:
start: 8
stop: 24
lon_extent:
start: 115
stop: 131
save_generated_samples: true
n_samples: 16
50 changes: 50 additions & 0 deletions configs/experiments/2026-02-10-downsc-add-pressfc/eval-global.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
experiment_dir: /results
n_samples: 2
patch:
divide_generation: true
composite_prediction: true
coarse_horizontal_overlap: 1
model:
checkpoint_path: /checkpoints/best.ckpt
data:
#topography: /climate-default/2025-09-25-downscaling-data-X-SHiELD-AMIP-downscaling/3km.zarr
fine:
- merge:
- data_path: /climate-default/2025-09-25-downscaling-data-X-SHiELD-AMIP-downscaling
file_pattern: 3km.zarr
engine: zarr
subset:
start_time: '2023-01-01T00:00:00'
step: 29
- data_path: /climate-default/2026-02-03-downscaling-data-X-SHiELD-AMIP-pressure-data
file_pattern: instantaneous_surface_and_sea_level_pressure_3km.zarr
engine: zarr
subset:
start_time: '2023-01-01T00:00:00'
step: 29
coarse:
- merge:
- data_path: /climate-default/2025-09-25-downscaling-data-X-SHiELD-AMIP-downscaling
file_pattern: 100km.zarr
engine: zarr
subset:
start_time: '2023-01-01T00:00:00'
step: 29
- data_path: /climate-default/2026-02-03-downscaling-data-X-SHiELD-AMIP-pressure-data
file_pattern: pressfc_renamed_to_prmsl_100km.zarr
engine: zarr
subset:
start_time: '2023-01-01T00:00:00'
step: 29
lat_extent:
start: -66
stop: 70.0
batch_size: 6
num_data_workers: 2
strict_ensemble: false
logging:
log_to_screen: true
log_to_wandb: true
log_to_file: true
project: andrep-downscaling
entity: ai2cm
52 changes: 52 additions & 0 deletions configs/experiments/2026-02-10-downsc-add-pressfc/eval.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
#!/bin/bash

set -e

#JOB_NAME="eval-xshield-amip-100km-to-3km-0.5sigmaexp-tropics-events"
JOB_NAME="eval-xshield-amip-100km-to-3km-loguni-multivariate-global"

CONFIG_FILENAME="eval-global.yaml"

SCRIPT_PATH=$(echo "$(git rev-parse --show-prefix)" | sed 's:/*$::')
CONFIG_PATH=$SCRIPT_PATH/$CONFIG_FILENAME

# since we use a service account API key for wandb, we use the beaker username to set the wandb username
BEAKER_USERNAME=$(beaker account whoami --format=json | jq -r '.[0].name')
REPO_ROOT=$(git rev-parse --show-toplevel)

cd $REPO_ROOT # so config path is valid no matter where we are running this script

N_NODES=1
NGPU=4

IMAGE="$(cat latest_deps_only_image.txt)"

EXISTING_RESULTS_DATASET=01KK07E72Z2H4CSP1EWXCT25FB
wandb_group=""

#--not-preemptible \

gantry run \
--name $JOB_NAME \
--description 'Run 100km to 3km evaluation on coarsened X-SHiELD' \
--workspace ai2/climate-titan \
--priority urgent \
--cluster ai2/jupiter \
--cluster ai2/titan \
--beaker-image $IMAGE \
--env WANDB_USERNAME=$BEAKER_USERNAME \
--env WANDB_NAME=$JOB_NAME \
--env WANDB_JOB_TYPE=inference \
--env WANDB_RUN_GROUP=$wandb_group \
--env GOOGLE_APPLICATION_CREDENTIALS=/tmp/google_application_credentials.json \
--env-secret WANDB_API_KEY=wandb-api-key-annak \
--dataset-secret google-credentials:/tmp/google_application_credentials.json \
--dataset $EXISTING_RESULTS_DATASET:checkpoints:/checkpoints \
--weka climate-default:/climate-default \
--gpus $NGPU \
--shared-memory 400GiB \
--budget ai2/climate \
--no-conda \
--install "pip install --no-deps ." \
--allow-dirty \
-- torchrun --nproc_per_node $NGPU -m fme.downscaling.evaluator $CONFIG_PATH
52 changes: 52 additions & 0 deletions configs/experiments/2026-02-10-downsc-add-pressfc/resume.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
#!/bin/bash
# uses the augusta cluster which doesn't have weka access but has GCS access and is
# typically more available than cirrascale clusters

set -e

# recommended but not required to change this

JOB_NAME="xshield-downscaling-100km-to-3km-0weight-prate-tropics-resume"
CONFIG_FILENAME="train-100-to-3km-prmsl-clamp-loss-weight.yaml"

SCRIPT_PATH=$(echo "$(git rev-parse --show-prefix)" | sed 's:/*$::')
CONFIG_PATH=$SCRIPT_PATH/$CONFIG_FILENAME
wandb_group=""

# since we use a service account API key for wandb, we use the beaker username to set the wandb username
BEAKER_USERNAME=$(beaker account whoami --format=json | jq -r '.[0].name')
REPO_ROOT=$(git rev-parse --show-toplevel)
N_GPUS=8 # TODO: change to 8 after testing

cd $REPO_ROOT # so config path is valid no matter where we are running this script

IMAGE=$(cat $REPO_ROOT/latest_deps_only_image.txt)

PREVIOUS_RESULTS_DATASET="01KK9ZRC9M9MF7T45T4XAP7GF0"


gantry run \
--name $JOB_NAME \
--description 'Run downscaling 100km to 3km multivar training' \
--workspace ai2/climate-titan \
--priority low \
--preemptible \
--cluster ai2/titan \
--cluster ai2/jupiter \
--beaker-image $IMAGE \
--env WANDB_USERNAME=$BEAKER_USERNAME \
--env WANDB_NAME=$JOB_NAME \
--env WANDB_JOB_TYPE=training \
--env WANDB_RUN_GROUP=$wandb_group \
--env GOOGLE_APPLICATION_CREDENTIALS=/tmp/google_application_credentials.json \
--env-secret WANDB_API_KEY=wandb-api-key-annak \
--dataset $PREVIOUS_RESULTS_DATASET:/previous_results \
--dataset-secret google-credentials:/tmp/google_application_credentials.json \
--weka climate-default:/climate-default \
--gpus $N_GPUS \
--shared-memory 400GiB \
--budget ai2/climate \
--no-conda \
--install "pip install --no-deps ." \
--allow-dirty \
-- torchrun --nproc_per_node $N_GPUS -m fme.downscaling.train $CONFIG_PATH
Loading