comet_ml.Optimizer ¶
The Optimizer class. Used to perform a search for minimum or maximum loss for a given set of parameters. Also used for a grid or random sweep of parameter space.
Note that any keyword argument not in the following will be passed onto the Experiment constructor. For example, you can pass project_name
and logging arguments by listing them here.
Parameters:
config
(dict
, default:None
) –If COMET_OPTIMIZER_ID is configured, otherwise is either a config dictionary, optimizer id, or a config filename.
trials
(int
, default:None
) –Number of trials per parameter set to test.
verbose
(bool
, default:1
) –Verbosity level where 0 means no output, and 1 (or greater) means to show more detail.
experiment_class
(str | callable
, default:'Experiment'
) –Class to use (for example, OfflineExperiment).
Example
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
To pass arguments to the Experiment
constructor, pass them into the opt.get_experiments()
call, like so:
1 2 3 4 5 6 7 8 9 10 11 12 |
|
Functions¶
__init__ ¶
__init__(
config=None,
trials=None,
verbose=1,
experiment_class="Experiment",
api_key=None,
**kwargs
)
The Optimizer constructor.
Parameters:
config
(str | dict
, default:None
) –Can an optimizer config id, an optimizer config dictionary, or an optimizer config filename.
trials
(int
, default:None
) –Number of trials per parameter value set
verbose
(int
, default:1
) –Level of details to show; 0 means quiet
experiment_class
(str | callable
, default:'Experiment'
) –Supported values are "Experiment" (the default) to use online Experiments or "OfflineExperiment" to use offline Experiments. It can also be a callable (a function or a method) that returns an instance of Experiment, OfflineExperiment, ExistingExperiment or ExistingOfflineExperiment.
See above for examples.
end ¶
end(experiment)
Optimizer.end()
is called at end of experiment. Usually, you would not call this manually, as it is called directly when the experiment ends.
get_experiments ¶
get_experiments(**kwargs)
Optimizer.get_experiments()
will iterate over all possible experiments for this sweep or search, n
at a time. All experiments will have a unique set of parameter values (unless performing multiple trials per parameter set).Example
1
2
3
4
5
6
7
8
import comet_ml
comet_ml.login()
opt = comet_ml.Optimizer({"algorithm": "bayes", ...})
for experiment in opt.get_experiments():
loss = fit(x, y)
experiment.log_metric("loss", loss)
get_id ¶
get_id()
Get the id of this optimizer.Example
1
2
3
4
5
6
import comet_ml
comet_ml.login()
opt = comet_ml.Optimizer({"algorithm": "bayes", ...})
opt.get_id()
get_parameters ¶
get_parameters()
Optimizer.get_parameters()
will iterate over all possible parameters for this sweep or search. All parameters combinations will be emitted once (unless performing multiple trials per parameter set).Example
1
2
3
4
5
6
7
8
9
import comet_ml
comet_ml.login()
opt = comet_ml.Optimizer({"algorithm": "bayes", ...})
for parameters in optimizer.get_parameters():
experiment = comet_ml.Experiment()
loss = fit(x, y)
experiment.log_metric("loss", loss)
next ¶
next(**kwargs)
Optimizer.next()
will return the next experiment for this sweep or search. All experiments will have a unique set of parameter values (unless performing multiple trials per parameter set).
Normally, you would not call this directly, but use the generator Optimizer.get_experiments()
Parameters:
kwargs
(Any
, default:{}
) –Any keyword argument will be passed to the Experiment class for creation. The API key is passed directly.
Example
1 2 3 4 5 6 7 8 9 |
|
next_data ¶
next_data()
Optimizer.next_data()
will return the next parameters in the Optimizer sweep.
Normally, you would not call this directly, but use the generator Optimizer.get_parameters()
Example
1
2
3
4
5
import comet_ml
comet_ml.login()
opt = comet_ml.Optimizer({"algorithm": "bayes", ...})
experiment = optimizer.next_data()
status ¶
status()
Get the status from the optimizer server for this optimizer. Running the code sample: Will return the dict:Example
1
2
3
4
5
6
import comet_ml
comet_ml.login()
opt = comet_ml.Optimizer({"algorithm": "bayes", ...})
opt.status()
{
'algorithm': 'grid',
'comboCount': 32,
'configSpaceSize': 10,
'endTime': None,
'id': 'c20b90ecad694e71bdb5702778eb8ac7',
'lastUpdateTime': None,
'maxCombo': 0,
'name': 'c20b90ecad694e71bdb5702778eb8ac7',
'parameters': {
'x': {
'max': 20,
'min': 0,
'scalingType': 'uniform',
'type': 'integer'
}
},
'retryCount': 0,
'spec': {
'gridSize': 10,
'maxCombo': 0,
'metric': 'loss',
'minSampleSize': 100,
'randomize': False,
'retryLimit': 20,
'seed': 2997936454
},
'startTime': 1558793292216,
'state': {
'sequence_i': 0,
'sequence_retry': 11,
'sequence_trial': 0,
'total': 32,
},
'status': 'running',
'trials': 1,
'version': '1.0.0'
}