Open Catalyst Project汎用力場を使うための設定¶
Pythonの設定¶
注釈
現在、NanoLabo同梱のLAMMPSは最新のocpリポジトリの内容に対応しておりません。今後の更新で対応する予定ですが、暫定的に変更前時点(e7a8745)のocpリポジトリの内容をお使いいただくようお願いいたします。
以下の説明はe7a8745版を使うように変更済みですが、もし既に最新版のocpリポジトリの内容をインストールされてしまった場合は、e7a8745版のzipファイルをダウンロード・解凍するか、 git reset e7a8745 --hard を実行した上で、
conda activate ocp-models
pip install -e .
を実行してインストールし直してください。
またインストール後、LAMMPS実行時に ModuleNotFoundError: No module named *** のエラーが出る場合は、対応するパッケージを pip install *** でインストールしてください。
Open Catalyst Projectで公開されているインストール手順に沿って、LAMMPSから汎用力場を使うために必要な設定手順を説明します。
実際に計算を行うマシン(計算サーバーにジョブ投入する場合には、その計算サーバー上)でインストールを行ってください。
ヒント
Open Catalyst Projectのリポジトリは継続的に更新されており、このページで説明するインストール手順は最新でない場合があります。インストール・実行がうまくいかない場合は元のインストール手順もご参照ください。
(任意)CUDAの用意
GPUを使って計算を行うには、CUDA Toolkitがインストールされている必要があります。
NVIDIAのダウンロードページからCUDA Toolkit 11.6をダウンロードし、インストールしてください。
NVIDIAドライバがインストールされていない場合は、そちらもインストールしてください。
conda環境の用意
Python環境としてcondaを使用します。現在condaをお使いでない場合は、必要最小限の構成であるMinicondaを推奨します。
MinicondaのページからPython 3.9のインストーラーをダウンロードし、インストールしてください。
Windowsで環境変数
PATHを変更しない設定でインストールした場合、以降の作業はスタートメニューからAnaconda Promptを起動して行ってください。インターネット接続にプロキシが必要な場合は、環境変数の設定等を適宜行ってください。
Windows・認証なしの例¶set HTTP_PROXY=http://host:port set HTTPS_PROXY=http://host:port
Linux・認証ありの例¶export HTTP_PROXY=http://user:pass@host:port export HTTPS_PROXY=http://user:pass@host:port
ocp-modelsリポジトリの用意
gitコマンドが使える場合は
git clone https://github.com/Open-Catalyst-Project/ocp.git cd ocp git reset e7a8745
または https://codeload.github.com/Open-Catalyst-Project/ocp/zip/e7a8745 をダウンロード・解凍します。
インストール
リポジトリのフォルダに移動し、まずはインストールに使用するパッケージをインストールします。
conda install mamba conda-merge -n base -c conda-forge次に、ocp-models仮想環境の作成に必要なパッケージが書かれたファイル
env.ymlを出力します。CPUで計算を行う(GPUを使わない)場合¶conda-merge env.common.yml env.cpu.yml > env.ymlGPUで計算を行う場合¶conda-merge env.common.yml env.gpu.yml > env.ymlここで環境により、
env.ymlを開いて修正します。Windowsの場合は、一部のパッケージについて指定されたバージョンが存在しないため、次の2行を変更してください。
変更前¶- pyg=2.2.0 - pytorch=1.13.1
CPUで計算を行う場合¶- pyg=*=*cpu* - pytorch=1.12
GPUで計算を行う場合¶- pyg - pytorch=1.12
また、CPUで計算を行う場合、関連ライブラリのCPUバージョンを明示的に指定するため、次の4行を
dependencies:のリスト内に追加してください(- pytorch=の行の前後に追加すると分かりやすいです)。- pytorch-cluster=*=*cpu* - pytorch-scatter=*=*cpu* - pytorch-sparse=*=*cpu* - pytorch-spline-conv=*=*cpu*
その後、実際に仮想環境を作成します。
mamba env create -f env.ymlパッケージのダウンロード・インストールが行われるため、時間がかかります。
成功したら、ocp-models仮想環境に入り、リポジトリの内容をパッケージとしてインストールします。
conda activate ocp-models pip install -e .
ヒント
以下のようなエラーが出た場合、
env.ymlで指定されているパッケージのバージョンを変更することで解消する場合があります。Could not solve for environment specs Encountered problems while solving: - nothing provides requested (パッケージ名) (バージョン)
利用可能なパッケージのバージョンを検索するには、以下のコマンドを実行します。
mamba search -c pytorch -c nvidia -c pyg -c conda-forge -c defaults (パッケージ名)env.ymlで該当するパッケージのバージョンを変更したら、環境の作成を再試行します。mamba env update -f env.ymlただし、指定されたものと異なるバージョンのパッケージで環境を作成した場合、正常に動作しない可能性がありますので、注意して動作確認を行ってください。
ヒント
ここで作成したocp-models仮想環境を削除するには、
conda deactivate mamba remove -n ocp-models --all
を実行します。
学習済みのモデル(ptファイル)はNanoLabo Toolに同梱されているため、ダウンロードの手順を行う必要はありません。
NanoLaboへの設定¶
ローカル(NanoLaboを使っているマシン)で実行する場合
画面左上のアイコン
から (またはForce Field設定画面の
ボタン)でpython実行ファイルのパスを設定します。Windowsでは
condaのインストール先\envs\ocp-models\python.exe、Linux・macOSではcondaのインストール先/envs/ocp-models/bin/pythonにあります。リモート(計算サーバー等)で実行する場合
condaのインストール先が
~/anaconda3または~/miniconda3の場合は、デフォルトで追加されるLD_LIBRARY_PATHで動作しますので、設定は必要ありません。他の場所にインストールした場合は、画面左上のアイコン
から を開き、ジョブスクリプトに LD_LIBRARY_PATHを追加してください。export LD_LIBRARY_PATH=(condaのインストール先)/envs/ocp-models/lib:$LD_LIBRARY_PATH
LAMMPSを直接実行する場合¶
NanoLaboを使わず、LAMMPS単体で実行する場合の説明です。
NanoLabo Tool同梱の実行ファイル lammps_oc20 を使用します。MPI並列計算、ビリアル応力の計算(NPT・NPHアンサンブル、セル最適化)には非対応です。
Linux・macOSでは、実行時にPythonの動的ライブラリを使用しますので、環境変数 LD_LIBRARY_PATH を設定してください。
$ export LD_LIBRARY_PATH=(condaのインストール先)/envs/ocp-models/lib:$LD_LIBRARY_PATH
また、Linuxでは環境変数 OPAL_PREFIX を設定してください。
$ export OPAL_PREFIX=/opt/AdvanceSoft/NanoLabo/exec.LINUX/mpi
LAMMPSから oc20_driver.py を呼び出すことで動作しますので、NanoLabo Toolインストール先の oc20driver フォルダをPythonのモジュール検索パスに追加してください。例えば、環境変数 PYTHONPATH に追加します。
$ export PYTHONPATH=(NanoLabo Toolのインストール先)/oc20driver:$PYTHONPATH
LAMMPSの入力ファイル中で、以下のようにpair_styleを設定します。
pair_style oc20
pair_coeff * * <model> <元素名1 元素名2 ...>
pair_style oc20/gpu
pair_coeff * * <model> <元素名1 元素名2 ...>
パラメーター
model
使用するグラフニューラルネットワークのモデルDimeNet++, GemNet-dT_OC20, GemNet-dT_OC22, CGCNN, SchNet, SpinConv のいずれかを指定(GemNet-dTを指定した場合、GemNet-dT_OC20を使用します)元素名
LAMMPSのatom type毎に、対応する元素名を列挙