-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Description
For an ML experiment, it is important to know metrics as well as the parameters that were used in order to get the metrics. Today there is no training/processing parameter concept in DVC which creates a problem when a user needs to visualize an experiment for example in some UI.
A common workaround is to track parameters as metrics. However, the meaning of metrics is different. All the UI tools (including dvc metrics diff) need to show deltas where deltas do not make sense to some types of params. For example, delta for learning rate might be ok to see (values are still better), but delta for a number of layers (32, 64 or 128) does not make sense, the same for not numeric params like strings.
Also, config/parameters are a pre-requisite for experiment management (#2799 or CI/CD scenarios) when DVC (or other automation tools) need to change training regarding provided parameters.
Another benefit of the "understanding" parameter - DVC can use this information during repro. For example, DVC can realize that a step process which depends on config file config.json should not be run despite the config file change because the metrics it uses were not changed.
We need to introduce the experiment config file/parameters file with a fixed structure that DVC can understand.
Open questions:
- Filename.
config.json,dvcconfig.json,params.json. - File format: json, text config/ini (name=value), Hydra, ... We can run a survey.
- How to track param dependency for stages. We can introduce a new type of dependency: param. If it is given then the stage depends on the file and on particular params values. Like
dvc run -p learning_rate -p LL5_levels .... - DVC should probably support groups of params. Param name pattern could be used :
dvc run -p 'processing.*' ...