Unfortunately, hydra and typing is a bit difficult, especially if we don't want to define everything in python dataclasses (which I think we don't so we can hide unnecessary settings from the users). But: untyped it can be difficult to know the correct way of setting arguments as some are obvious (lr is a float), but other not (e.g. network architecture is a list, but could just as well be a dict).
To avoid confusion and also provide better errors, we could specify argument types in dataclasses and parse the config into these dataclasses at the start (lighter version of this: https://blog.helsing.ai/strongly-typed-structured-configuration-in-hydra-8fb43522d224). This would also ensure that we don't handle DictConfigs anymore, which is actually nice.
Proposed structure:
I'm not 100% set on this, but since the configs are large, this would maybe also make our debugging lives easier in the long run.
Unfortunately, hydra and typing is a bit difficult, especially if we don't want to define everything in python dataclasses (which I think we don't so we can hide unnecessary settings from the users). But: untyped it can be difficult to know the correct way of setting arguments as some are obvious (lr is a float), but other not (e.g. network architecture is a list, but could just as well be a dict).
To avoid confusion and also provide better errors, we could specify argument types in dataclasses and parse the config into these dataclasses at the start (lighter version of this: https://blog.helsing.ai/strongly-typed-structured-configuration-in-hydra-8fb43522d224). This would also ensure that we don't handle DictConfigs anymore, which is actually nice.
Proposed structure:
I'm not 100% set on this, but since the configs are large, this would maybe also make our debugging lives easier in the long run.