1ノードでPostgreSQLを起動し、残りの計算ノードでOptunaを実行したい場合の手順を紹介します。4ノードを使用するジョブを動かすと、1ノードでPostgreSQL、3ノードでOptunaを実行します。こちらで紹介されている「Saving/Resuming Study with RDB Backend」をOCTOPUSの計算ノードで実施します。また、こちらで紹介されている「Share the Study among Multiple Nodes and Processes」を元に、複数ノードでの実行を行います。
 

1.PostgreSQLのインストール

Work領域配下に、p13.0ディレクトリを作成し、PostgrSQLをインストールします。PGDATAには、PostgreSQLのデータベースディレクトリを指定します。

 

2.PostgreSQLの初期設定

 

3.PostgreSQL設定ファイルの編集

$PGDATA/postgresql.confを以下のように修正してください。

#listen_addresses = 'localhost'

listen_addresses = '*'

$PGDATA/pg_hba.confの末尾に以下を追加してください。

host     all     all     0.0.0.0/0     trust

 

4.PostgreSQLのユーザとデータベースの作成

PostgreSQLをログインサーバ上で起動します。
* 重要 * PostgreSQLはサーバプロセスなので作業が終了したのち、必ず停止させてください。

Postgresユーザ"pguser"を作成します。

データベース"optunadb"を作成します。

 
PostgreSQLを停止します。

 

5.Optunaのインストール

Anacondaで仮想環境"optuna-env"を構築し、Optunaをイントールします。

上記のコマンドを実行するとプロンプトの表示が
(optuna-env) [user@octopus01 ~]$
に変わります。以降はその状態で作業してください。

 

6.データベースのテーブルを作成

Optunaは学習データをPostgreSQLのデータベースに保存します。そのためにはデータベース上にstudyを作成する必要があります。手順5のAnacondaによる仮想環境"optuna-env"での作業となります。

次にPython3を対話式コンソールを立ち上げ、手順4で作成したPostgreSQLのユーザ"pguser"を使ってデータベース"optunadb"上にOptunaのstudyを保存します。

処理が終了したら、必ずPosgreSQLを終了してください。これでOptunaでの計算準備が整いました。

 

7.Optunaの実行

7-1.ログインノードでの実行

OCTOPUSのログインノードで、OptunaのWEBページに公開されている手順を試行します。ログインノードは簡単な動作確認や実行結果の確認にのみご利用ください。負荷のかかる長時間の計算は、手順7-2をご参照のうえ、OCTOPUSの計算ノードをご利用ください。
 
PostgreSQLを起動します。

Python3を対話式コンソールを立ち上げ、studyを呼び出し、学習を試行します。

Python3を対話式コンソールを立ち上げ、studyを呼び出し、学習を結果を出力します。

処理が終了したら、必ずPosgreSQLを終了してください。

 

7-2.計算ノードでの実行

OCTOPUSの計算ノードで、OptunaのWEBページに公開されている手順を試行し、加えてこちらで紹介されている「Share the Study among Multiple Nodes and Processes」を元に、複数ノードでの実行を行います。
 

Pythonスクリプト"optuna_sample.py"と、OCTOPUSに投入するためのジョブスクリプト"nqs.sh"を以下に示します。
nqs.shをqsubして、OCTOPUSに投入してください。