ユニバーサル機械学習ポテンシャルを使ってみる
Last Update:2025/09/12
第一原理計算の精度を保ちつつ高速・大規模・長時間の分子動力学計算を実現する方法として、機械学習ポテンシャル関連技術が注目されている。第一原理計算を用いて構造とエネルギー、原子間力、応力を対応づけるデータセットを用意し、これを再現するように機械学習モデルを訓練し、力場として用いることで、第一原理計算に比べて桁違いに高速な計算が可能となるというものである。最近では、ほとんどの元素に対応した訓練を行った、いわゆる「ユニバーサルな」機械学習ポテンシャルが注目を浴びており、アカデミアだけでなく、Google, Microsoft, Metaを含む大企業の研究グループも参入し、モデル同士の性能を競うMatbench Discoveryのリーダーボードが毎月のように更新されている。これらの機械学習ポテンシャルモデルは、Atomic Simulation Environment (ASE)のcalculatorインタフェースを介して利用することができるようになっており、非常に簡便に計算が実行可能である。計算対象の系ごとに、実験や第一原理計算と比較、検討するなど注意深い検討が必要だが、多くの用途で第一原理計算を置き換えることができるところまで来ているようである。ここでは、Matbench Discoveryのリーダーボード上位陣の一部についてASEとphonopyを用いたフォノン計算を行い、結果を比較してみたい。
モデルのインストール
今回試す機械学習ポテンシャルは、いずれもPython環境下で簡単にインストールできる。まずはcondaなどを使ってPython仮想環境を分けてインストールを行うのが無難であると思われる。
conda create -n umlip python=3.9
conda activate umlip
ここではumlip (universal machine-learning interatomic potentialの略)という名前をつけたPython 3.9の仮想環境をインストールし、activateした。次にMatterSim、Orb、DeePMD-kit、GRACE、Sevennet、をインストールする。
# MatterSim
pip install mattersim==1.1.1
# Orb
pip install orb-models==0.4.2
pip install "pynanoflann@git+https://github.com/dwastberg/pynanoflann#egg=af434039ae14bedcbb838a7808924d6689274168"
# DeePMD-kit
pip install deepmd-kit==3.0.1
# GRACE
pip install tensorpotential==0.4.5
# SevenNet
pip install sevenn==0.11.2
# Pytorch
pip install torch==2.5.1
以上で同時に依存パッケージもダウンロードされる。TensorflowやPytorchもインストールされるが、GPU対応が必要な場合はあらかじめ自分でGPU対応版をインストールしておく。最後のconda activate umlipは、インストールされたPythonパッケージに付随する実行プログラムにパスを通すために必要である。今回入れたパッケージのうち、DeePMD-kitとGRACEはリンク1、リンク2の情報に基づいて、以下のようにして最新のモデルパラメータを別途ダウンロードした。他のパッケージは、必要に応じて実行時にモデルパラメータファイルがダウンロードされる。
wget https://bohrium-api.dp.tech/ds-dl/dpa3openlam-74ng-v3.zip
grace_models download GRACE_2L_OAM_28Jan25
unzip dpa3openlam-74ng-v3.zip
計算の実行
フォノン計算を行うPythonスクリプトを準備する(完成版スクリプトはこちら)。以下では完成版スクリプトから抜粋して説明する。各モデルのcalculatorは、以下のように各パッケージをimportし、定義できる。機械学習ポテンシャル以外に、EMT (effective medium theory)に基づく古典力場もimportし、比較に用いる。
from ase.calculators.emt import EMT
from mattersim.forcefield.potential import MatterSimCalculator
from mattersim.applications.phonon import PhononWorkflow
from orb_models.forcefield import pretrained
from orb_models.forcefield.calculator import ORBCalculator
from deepmd.calculator import DP
from sevenn.calculator import SevenNetCalculator
device = "cpu"
# specify universal mlip calculators
calcs = [MatterSimCalculator(load_path="MatterSim-v1.0.0-5M.pth",device=device),
ORBCalculator(pretrained.orb_v2(device=device),device=device),
DP(model="2025-01-10-dpa3-openlam.pth"),
SevenNetCalculator(model='7net-l3i5', device=device),
grace_fm("GRACE-1L-OAM_2Feb25"),
EMT()
]
計算する物質は、cifファイルを準備すればよい。ここでは、Materials Projectからダウンロードした銅のファイルを用いた(こちらからダウンロード可能。DOI: 10.17188/1204433)。
path_to_structure = "Cu.cif"
atoms_init = read(path_to_structure)
各calculatorを用いて格子定数の緩和とフォノン計算を行う。フォノン計算のワークフロー自動化のために、MatterSimで提供されているPhononWorkflow
を用いた。
# loop over calculators
e =[]
latcons = []
models = []
for calc in calcs:
# Copy atoms object for each calculator
atoms = atoms_init.copy()
# attach the calculator to the atoms object
atoms.calc = calc
atoms.set_constraint(FixSymmetry(atoms))
ucf = StrainFilter(atoms)
relax = BFGS(ucf)
relax.run(fmax=0.01)
latcons.append(atoms.cell.cellpar()[0])
e.append(atoms.get_potential_energy())
model_name = type(calc).__name__
models.append(model_name)
ph = PhononWorkflow(
atoms=atoms,
find_prim = True,
work_dir = f"./{model_name}",
amplitude = 0.01,
supercell_matrix = np.diag([4,4,4]),
)
has_imag, phonons = ph.run()
実行する。
python phon_umlip.py
うまく行くと、モデルごとにディレクトリが生成され、その中でphonopyを使ったフォノン計算結果が出力される。
phonopy-bandplot */band.yaml --legend
で、各モデルごとにフォノンバンドが出力される。ORBCalculator以外は似通った結果になっている。Matbenchによると、Orb-v2のフォノン熱伝導度の誤差(κSRME)は比較的大きいことが分かっており、フォノン物性に関してはあまり信頼できないことがわかる。その他のポテンシャルモデルもフォノンバンドの詳細は異なっており、要求精度によっては、第一原理計算も含めた検討が必要になることが想定される。ただし、この計算はノートPCを用いて1分程度で完了するため、スクリーニング用途を考えると有用性が非常に高いと言えそうだ。