インストール#

実行環境・必要なパッケージ#

  • python 3.9 以上

    • 必要なpythonパッケージ

      • tomli (>= 1.2) : TOML形式の設定ファイルを読み込むため

      • numpy (>= 1.14) : 数値計算のため

      • matplotlib (>= 3) : 計算結果の可視化やポスト処理ツールでのプロットのため

    • Optional なパッケージ(特定の最適化手法を使用する場合に必要)

      • mpi4py (mapper, random_search, exchange, pamc, global_search などのMPI並列利用時) : 並列計算による高速化のため

      • scipy (minsearch, global_search 利用時) : Nelder-Mead法などの局所最適化および大域最適化のため

      • physbo (ベイズ最適化利用時, ver. 2.0以上) : ベイズ最適化のため

      • tqdm (ポスト処理ツールでプログレスバーを表示する場合) : 進捗表示のため

ダウンロード・インストール#

下記に示す方法で、 ODAT-SE python パッケージと odatse コマンドがインストールできます。

  • PyPI からのインストール(推奨)

    • python3 -m pip install ODAT-SE

      • --user オプションをつけるとローカル ($HOME/.local) にインストールできます

      • ODAT-SE[all] とすると Optional なパッケージも同時にインストールします

  • ソースコードからのインストール

    1. git clone https://github.com/issp-center-dev/ODAT-SE

    2. python3 -m pip install ./ODAT-SE

    • pip のバージョンは 19 以上が必要です (python3 -m pip install -U pip で更新可能)

  • サンプルファイルのダウンロード

    • サンプルファイルはソースコードに同梱されています(リポジトリ内の sample/ ディレクトリ)。

    • git clone https://github.com/issp-center-dev/ODAT-SE

インストールの確認#

インストールが正常に完了したかを確認するには、以下のコマンドを実行します。

$ odatse --version
$ odatse --help

アンインストール#

ODAT-SE モジュールをアンインストールするには、以下のコマンドを実行します。

$ python3 -m pip uninstall ODAT-SE

関連するオプションパッケージも個別にアンインストールする必要がある場合は、同様のコマンドで実行できます。

実行方法#

odatse コマンドは定義済みの最適化アルゴリズム Algorithm と順問題ソルバー Solver の組み合わせで解析を行います。

$ odatse input.toml

定義済みの Algorithm については 探索アルゴリズム を、 Solver については 順問題ソルバー を参照してください。

クイックスタート#

インストール後の動作確認を兼ねて、解析関数の最小化を実行してみます。 以下の内容で input.toml を作成します(サンプルファイルのダウンロードは不要です)。

[base]
dimension = 2
output_dir = "output"

[solver]
name = "analytical"
function_name = "himmelblau"

[algorithm]
name = "minsearch"
seed = 12345

[algorithm.param]
min_list = [-6.0, -6.0]
max_list = [ 6.0,  6.0]
initial_list = [0, 0]

注釈

minsearch の実行には scipy が必要です。 python3 -m pip install ODAT-SE だけでは scipy はインストールされないため、 python3 -m pip install 'ODAT-SE[min_search]' (または 'ODAT-SE[all]')でインストールしてください。 ModuleNotFoundError が出る場合は トラブルシューティング を参照してください。

同じディレクトリで次を実行します。計算は数秒で終わります。

$ odatse input.toml

output/res.txt に最適化結果が出力されます。

fx = 4.2278370361994904e-08
x1 = 2.9999669562950175
x2 = 1.9999973389336225

Himmelblau 関数の最小値の一つ \((3, 2)\) (関数値 \(0\))が正しく求められています。 より詳しい説明や他のアルゴリズムの使い方は チュートリアル を参照してください。

コマンドラインオプション#

odatse コマンドには、実行モードを切り替えるオプション(チェックポイントからの再開 --resume 、終了した計算の延長 --cont など)や、MPI プロセスの割り当てを制御するオプション(--nalg, --nsolve)があります。

例:

$ odatse --resume input.toml

オプションの一覧と詳細は odatse コマンド を参照してください。

関連パッケージ#

2次元物質構造解析向けの順問題ソルバーを ODAT-SE から利用するためのラッパーが、独立なパッケージとして提供されています。 これらの解析を行う場合は、別途パッケージと順問題ソルバー本体をインストールしてください。 現在は以下のラッパーパッケージが用意されています。

  • odatse-STR -- 全反射高速陽電子回折 (TRHEPD) 表面構造解析のための高精度な手法です。

  • odatse-SXRD -- 表面X線回折 (SXRD) 表面や界面の原子配列を調べるためのX線回折手法です。

  • odatse-LEED -- 低速電子線回折 (LEED) 固体表面の結晶構造を調べるための電子回折手法です。

  • odatse-XAFS -- X線吸収微細構造 (XAFS) X線吸収スペクトルから吸収原子周辺の局所構造を調べるための手法です。

AlgorithmSolver をユーザーが準備する場合は、 ODAT-SE パッケージを利用します。 詳しくは 拡張 を参照してください。

なお、 プログラムを改造する場合など、 odatse コマンドをインストールせずに直接実行することも可能です。 src/odatse_main.py を利用してください。

$ python3 src/odatse_main.py input.toml

MPI並列計算#

ODAT-SEは、MPIを用いた並列計算をサポートしています。MPIを使用することで、複数のプロセスを用いて計算を高速化できます。

  • mapperrandom_searchexchangepamc はMPI並列計算による高速化が可能です

  • global_search は差分進化法と shgo で候補点の評価を MPI 並列化できます (direct を除く)

  • bayesmpi4py が利用可能な環境では MPI 並列計算に対応します

  • 並列実行時は、各プロセスがそれぞれ独自の乱数系列を持ちます (seedseed_delta パラメータ参照)

  • チェックポイント機能に対応したアルゴリズムでは、チェックポイントファイルがアルゴリズム側のランクごとに作成されます

実行例:

$ mpirun -np 4 odatse input.toml

-np 4 の部分は使用するプロセス数を指定します。使用可能なコア数に応じて調整してください。

環境によっては mpiexec や他のコマンド、またはジョブスケジューラを通してMPIプログラムを実行する場合もあります。特に大規模計算機センターなどでは、システム固有の実行方法があります。詳しくはご利用の環境のマニュアルを参照してください。

注釈

アルゴリズムによって並列化効率は異なります。例えば exchange では、レプリカ数と同じかそれ以下のプロセス数を使用するのが効率的です。