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のリポジトリは継続的に更新されており、このページで説明するインストール手順は最新でない場合があります。インストール・実行がうまくいかない場合は元のインストール手順もご参照ください。

  1. (任意)CUDAの用意

    GPUを使って計算を行うには、CUDA Toolkitがインストールされている必要があります。

    NVIDIAのダウンロードページからCUDA Toolkit 11.6をダウンロードし、インストールしてください。

    NVIDIAドライバがインストールされていない場合は、そちらもインストールしてください。

  2. 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
    
  3. 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 をダウンロード・解凍します。

  4. インストール

    リポジトリのフォルダに移動し、まずはインストールに使用するパッケージをインストールします。

    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.yml
    
    GPUで計算を行う場合
     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を使っているマシン)で実行する場合

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

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

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

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

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

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

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

CPUで計算を行う(GPUを使わない)場合
pair_style oc20
pair_coeff * * <model> <元素名1 元素名2 ...>
GPUで計算を行う場合
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毎に、対応する元素名を列挙