-
Notifications
You must be signed in to change notification settings - Fork 78
Description
What happened?
This variable scaling assert here was triggered in a situation where I would not expect it to be triggered.
What are the steps to reproduce the bug?
The bug can very easily be reproduced by changing the name of any variable in the dataloader config, as is done here:
training:
dataset:
- dataset: ${system.input.dataset}
start: 1999
end: 2022
frequency: ${data.frequency}
- dataset: ${system.input.dataset_land}
start: 1999
end: 2022
frequency: ${data.frequency}
select: [swvl1, swvl2, stl1, stl2, ssrd, strd, sf, tcc, mcc, hcc, lcc, 100u, 100v, ro]
- dataset: ${system.input.dataset_imerg}
start: 1999
end: 2022
frequency: ${data.frequency}
select: [tp]
rename:
tp: imerg
start: 1999
end: 2022
drop: []
and then change the scaling on that variable
training:
scalers:
general_variable:
target: anemoi.training.losses.scalers.GeneralVariableLossScaler
weights:
imerg: 0.025
The code crashes with:
File "/leonardo/home/userexternal/mgabrie1/code_combined_new/anemoi-core/training/src/anemoi/training/train/train.py", line 201, in model
model = model_task(**kwargs) # GraphForecaster -> pl.LightningModule
^^^^^^^^^^^^^^^^^^^^
File "/leonardo/home/userexternal/mgabrie1/code_combined_new/anemoi-core/training/src/anemoi/training/train/tasks/rollout.py", line 67, in init
super().init(
File "/leonardo/home/userexternal/mgabrie1/code_combined_new/anemoi-core/training/src/anemoi/training/train/tasks/base.py", line 190, in init
self.scalers, self.updating_scalars = create_scalers(
^^^^^^^^^^^^^^^
File "/leonardo/home/userexternal/mgabrie1/code_combined_new/anemoi-core/training/src/anemoi/training/losses/scalers/scalers.py", line 31, in create_scalers
scalers[name] = scaler_builder.get_scaling()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/leonardo/home/userexternal/mgabrie1/code_combined_new/anemoi-core/training/src/anemoi/training/losses/scalers/base_scaler.py", line 87, in get_scaling
scaler_values = self.get_scaling_values()
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/leonardo/home/userexternal/mgabrie1/code_combined_new/anemoi-core/training/src/anemoi/training/losses/scalers/variable.py", line 100, in get_scaling_values
self.weights.get(
AssertionError: Variable imerg is not allowed to have a separate scaling besides tp.
Is this behaviour expected or maybe I'm missing something?
Version
recent branch of anemoi core
Platform (OS and architecture)
Linux Env
Relevant log output
Accompanying data
No response
Organisation
ECMWF
Metadata
Metadata
Labels
Type
Projects
Status