3. 基本的な使用方法¶
3.1. 能動学習について¶
abICSは元々、第一原理計算とレプリカ交換モンテカルロ法を直接組み合わせて統計熱力学計算を行うことを念頭に開発されましたが、 計算できるモデル規模やステップ数が、第一原理計算の大きな計算コストのために限られてしまいます。 これに対して、Ver. 2では、構造最適化後のエネルギーを高速に予測する機械学習モデルを構成するための能動学習手法を実装し、 飛躍的にサンプリング速度を向上させました [Kasamatsu et al. 2022] 。
abICSに実装されている能動学習手法の大まかな流れは以下の通りです。
ランダムに生成した多数の原子配置に対して第一原理計算を行い、訓練データ(原子配置とエネルギーの対応関係)を用意する
用意した訓練データを使って、原子配置からエネルギーを予測する機械学習モデルを構築する
機械学習モデルを使って、レプリカ交換モンテカルロ法による原子配置の統計熱力学サンプリングを行う
モンテカルロ計算で出現したイオン配置をサンプリングし、それぞれに対して第一原理計算を行うことで、機械学習モデルの精度の評価を行う
不十分であった場合は、4.で計算した結果を訓練データに追加し、2.から繰り返す。
abICSを用いた能動学習のイメージ図
3.2. abICS制御用入力ファイルの準備¶
まず、abICSの動作全般を制御する入力ファイルを作成します。 abICSの入力ファイルは, 以下の5つのセクションから構成されます.
[sampling] セクション
レプリカ数や温度の幅, モンテカルロステップ数など,レプリカ交換モンテカルロ部分のパラメータを指定します.また、利用するソルバーの種類 (VASP, QE, ...)、ソルバーへのパス、不変な入力ファイルのあるディレクトリなど(第一原理計算)ソルバーのパラメータを指定します.
[mlref] セクション
ニューラルネットワークモデルの精度評価と訓練データの拡張などを行うため、サンプリングの結果から原子配置のみを取り出す際のオプションを設定します.
abics_mlrefのみで使用されます. また、訓練データを作成するために利用するソルバーの種類 (VASP, QE, ...)、ソルバーへのパス、不変な入力ファイルのあるディレクトリなど(第一原理計算)ソルバーのパラメータを指定します.[train] セクション
訓練データから配置エネルギー予測モデルを学習する学習器の設定を行います.
abics_trainのみで使用されます.[observer] セクション
計算する物理量を指定します.
[config] セクション
合金の配位などを指定します.
これらの詳細については 入力ファイルフォーマット をご覧ください。 以下に入力ファイルの例を記載します。
3.3. 第一原理ソルバー用参照ファイルの準備¶
訓練データの生成に用いる第一原理ソルバーの入力形式に従った入力ファイルを用意します。
参照ファイルのパスはabICSの入力ファイルにある [mlref.solver] セクションの base_input_dir で指定します。
座標情報については記載する必要はありません。
以下、Quantum ESPRESSOの参照ファイルの例について記載します。
&CONTROL
calculation = 'relax'
tstress = .false.
tprnfor = .false.
pseudo_dir = './pseudo'
disk_io = 'low'
wf_collect = .false.
/
&SYSTEM
ecutwfc = 60.0
occupations = "smearing"
smearing = "gauss"
degauss = 0.01
/
&electrons
mixing_beta = 0.7
conv_thr = 1.0d-8
electron_maxstep = 100
/
&ions
/
ATOMIC_SPECIES
Al 26.981 Al.pbe-nl-kjpaw_psl.1.0.0.UPF
Mg 24.305 Mg.pbe-spnl-kjpaw_psl.1.0.0.UPF
O 16.000 O.pbe-n-kjpaw_psl.1.0.0.UPF
ATOMIC_POSITIONS crystal
K_POINTS gamma
3.3.1. 第一原理ソルバー利用時の注意点¶
原子座標以外の設定については基本的にソルバーごとに指定する必要があります。ただし、構造最適化をする原子の指定についてはabICS側で制御することが可能です。構造最適化機能を有効にする場合には、ソルバーの参照ファイルで構造最適化オプションを有効にした上で、構造最適化のステップ数なども指定することで最適化が行われます。 また、abICSではソルバー毎に、参照ファイル名、実装時に仮定している参照ファイルのルールなどがあります。 以下、それらについて説明します。
VASP¶
URL : https://www.vasp.at
参照ファイル
INCAR, POTCAR, KPOINTS ファイルを用意してください。
POTCARファイルは元素をアルファベット順に並べてください。
POSCARファイルは不要ですが、依存パッケージである
pymatgenのバージョンによっては必要になります。その場合、なにか適当なファイルを用意してください。
Quantum Espresso¶
バージョンは 6.2 以上を利用してください。
いわゆる旧形式 XML バージョンは利用できません。
参照ファイル
参照ファイル名は
scf.inにしてください。calculationはscfとrelaxのみ対応しています。\(\Gamma\) 点のみで計算する場合には、
kpointsをGammaに指定すると高速化します。
OpenMX¶
バージョンは 3.9 を利用してください。
参照ファイル
参照ファイル名は
base.datにしてください。
3.4. 機械学習モデル訓練および評価用参照ファイルの準備¶
使用する機械学習モデルソルバー(現在はaenetのみに対応)の入力形式に従った入力ファイルを用意します。
参照ファイルのパスはabICSの入力ファイルにある [solver] セクションの base_input_dir で指定します。
座標情報については、abICSの入力ファイルを参照するため、記載する必要はありません。
3.4.1. 機械学習モデルソルバー利用時の注意点¶
aenet¶
URL : http://ann.atomistic.net
aenet 2.0.4 で動作確認済。
参照ファイル(参照ファイルの具体例についてはチュートリアル参照)
aenet用の入力ファイルを
[train]セクションのbase_input_dirで設定したディレクトリ内のgenerate、train、およびpredictディレクトリに設置してください。aenetでは、訓練用の原子配置とエネルギーのデータを、原子環境記述子とエネルギーの関係に変換した中間バイナリフォーマットにまとめてから訓練を行います。この変換を行う
generate.x用の 入力ファイルをgenerateディレクトリに設置してください。generate.xで生成された訓練データを読み込み、訓練を行うtrain.x用の入力ファイルをtrainディレクトリに設置します。 ファイル名はtrain.inとしてください。訓練したポテンシャルモデルを使って入力座標に対してエネルギーを 評価するための
predict.x用の入力ファイルpredict.inを、predictディレクトリに設置してください。
NequIP¶
NequIP 0.6.1 で動作確認済。
参照ファイル(参照ファイルの具体例についてはチュートリアル参照)
NequIP用の入力ファイル
input.yamlを[train]セクションのbase_input_dirで設定したディレクトリ内のtrainディレクトリに設置してください。n_trainとn_valには、訓練データと検証データの「割合」を指定してください. 例えば、n_train = 80%、n_val = 20%と指定すると、訓練データと検証データの割合がそれぞれ80%、20%になります。
MLIP-3¶
コミットハッシュ 5f6970e3966c5941a4b42b27a3e9170f162532a0 (2023-06-06T21:27:11) で動作確認済。
参照ファイル(参照ファイルの具体例についてはチュートリアル参照)
MLIP-3用の入力ファイル
input.almtpを[train]セクションのbase_input_dirで設定したディレクトリ内のtrainディレクトリに設置してください。
3.5. 学習データの作成¶
abics_mlrefを用いて訓練データの大元となる第一原理計算用の入力ファイルを生成します。1で生成した入力ファイルに対して第一原理計算を実施します(チュートリアルでは
GNU parallelを利用し網羅計算を実行しています)。
3.6. 機械学習モデルの作成¶
abics_mlrefを再度実行して、学習で用いるabics_trainが読み込めるよう第一原理計算の結果を変換します。次に
abics_trainを実行して機械学習モデルの作成を行います。 計算が無事終了すると、baseinputディレクトリに学習済みの機械学習モデル(ニューラルネットワーク)が出力されます。
3.7. モンテカルロサンプリングの実行¶
abics_sampling を用いてモンテカルロサンプリングを行います(MPI 実行時に指定するプロセス数はレプリカ数以上である必要があります)。
実行すると、カレントディレクトリ以下にレプリカ番号を名前にもつディレクトリが作られ、各レプリカはその中でソルバーを実行します。
なお、 LAMMPSインターフェースをもちいた aenet ライブラリ呼び込みにも対応しています(aenetPyLammps)。
ファイル入出力やプロセスフォークなどを行わないため、 aenet を直接呼び出すよりも高速に動作します。
aenetPyLammps の利用には、 aenet-lammps および LAMMPS のインストールが必要です。
インストールや使い方の詳細は LAMMPS インターフェースを利用したサンプリング を参照してください。
3.8. 期待値計算¶
abics_sampling は最後に物理量の期待値を温度ごとに計算・出力します。
また、 abics_sampling でサンプリングした結果を用いて(新たにサンプリングせずに)別の物理量を計算するためには、 abics_postproc を利用できます。