M3GNet汎用力場を使うための設定¶
Pythonの設定¶
注釈
現在、NanoLabo同梱のLAMMPSは最新のmatglパッケージに対応しておりません。今後の更新で対応する予定ですが、暫定的に変更前時点(0.9.1)のmatglをお使いいただくようお願いいたします。
以下の説明は0.9.1を使うように変更済みですが、もし既に最新版のmatglをインストールされてしまった場合は、 pip install matgl==0.9.1 を実行してインストールし直してください。
LAMMPSからM3GNet汎用力場(従来版、MatGL版)+Simple DFT-D3による補正を使うために必要な設定手順を説明します。
従来版のM3GNetは単独のパッケージとして公開されましたが、その後継となるバージョンがMaterials Graph Library(MatGL)に含まれる形で新たに公開されています。アドバンスソフト改修版LAMMPSでは、従来版に同梱されている学習済みモデル MP-2021.2.8-EFS を使う場合は従来版のM3GNetを、それ以外の場合はMatGL版のM3GNetを選んで実行するようになっています。
実際に計算を行うマシン(計算サーバーにジョブ投入する場合には、その計算サーバー上)でインストールを行ってください。
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
(任意)GPUを使う場合
MatGL版M3GNetはPyTorchを使って実装されており、GPU版PyTorchを使うことで計算を高速化することができます。
NVIDIAドライバがインストールされていない場合は、あらかじめインストールしてください。
まず、PyTorchのGPU版をインストールします。CUDAバージョンが最新の場合は Get Started 、そうでない場合は Previous Versions を参照し、CUDAバージョンに合わせたpipのインストールコマンドを実行してください。
次に、Deep Graph Library(DGL)のGPU版をインストールします。 Get Started を参照し、CUDAバージョンに合わせたpipのインストールコマンドを実行してください。
インストール後、GPUが利用可能になっているかどうかPythonの対話環境で確認できます。
python >>> import torch >>> print(torch.cuda.is_available()) #GPU使用可否 True >>> exit() #Python環境終了
インストール
m3gnetと、DFT-D3補正に必要なパッケージをインストールします。
pip install m3gnet matgl==0.9.1 conda install simple-dftd3 dftd3-python -c conda-forge
NanoLaboへの設定¶
ローカル(NanoLaboを使っているマシン)で実行する場合
画面左上のアイコン
から (またはForce Field設定画面の
ボタン)でpython実行ファイルのパスを設定します。Windowsでは
condaのインストール先\python.exe、Linux・macOSではcondaのインストール先/bin/pythonにあります。リモート(計算サーバー等)で実行する場合
condaのインストール先が
~/anaconda3または~/miniconda3の場合は、デフォルトで追加されるLD_LIBRARY_PATHで動作しますので、設定は必要ありません。他の場所にインストールした場合は、画面左上のアイコン
から を開き、ジョブスクリプトに LD_LIBRARY_PATHを追加してください。export LD_LIBRARY_PATH=(condaのインストール先)/lib:$LD_LIBRARY_PATH
ヒント
実行時に次のようなエラーが出る場合があります。
ValueError: Model does not exists
これは実行に必要な学習済みのモデルデータが存在しないというメッセージです。m3gnetパッケージにはモデルデータが含まれていないため、初回実行時にダウンロードを試みますが、インターネット接続に問題があると実行できません。
代替として、モデルデータを手動でダウンロードすることもできます。m3gnetのリポジトリのMP-2021.2.8-EFSフォルダ内のファイルをダウンロードし、 (condaのインストール先)/lib/site-packages/m3gnet/models/MP-2021.2.8-EFS に保存してください。
また、MatGL版M3GNetでも同じ理由で次のエラーが出る場合があります。
ValueError: No valid model found in pre-trained_models at https://github.com/materialsvirtuallab/matgl/raw/main/pretrained_models/.
MatGL版の場合は、matglのリポジトリに各モデル名のフォルダがありますので、使用するモデルのファイルをダウンロードし、 (ホームディレクトリ)/.cache/matgl/(モデル名) に保存してください。
ヒント
Windowsで、実行時に次のようなエラーが出る場合があります。
OMP: Error #15: Initializing libiomp5md.dll, but found libiomp5md.dll already initialized.
この場合、 (condaのインストール先)\Library\bin\libiomp5md.dll をリネーム(例: libiomp5md.dll_ )してください。
ヒント
PyTorch1.13.1以前で次のようなエラーが出ることを確認しています。
IndexError: tensors used as indices must be long, byte or bool tensors
この場合、PyTorchのバージョンを確認し、PyTorch2以降をインストールしてください。
# インストールされているバージョンを確認
pip list
# PyTorchをアンインストール
pip uninstall torch torchvision torchaudio
# インストール可能なPyTorchのバージョンを表示
pip install torch==
# PyTorch2以降を指定してインストール
pip install 'torch>=2' torchvision torchaudio
LAMMPSを直接実行する場合¶
NanoLaboを使わず、LAMMPS単体で実行する場合の説明です。
NanoLabo Tool同梱の実行ファイル lammps_m3gnet を使用します。MPI並列計算には非対応です。
Linux・macOSでは、実行時にPythonの動的ライブラリを使用しますので、環境変数 LD_LIBRARY_PATH を設定してください。
$ export LD_LIBRARY_PATH=(condaのインストール先)/lib:$LD_LIBRARY_PATH
また、Linuxでは環境変数 OPAL_PREFIX を設定してください。
$ export OPAL_PREFIX=/opt/AdvanceSoft/NanoLabo/exec.LINUX/mpi
LAMMPSから m3gnet_driver.py または matgl_driver.py を呼び出すことで動作しますので、NanoLabo Toolインストール先の m3gnet フォルダをPythonのモジュール検索パスに追加してください。例えば、環境変数 PYTHONPATH に追加します。
$ export PYTHONPATH=(NanoLabo Toolのインストール先)/m3gnet:$PYTHONPATH
LAMMPSの入力ファイル中で、以下のようにpair_styleを設定します。
pair_style m3gnet
pair_coeff * * <model> <元素名1 元素名2 ...>
pair_style m3gnet/d3
pair_coeff * * <model> <元素名1 元素名2 ...>
パラメーター
model
使用するグラフニューラルネットワークのモデルMP-2021.2.8-EFSを指定すると、従来版M3GNet+同梱の学習済みモデルを使用M3GNet-MP-2021.2.8-PESまたはM3GNet-MP-2021.2.8-DIRECT-PESを指定すると、MatGL版M3GNet+同梱の学習済みモデルを使用フォルダパスを指定すると、MatGL版M3GNet+フォルダに保存されたモデルを使用元素名
LAMMPSのatom type毎に、対応する元素名を列挙
ヒント
次のようなエラーで実行できない場合があります。
Fatal Python error: init_fs_encoding: failed to get the Python codec of the filesystem encoding
Python runtime state: core initialized
ModuleNotFoundError: No module named 'encodings'
この場合、環境変数 PYTHONHOME が正しく設定されているかご確認ください。
set PYTHONHOME=(condaのインストール先)