Preserve order of hyperparameters from the original config during task registration and re-run
Proposal Summary
Currently, the task screen displays hyperparameters in alphabetical order. Instead, with the Python 3.7+ versions, it is a guarantee that dict key order is preserved. We can use this feature to our advantage and display the config hyperparameters in their actual order as uploaded by the user.
Comparisons can be done using libs like deepdiff in python.
Motivation
When training neural network models, the hyperparameters in the training config are semantically grouped. However, on registering a task, they are alphabetically sorted. This breaks the user's "mental model" of the experiment and makes it difficult to ensure that all model parameters and hyperparameters have been correctly set.
For example: if I have 2 model params like enc_n_layers and dec_n_layers. I would want them to be present together so that I can see the number of encoder and decoder layers without breaking focus.
Breaking down the config into sections like "architecture", "hyperparameters", "experiment" etc. does alleviate this problem, however adding original order preservation would solve it completely.
Related Discussion
If this continues a slack thread, please provide a link to the original slack thread.
Source: clearml/clearml