ハイパーパラメータ自動最適化フレームワークのOptunaの並列化を簡単に実行するためのツールです。
DockerでPython実行環境とMySQLを作成しハイパーパラメータのチューニングを行います。
MySQLでチューニングの実行結果を保存し並列化を行います。
上図の通り複数の端末を使用して並列でハイパーパラメータのチューニングが可能です。
一端末内の別プロセスでの並列化も可能です。
各端末で同じ環境をdockerで作成します。
以降、MySQLを置く端末をメイン端末、メインに接続し並列で処理を行う端末をサブ端末と呼びます。
optuna-dashbordによりリアルタイムで結果を確認できます。
Docker Engine v20.10.0
Docker Compose v1.27.4
M1 Macで動作確認
以下の手順でサンプルを実行できます。
※以下のコマンドはルートで実行してください。
- イメージ作成
docker build . -t optuna_env
タグ名をoptuna_envにすること。
-
.envの作成
.sample_envをコピーして.envファイルを作成してください。
MYSQLの環境情報は任意で変更可能です。
MAIN_IPはサブ端末で変更するので変更しないこと。 -
DBの作成とJupyter、optuna-dashboardの起動
docker-compose up
このコマンド実行でDBの作成とJupyter notebookとoptunaのダッシュボードを起動します。
以下のURLからアクセス可能です。
Jupyter notebook:
http://127.0.0.1:8888/?token=<token>
※コンソールにこの体系でURLが表示されます。
optunaのダッシュボード:
http://127.0.0.1:8080/
- 処理の実行
サンプルの処理はJupyter notebookもしくはシェルスクリプトから実行できます。
シェルスクリプトからの実行:
sh script/execForMain.sh sample.py
※第一引数に実行したいファイル名を指定
- ダッシュボードで確認
2で起動したダッシュボードでリアルタイムで結果を確認できます。
- イメージ作成
docker build . -t optuna_env
タグ名をoptuna_envにすること。
-
.envの作成
.sample_envをコピーして.envファイルを作成してください。
MYSQLの環境情報は任意で変更可能です。
MAIN_IPは同一ネットワークのメイン端末のIPに変更します。
例)MAIN_IP=192.168.0.0 -
処理の実行
サンプルの処理はJupyter notebookもしくはシェルスクリプトから実行できます。
Jupyter notebookの起動:
sh script/execJupyterForSub.sh
http://127.0.0.1:8888/?token=<token>
※コンソールにこの体系でURLが表示されます。
シェルスクリプトからの実行:
sh script/execForSub.sh sample.py
※第一引数に実行したいファイル名を指定
- ダッシュボードで確認
以下のスクリプトでダッシュボードを起動し、リアルタイムで結果を確認できます。
optunaのダッシュボードの起動:
sh script/execDashboardForSub.sh
Jupyter notebook作成、編集すると.pyファイルが同時に作成、編集できます。
.pyでの実行の方がおそらく早そうなので、Jupyter notebookでロジックを編集してスクリプトで実行が良さそう。