Configurable Components

Providing configurable abstractions requires two steps

  1. Parsing 1 or more configuration to extract the appropriate configuration values from it

  2. Using the values to instantiate the object

We use Hydra for (1) and SMQTK for (2). Hydra uses YAML based hierarchical configurations. The hierarchy is defined under the configs folder and provides defaults for the abstractions and features provided by sail-on-client

The folders in the hierarchy are considered configuration groups with the yaml files being options that can be selected for configuration group. The defaults or a non default configuration groups are composed to either swap abstractions, add additional features into run, and sweep over multiple values present in the configuration.

Note

Please refer to the cli section to find the configuration groups supported by sail-on-client

Sample configuration for PreComputedONDAgent
PreComputedONDAgent:
  smqtk:
    class: PreComputedONDAgent
    config:
      algorithm_name: ???
      cache_dir: ???
      has_roundwise_file: False
      round_size: ???

Since PreComputedONDAgent is an smqtk algorithm, it requires additional keywords highlighted below

Keywords required for specifying smqtk algorithm
PreComputedONDAgent:
  smqtk:
    class: PreComputedONDAgent
    config:
      algorithm_name: ???
      cache_dir: ???
      has_roundwise_file: False
      round_size: ???

If a default cannot be specified, ??? can be used to add a requirement for mandatory input.

Sample specification for mandatory input
PreComputedONDAgent:
  smqtk:
    class: PreComputedONDAgent
    config:
      algorithm_name: ???
      cache_dir: ???
      has_roundwise_file: False
      round_size: ???