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を選んで実行するようになっています。

実際に計算を行うマシン(計算サーバーにジョブ投入する場合には、その計算サーバー上)でインストールを行ってください。

  1. 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
    
  2. (任意)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環境終了
    
  3. インストール

    m3gnetと、DFT-D3補正に必要なパッケージをインストールします。

    pip install m3gnet matgl==0.9.1
    conda install simple-dftd3 dftd3-python -c conda-forge
    

NanoLaboへの設定

  • ローカル(NanoLaboを使っているマシン)で実行する場合

    画面左上のアイコン mainmenuicon から Properties ‣ Python (またはForce Field設定画面の gearicon ボタン)でpython実行ファイルのパスを設定します。

    Windowsでは condaのインストール先\python.exe 、Linux・macOSでは condaのインストール先/bin/python にあります。

  • リモート(計算サーバー等)で実行する場合

    condaのインストール先が ~/anaconda3 または ~/miniconda3 の場合は、デフォルトで追加される LD_LIBRARY_PATH で動作しますので、設定は必要ありません。

    他の場所にインストールした場合は、画面左上のアイコン mainmenuicon から Network ‣ SSH server を開き、ジョブスクリプトに 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 に追加します。

Linuxの例
$ export PYTHONPATH=(NanoLabo Toolのインストール先)/m3gnet:$PYTHONPATH

LAMMPSの入力ファイル中で、以下のようにpair_styleを設定します。

M3GNet
pair_style m3gnet
pair_coeff * * <model> <元素名1 元素名2 ...>
M3GNet + DFT-D3による補正
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 が正しく設定されているかご確認ください。

Windowsの例
set PYTHONHOME=(condaのインストール先)