-
Notifications
You must be signed in to change notification settings - Fork 11
/
mnist_optuna.yaml
61 lines (46 loc) · 2.21 KB
/
mnist_optuna.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# @package _global_
# this config file is used for running the template default tests
# example hyperparameter optimization of some experiment with Optuna:
# python train.py -m hparams_search=mnist_optuna experiment=example
defaults:
- override /hydra/sweeper: optuna
# choose metric which will be optimized by Optuna
# make sure this is the correct name of some metric logged in lightning module!
# To avoiding copying of loss and metric names, during hydra initialization
# there is custom resolver which replaces __loss__ to loss.__class__.__name__
# and __metric__ to main_metric.__class__.__name__,
# for example: ${replace:"__metric__/valid"}
# Use quotes for defining internal value in ${replace:"..."} to avoid
# grammar problems with hydra config parser.
optimized_metric: ${replace:"__metric__/valid_best"}
# here we define Optuna hyperparameter search
# it optimizes for value returned from function with @hydra.main decorator
# docs: https://hydra.cc/docs/next/plugins/optuna_sweeper
hydra:
mode: "MULTIRUN" # set hydra to multirun by default if this config is attached
sweeper:
_target_: hydra_plugins.hydra_optuna_sweeper.optuna_sweeper.OptunaSweeper
# storage URL to persist optimization results
# for example, you can use SQLite if you set 'sqlite:///example.db'
storage: null
# name of the study to persist optimization results
study_name: null
# number of parallel workers
n_jobs: 1
# 'minimize' or 'maximize' the objective
direction: maximize
# total number of runs that will be executed
n_trials: 20
# choose Optuna hyperparameter sampler
# you can choose bayesian sampler (tpe), random search (without optimization), grid sampler, and others
# docs: https://optuna.readthedocs.io/en/stable/reference/samplers.html
sampler:
_target_: optuna.samplers.TPESampler
seed: 1234
n_startup_trials: 10 # number of random sampling runs before optimization starts
# define hyperparameter search space
params:
module.optimizer.lr: interval(0.0001, 0.1)
module.network.model.lin1_size: choice(64, 128, 256)
module.network.model.lin2_size: choice(64, 128, 256)
module.network.model.lin3_size: choice(32, 64, 128, 256)