optuna.storages.RDBStorage
- class optuna.storages.RDBStorage(url, engine_kwargs=None, skip_compatibility_check=False, *, heartbeat_interval=None, grace_period=None, failed_trial_callback=None)[source]
Storage class for RDB backend.
Note that library users can instantiate this class, but the attributes provided by this class are not supposed to be directly accessed by them.
Example
Create an
RDBStorageinstance with customizedpool_sizeandtimeoutsettings.import optuna def objective(trial): x = trial.suggest_float("x", -100, 100) return x ** 2 storage = optuna.storages.RDBStorage( url="sqlite:///:memory:", engine_kwargs={"pool_size": 20, "connect_args": {"timeout": 10}}, ) study = optuna.create_study(storage=storage) study.optimize(objective, n_trials=10)
- Parameters
url (str) – URL of the storage.
engine_kwargs (Optional[Dict[str, Any]]) – A dictionary of keyword arguments that is passed to sqlalchemy.engine.create_engine function.
skip_compatibility_check (bool) – Flag to skip schema compatibility check if set to True.
heartbeat_interval (Optional[int]) – Interval to record the heartbeat. It is recorded every
intervalseconds.grace_period (Optional[int]) – Grace period before a running trial is failed from the last heartbeat. If it is
None, the grace period will be 2 * heartbeat_interval.failed_trial_callback (Optional[Callable[[optuna.Study, FrozenTrial], None]]) –
A callback function that is invoked after failing each stale trial. The function must accept two parameters with the following types in this order:
StudyandFrozenTrial.Note
The procedure to fail existing stale trials is called just before asking the study for a new trial.
Note
If you use MySQL, pool_pre_ping will be set to
Trueby default to prevent connection timeout. You can turn it off withengine_kwargs['pool_pre_ping']=False, but it is recommended to keep the setting if execution time of your objective function is longer than the wait_timeout of your MySQL configuration.- Raises
ValueError – If the given heartbeat_interval or grace_period is not a positive integer.
RuntimeError – If the a process that was failed by heartbeat but was actually running.
- Parameters
Methods
check_trial_is_updatable(trial_id, trial_state)Check whether a trial state is updatable.
create_new_study([study_name])Create a new study from a name.
create_new_trial(study_id[, template_trial])Create and add a new trial to a study.
delete_study(study_id)Delete a study.
fail_stale_trials(study_id)Fail stale trials.
Read a list of
StudySummaryobjects.get_all_trials(study_id[, deepcopy, states])Read all trials in a study.
Return the schema version list.
get_best_trial(study_id)Return the trial with the best value in a study.
Return the schema version currently used by this storage.
Get the failed trial callback function.
Return the latest schema version.
Get the heartbeat interval if it is set.
get_n_trials(study_id[, state])Count the number of trials in a study.
get_study_directions(study_id)Read whether a study maximizes or minimizes an objective.
get_study_id_from_name(study_name)Read the ID of a study.
get_study_id_from_trial_id(trial_id)Read the ID of a study to which a trial belongs.
get_study_name_from_id(study_id)Read the study name of a study.
get_study_system_attrs(study_id)Read the optuna-internal attributes of a study.
get_study_user_attrs(study_id)Read the user-defined attributes of a study.
get_trial(trial_id)Read a trial.
Read the trial id of a trial.
get_trial_number_from_id(trial_id)Read the trial number of a trial.
get_trial_param(trial_id, param_name)Read the parameter of a trial.
get_trial_params(trial_id)Read the parameter dictionary of a trial.
get_trial_system_attrs(trial_id)Read the optuna-internal attributes of a trial.
get_trial_user_attrs(trial_id)Read the user-defined attributes of a trial.
Check whether the storage enables the heartbeat.
read_trials_from_remote_storage(study_id)Make an internal cache of trials up-to-date.
record_heartbeat(trial_id)Record the heartbeat of the trial.
Removes the current session.
set_study_directions(study_id, directions)Register optimization problem directions to a study.
set_study_system_attr(study_id, key, value)Register an optuna-internal attribute to a study.
set_study_user_attr(study_id, key, value)Register a user-defined attribute to a study.
set_trial_intermediate_value(trial_id, step, ...)Report an intermediate value of an objective function.
set_trial_param(trial_id, param_name, ...)Set a parameter to a trial.
set_trial_state(trial_id, state)Update the state of a trial.
set_trial_system_attr(trial_id, key, value)Set an optuna-internal attribute to a trial.
set_trial_user_attr(trial_id, key, value)Set a user-defined attribute to a trial.
set_trial_values(trial_id, values)Set return values of an objective function.
upgrade()Upgrade the storage schema.
- check_trial_is_updatable(trial_id, trial_state)
Check whether a trial state is updatable.
- Parameters
trial_id (int) – ID of the trial. Only used for an error message.
trial_state (TrialState) – Trial state to check.
- Raises
RuntimeError – If the trial is already finished.
- Return type
None
- create_new_study(study_name=None)[source]
Create a new study from a name.
If no name is specified, the storage class generates a name. The returned study ID is unique among all current and deleted studies.
- Parameters
study_name (Optional[str]) – Name of the new study to create.
- Returns
ID of the created study.
- Raises
optuna.exceptions.DuplicatedStudyError – If a study with the same
study_namealready exists.- Return type
- create_new_trial(study_id, template_trial=None)[source]
Create and add a new trial to a study.
The returned trial ID is unique among all current and deleted trials.
- Parameters
study_id (int) – ID of the study.
template_trial (Optional[FrozenTrial]) – Template
FronzenTrialwith default user-attributes, system-attributes, intermediate-values, and a state.
- Returns
ID of the created trial.
- Raises
KeyError – If no study with the matching
study_idexists.- Return type
- fail_stale_trials(study_id)[source]
Fail stale trials.
The running trials whose heartbeat has not been updated for a long time will be failed, that is, those states will be changed to
FAIL. The grace period is2 * heartbeat_interval.
- get_all_study_summaries()[source]
Read a list of
StudySummaryobjects.- Returns
A list of
StudySummaryobjects.- Return type
- get_all_trials(study_id, deepcopy=True, states=None)[source]
Read all trials in a study.
- Parameters
- Returns
List of trials in the study.
- Raises
KeyError – If no study with the matching
study_idexists.- Return type
- get_best_trial(study_id)[source]
Return the trial with the best value in a study.
This method is valid only during single-objective optimization.
- Parameters
study_id (int) – ID of the study.
- Returns
The trial with the best objective value among all finished trials in the study.
- Raises
KeyError – If no study with the matching
study_idexists.RuntimeError – If the study has more than one direction.
ValueError – If no trials have been completed.
- Return type
- get_current_version()[source]
Return the schema version currently used by this storage.
- Return type
- get_failed_trial_callback()[source]
Get the failed trial callback function.
- Returns
The failed trial callback function if it is set, otherwise
None.- Return type
Optional[Callable[[Study, FrozenTrial], None]]
- get_n_trials(study_id, state=None)
Count the number of trials in a study.
- Parameters
study_id (int) – ID of the study.
state (Optional[Union[Tuple[TrialState, ...], TrialState]]) – Trial states to filter on. If
None, include all states.
- Returns
Number of trials in the study.
- Raises
KeyError – If no study with the matching
study_idexists.- Return type
- get_study_directions(study_id)[source]
Read whether a study maximizes or minimizes an objective.
- get_trial(trial_id)[source]
Read a trial.
- get_trial_id_from_study_id_trial_number(study_id, trial_number)[source]
Read the trial id of a trial.
- get_trial_number_from_id(trial_id)[source]
Read the trial number of a trial.
Note
The trial number is only unique within a study, and is sequential.
- get_trial_params(trial_id)
Read the parameter dictionary of a trial.
- is_heartbeat_enabled()
Check whether the storage enables the heartbeat.
- record_heartbeat(trial_id)[source]
Record the heartbeat of the trial.
- Parameters
trial_id (int) – ID of the trial.
- Return type
None
- remove_session()[source]
Removes the current session.
A session is stored in SQLAlchemy’s ThreadLocalRegistry for each thread. This method closes and removes the session which is associated to the current thread. Particularly, under multi-thread use cases, it is important to call this method from each thread. Otherwise, all sessions and their associated DB connections are destructed by a thread that occasionally invoked the garbage collector. By default, it is not allowed to touch a SQLite connection from threads other than the thread that created the connection. Therefore, we need to explicitly close the connection from each thread.
- Return type
None
- set_study_directions(study_id, directions)[source]
Register optimization problem directions to a study.
- Parameters
study_id (int) – ID of the study.
directions (Sequence[StudyDirection]) – A sequence of direction whose element is either
MAXIMIZEorMINIMIZE.
- Raises
KeyError – If no study with the matching
study_idexists.ValueError – If the directions are already set and the each coordinate of passed
directionsis the opposite direction orNOT_SET.
- Return type
None
- set_study_system_attr(study_id, key, value)[source]
Register an optuna-internal attribute to a study.
This method overwrites any existing attribute.
- set_study_user_attr(study_id, key, value)[source]
Register a user-defined attribute to a study.
This method overwrites any existing attribute.
- set_trial_intermediate_value(trial_id, step, intermediate_value)[source]
Report an intermediate value of an objective function.
This method overwrites any existing intermediate value associated with the given step.
- Parameters
- Raises
KeyError – If no trial with the matching
trial_idexists.RuntimeError – If the trial is already finished.
- Return type
None
- set_trial_param(trial_id, param_name, param_value_internal, distribution)[source]
Set a parameter to a trial.
- Parameters
- Raises
KeyError – If no trial with the matching
trial_idexists.RuntimeError – If the trial is already finished.
- Return type
None
- set_trial_state(trial_id, state)[source]
Update the state of a trial.
- Parameters
trial_id (int) – ID of the trial.
state (TrialState) – New state of the trial.
- Returns
Trueif the state is successfully updated.Falseif the state is kept the same. The latter happens when this method tries to update the state ofRUNNINGtrial toRUNNING.- Raises
KeyError – If no trial with the matching
trial_idexists.RuntimeError – If the trial is already finished.
- Return type
- set_trial_system_attr(trial_id, key, value)[source]
Set an optuna-internal attribute to a trial.
This method overwrites any existing attribute.
- Parameters
- Raises
KeyError – If no trial with the matching
trial_idexists.RuntimeError – If the trial is already finished.
- Return type
None
- set_trial_user_attr(trial_id, key, value)[source]
Set a user-defined attribute to a trial.
This method overwrites any existing attribute.
- Parameters
- Raises
KeyError – If no trial with the matching
trial_idexists.RuntimeError – If the trial is already finished.
- Return type
None
- set_trial_values(trial_id, values)[source]
Set return values of an objective function.
This method overwrites any existing trial values.
- Parameters
- Raises
KeyError – If no trial with the matching
trial_idexists.RuntimeError – If the trial is already finished.
- Return type
None