简单并行化

并行化 optuna.study.Study.optimize() 是很直接的。

如果你想手动执行 Optuna 优化:

  1. 启动一个RDB服务器(此示例使用MySQL)

  2. 使用 --storage 参数创建一个学习

  3. 在多个节点和进程之间共享学习

当然,你可以像 kubernetes 示例 中那样使用 Kubernetes。

要查看 Optuna 中的并行优化如何工作,请查看以下视频。

创建一个学习

你可以使用 optuna create-study 命令创建一个研究。或者,在 Python 脚本中你可以使用 optuna.create_study()

$ mysql -u root -e "CREATE DATABASE IF NOT EXISTS example"
$ optuna create-study --study-name "distributed-example" --storage "mysql://root@localhost/example"
[I 2020-07-21 13:43:39,642] A new study created with name: distributed-example

然后,编写一个优化脚本。假设 foo.py 包含以下代码。

import optuna


def objective(trial):
    x = trial.suggest_float("x", -10, 10)
    return (x - 2) ** 2


if __name__ == "__main__":
    study = optuna.load_study(
        study_name="distributed-example", storage="mysql://root@localhost/example"
    )
    study.optimize(objective, n_trials=100)

在多个节点和进程之间共享学习

最后,从多个进程运行共享研究。例如,在一个终端中运行 Process 1,在另一个终端中运行 Process 2。它们根据共享试验的历史记录获取参数建议。

流程 1:

$ python foo.py
[I 2020-07-21 13:45:02,973] Trial 0 finished with value: 45.35553104173011 and parameters: {'x': 8.73465151598285}. Best is trial 0 with value: 45.35553104173011.
[I 2020-07-21 13:45:04,013] Trial 2 finished with value: 4.6002397305938905 and parameters: {'x': 4.144816945707463}. Best is trial 1 with value: 0.028194513284051464.
...

过程 2 (与过程 1 相同的命令):

$ python foo.py
[I 2020-07-21 13:45:03,748] Trial 1 finished with value: 0.028194513284051464 and parameters: {'x': 1.8320877810162361}. Best is trial 1 with value: 0.028194513284051464.
[I 2020-07-21 13:45:05,783] Trial 3 finished with value: 24.45966755098074 and parameters: {'x': 6.945671597566982}. Best is trial 1 with value: 0.028194513284051464.
...

备注

n_trials 是每个进程将运行的试验次数,而不是所有进程的试验总数。例如,上述脚本为每个进程运行100次试验,100次试验 * 2个进程 = 200次试验。optuna.study.MaxTrialsCallback 可以确保所有进程中将执行多少次试验。

备注

我们不推荐在分布式优化中大规模使用 SQLite,因为它可能会导致死锁和严重的性能问题。请考虑使用其他数据库引擎,如 PostgreSQL 或 MySQL。

备注

在运行分布式优化时,请避免将SQLite数据库放在NFS上。另见:https://www.sqlite.org/faq.html#q5

脚本的总运行时间: (0 分钟 0.000 秒)

由 Sphinx-Gallery 生成的图库