Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

updated hpo args #297

Merged
merged 2 commits into from
Aug 8, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 46 additions & 1 deletion federatedscope/core/configs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ The configurations related to NbAFL method.
| `nbafl.w_clip` | (float) 1. | The threshold used for weight clipping. | - |
| `nbafl.constant` | (float) 30. | The constant used in NbAFL. | - |

# SGDMF
#### SGDMF
The configurations related to SGDMF method (only used in matrix factorization tasks).

| Name | (Type) Default Value | Description | Note |
Expand All @@ -142,3 +142,48 @@ The configurations related to SGDMF method (only used in matrix factorization ta
| `sgdmf.delta` | (float) 0.5 | The $\delta$ used in DP. | - |
| `sgdmf.constant` | (float) 1. | The constant in SGDMF | - |
| `sgdmf.theta` | (int) -1 | - | -1 means per-rating privacy, otherwise per-user privacy |

### Auto-tuning Components

These arguments are exposed for customizing our provided auto-tuning components.

#### General

| Name | (Type) Default Value | Description | Note |
|:----:|:--------------------:|:-------------------------------------------|:-----|
| `hpo.working_folder` | (string) 'hpo' | Save model checkpoints and search space configurations to this folder. | Trials in the next stage of an iterative HPO algorithm can restore from the checkpoints of their corresponding last trials. |
| `hpo.ss` | (string) 'hpo' | File path of the .yaml that specifying the search space. | - |
| `hpo.num_workers` | (int) 0 | The number of threads to concurrently attempt different hyperparameter configurations. | Multi-threading is banned in current version. |
| `hpo.init_cand_num` | (int) 16 | The number of initial hyperparameter configurations sampled from the search space. | - |
| `hpo.larger_better` | (bool) False | The indicator of whether the larger metric is better. | - |
| `hpo.scheduler` | (string) 'rs' </br> Choices: {'rs', 'sha', 'wrap_sha'} | Which algorithm to use. | - |
| `hpo.metric` | (string) 'client_summarized_weighted_avg.val_loss' | Metric to be optimized. | - |

#### Successive Halving Algorithm (SHA)

| Name | (Type) Default Value | Description | Note |
|:----:|:--------------------:|:-------------------------------------------|:-----|
| `hpo.sha.elim_rate` | (int) 3 | Reserve only top 1/`hpo.sha.elim_rate` hyperparameter configurations in each state. | - |
| `hpo.sha.budgets` | (list of int) [] | Budgets for each SHA stage. | - |


#### FedEx

| Name | (Type) Default Value | Description | Note |
|:----:|:--------------------:|:-------------------------------------------|:-----|
| `hpo.fedex.use` | (bool) False | Whether to use FedEx. | - |
| `hpo.fedex.ss` | (striing) '' | Path of the .yaml specifying the search space to be explored. | - |
| `hpo.fedex.flatten_ss` | (bool) True | Whether the search space has been flattened. | - |
| `hpo.fedex.eta0` | (float) -1.0 | Initial learning rate. | -1.0 means automatically determine the learning rate based on the size of search space. |
| `hpo.fedex.sched` | (string) 'auto' </br> Choices: {'auto', 'adaptive', 'aggressive', 'constant', 'scale' } | The strategy to update step sizes | - |
| `hpo.fedex.cutoff` | (float) 0.0 | The entropy level below which to stop updating the config. | - |
| `hpo.fedex.gamma` | (float) 0.0 | The discount factor; 0.0 is most recent, 1.0 is mean. | - |
| `hpo.fedex.diff` | (bool) False | Whether to use the difference of validation losses before and after the local update as the reward signal. | - |

#### Wrappers for FedEx

| Name | (Type) Default Value | Description | Note |
|:----:|:--------------------:|:-------------------------------------------|:-----|
| `hpo.table.eps` | (float) 0.1 | The probability to make local perturbation. | Larger values lead to drastically different arms of the bandit FedEx attempts to solve. |
| `hpo.table.num` | (int) 27 | The number of arms of the bandit FedEx attempts to solve. | - |
| `hpo.table.idx` | (int) 0 | The key (i.e., name) of the hyperparameter wrapper considers. | No need to change this argument. |
12 changes: 1 addition & 11 deletions federatedscope/core/configs/cfg_hpo.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,18 +11,13 @@ def extend_hpo_cfg(cfg):
cfg.hpo.working_folder = 'hpo'
cfg.hpo.ss = ''
cfg.hpo.num_workers = 0
# cfg.hpo.init_strategy = 'random'
cfg.hpo.init_cand_num = 16
cfg.hpo.log_scale = False
cfg.hpo.larger_better = False
cfg.hpo.scheduler = 'rs'
# plot the performance
cfg.hpo.plot_interval = 1
cfg.hpo.metric = 'client_summarized_weighted_avg.val_loss'

# SHA
cfg.hpo.sha = CN()
cfg.hpo.sha.elim_round_num = 3
cfg.hpo.sha.elim_rate = 3
cfg.hpo.sha.budgets = []

Expand All @@ -44,15 +39,12 @@ def extend_hpo_cfg(cfg):
cfg.hpo.fedex.cutoff = .0
# discount factor; 0.0 is most recent, 1.0 is mean
cfg.hpo.fedex.gamma = .0
cfg.hpo.fedex.num_arms = 16
cfg.hpo.fedex.diff = False

# Table
cfg.hpo.table = CN()
cfg.hpo.table.ss = ''
cfg.hpo.table.eps = 0.1
cfg.hpo.table.num = 27
# cfg.hpo.table.cand = 81
cfg.hpo.table.idx = 0


Expand All @@ -68,9 +60,7 @@ def assert_hpo_cfg(cfg):
cfg.hpo.scheduler)
assert cfg.hpo.num_workers >= 0, "#worker should be non-negative but " \
"given {}".format(cfg.hpo.num_workers)
assert len(cfg.hpo.sha.budgets) == 0 or len(
cfg.hpo.sha.budgets
) == cfg.hpo.sha.elim_round_num, \
assert len(cfg.hpo.sha.budgets) > 0, \
"Either do NOT specify the budgets or specify the budget for each " \
"SHA iteration, but the given budgets is {}".format(
cfg.hpo.sha.budgets)
Expand Down