手元のPC上で既存の開発環境を汚さずに機械学習力場(DeePMD-kit)を体験する環境を構築する

クロスアビリティ Winmostarサポートチームです。
WinmostarはLAMMPSやQuantum ESPRESSOを簡単かつ高度に利用するための統合GUI環境となっています。学生は無料で利用でき、学生以外も無料トライアルを入手することができますので、是非 [WinmostarのWebサイト](https://winmostar.com/jp/) をご覧ください。

# 機械学習力場とは

原子スケールのシミュレーション手法として機械学習力場と呼ばれる新技術が近年注目を集めています。本記事では、第一原理計算（主にDFT計算）を用いて原子配置から原子間力を求めた結果を教師データとして、原子配置から原子間力をブラックボックス的に算出する手法のことを機械学習力場と呼びます。他にも機械学習ポテンシャル、AI力場、ニューラルネットワークポテンシャル（NNP）、ニューラルネットワーク力場（NN力場）などと呼ばれる技術がありますが、基本的には同等な技術であるとお考えください。ニューラルネットワークポテンシャル、ニューラルネットワーク力場という呼称はニューラルネットワークを利用していることを強調していますが、現在研究対象の中心となっている機械学習力場のほとんどがニューラルネットワークを利用しているので、実質的にはどれもほぼ同義となります。機械学習力場についての日本語の分かりやすい解説は[こちら](https://ccse.jaea.go.jp/meeting/CCSE_WS30/PDF/Ando.pdf)などが役に立ちます。

今後部分的に解決が進むと思われますが、2022年現在では、
- 元素数が増えると学習効率が落ちる
- 有機系・分子系で重要な広範囲の原子配置を考慮すると計算負荷が高くなる
- 高温物性や化学反応のようなレアイベントを観測するには膨大な原子配置パターンでの学習が必要となる
- 高精度な学習には高負荷な系全体での第一原理計算の実施が不可欠
- 自分で学習する際には、力場の学習に使う第一原理計算のコストが、同じ研究目的を第一原理計算だけで達成するのに必要な第一原理計算のコストを下回らないと実用上機械学習力場を使う意味がない
- 他人が学習した力場データを使う際の検証が煩雑
- 1ステップの計算コストが古典力場よりも高く、長時間シミュレーションが必須な現象（有機系、特に生体分子系）で不利
- 特に有機系では、教師データ生成に使われるDFTが熱力学量の実験値を再現できるか十分に検証されておらず、実験値をターゲットにチューニングされた古典力場に対する優位性も十分検証されていない

などの課題について有効な解決策が確立されておらず、全ての場面で既存の古典力場を置き換えるほどには至っていません（Materials Studio、Schrodinger Materials Science Suiteといった高級品で標準採用されていない）。一方で、2022年時点では膨大な候補化合物に対する構造最適化計算等でのプレスクリーニング、DFTでの再学習が容易な規模において第一原理MDの従来比での長時間化などの用途で利用されています。また、計算対象としては、2022年時点では金属系を対象にした研究課題が多いように思われます（対象も今後広がる可能性があります）。その要因については以下のように考えています。

- 比較対象となる従来手法（EAMなど）において物理的近似が大きいために精度を上げづらいために機械学習力場のアドバンテージを示しやすい
- 有機系と比べると短いシミュレーション時間で十分な研究課題が多く、そのような場合には計算速度が遅くても問題ない
- 有機系と比べると近距離の原子配置がエネルギーに与える影響が大きく、カットオフ半径が小さくても従来手法よりアドバンテージを示しやすい

なお、典型的な機械学習力場の性質については、[DeePMD-kitのPractical Guideline](https://tutorials.deepmodeling.com/en/latest/CaseStudies/Practical-Guidelines-for-DP/Practical-Guidelines-for-DP.html) （和訳は[こちら](https://qiita.com/xa_member/items/98fb66aba22bd84c8535)）が参考になります。

# 本記事の目的

本記事では[国際会議SC20でGordon Bell賞を受賞した機械学習力場の実装](https://cs.lbl.gov/news-media/news/2020/machine-learning-software-enhances-molecular-dynamics-modeling/) である[DeePMD-kit](https://doi.org/10.1016/j.cpc.2018.03.016)をVirtualBox上で無料で体験する環境の構築方法を紹介します。準備するものとしてはごく普通のPC1台（Windows、Mac、Linuxのどれでも実行可能と思われる）のみで大丈夫です。また、VirtualBoxを利用するため、既存の環境を汚さずに済み、容易にアンインストールし元の状態に戻すことができます。ただし、以下の点にご注意ください。

- 本記事の目的は本格的な計算環境の構築ではなくあくまで手軽に機械学習力場を体験することであるため、構築される環境の処理速度は遅いです。
- DeePMD-kitはLGPL v3.0のオープンソースでかつ2022年12月時点で460本の引用があり、比較的広く利用されている実装の一つであると考えられますが、2022年現在機械学習力場の実装は多数存在し、まだデファクトスタンダートの実装と呼べるようなものを決め難い状況にあります。今後より良い実装が登場する可能性は十分あります。
- 第一原理計算による教師データ作成のコストは非常に高く、機械学習力場の計算コストは従来の古典力場を用いた分子動力学計算に比べて現状では高いため、本来であればVMを使わず大型の計算機、GPUクラスタ、Google Colaboratoryを含む各種クラウドで実行することが望ましいです。
- 本記事ではVirtualBoxで動かすゲスト環境として計算化学・計算物理シミュレーション環境が設定済みの[MateriApps LIVE!](http://cmsi.github.io/MateriAppsLive/)を使用しますが、クリーンな各種Linux OS環境を使用してもそこまで手順が変わらない可能性があります。

# 環境構築手順

以下の手順はMacBook Air (13-inch, 2020)+macOS Catalina 10.15.6で動作確認しています。環境によっては追加の設定が必要な場合があります。

1\. [Oracle VM VirtualBoxのHP](https://www.oracle.com/jp/virtualization/technologies/vm/downloads/virtualbox-downloads.html)のOracle VM VirtualBox Base Packagesから現在使用しているOS向けのインストーラ・パッケージをダウンロードし、インストールしてください。

2\. [MateriApps LIVE!のHP](https://sourceforge.net/projects/materiappslive/files/Release-4.0/)からMateriAppsLive-4.0.zipをダウンロードし解凍してください。解凍したファイルに含まれるMateriAppsLive-4.0-amd64.ovaをダブルクリックするとVirtualBoxが起動しインポート画面が開くので、「インポート」ボタンをクリックします。マシンスペックによりますが2~3分程度で処理が終わり、マネージャーが起動します。

3\. VirtualBoxのマネージャーで起動ボタンをクリックするとゲストOSのウィンドウが出現します。起動処理が行われたあとログイン画面になるまで1-2分程度待ちます。以降の操作は全てVirtualBoxのゲストOSのウィンドウ上で実行します。

4\. ログイン画面が出現したらユーザ名（login）に「user」、パスワード（password）に「live」と入力しログインします。

5\. 左下のスタートメニューをクリックし、Internet→Firefox ESRをクリックします。Firefoxで本記事を表示すると以降の操作が楽になります。

6\. [MinicondaのHP](https://docs.conda.io/en/latest/miniconda.html)で「Latest Miniconda Installer Links」の「Miniconda3 Linux 64-bit」をダウンロードします。

7\. 左下のスタートメニューをクリックし、System Tools→LXTerminalをクリックし、以下のコマンドを実行します。
```shell
$ cd Downloads
$ bash Miniconda3-latest-Linux-x86_64.sh
```

8\. 指示にしたがってMinicondaをインストールします。設定（インストール場所等）はデフォルトのままとします。

9\. [GithubのDeePMD-kit 2.1.5のページ](https://github.com/deepmodeling/deepmd-kit/releases/tag/v2.1.5)から「Assets」のdeepmd-kit-2.1.5-cpu-Linux-x86_64.shをダウンロードします。次に、7で起動したLXTerminalに移動し、以下のコマンドを実行します。
```shell
$ bash deepmd-kit-2.1.5-cpu-Linux-x86_64.sh
```

10\. 指示にしたがってDeePMD-kitをインストールします。設定（インストール場所等）はデフォルトのままとします。
（詳細は[DeePMD-kitのインストール方法のHP](https://docs.deepmodeling.com/projects/deepmd/en/master/install/easy-install.html)の「1.1.1. Install off-line packages」を参照）

11\. TXTerminalで以下のコマンドを実行します。
```shell
$ emacs ~/.bashrc
```

12\. emacsが開いたら、最後の行に移動し以下の2行を追加します。
```shell
export PATH=$PATH:${HOME}/deepmd-kit/bin
conda activate ${HOME}/deepmd-kit
```

13\. 追加したらemacsのFile→Quitをクリックし、「Save file ...?」と表示されたら「Yes」をクリックします。
そして、TXTerminalの右上の×ボタンをクリックし閉じます。

14\. 再び左下のスタートメニューをクリックし、System Tools→LXTerminalをクリックします。
LXTerminalで以下のコマンドを実行し、DeePMDの情報が表示されることを確認してください。
```shell
$ dp -h
```

15\. LXTerminalで以下のコマンドを実行してください。
```shell
pip install dpdata
```

16\. TXTerminal上で[How to Setup a DeePMD-kit Training within 5 Minutes](https://tutorials.deepmodeling.com/en/latest/Tutorials/DeePMD-kit/learnDoc/run5minutes.html)に従ってトレーニングを実施します。dp train input.jsonはマシンスペックによりますが10分程度かかります。

17\. TXTerminal上で[Example: a gas-phase methane molecule](https://tutorials.deepmodeling.com/en/latest/Tutorials/DeePMD-kit/learnDoc/Handson-Tutorial%28v2.0.3%29.html)に従ってチュートリアルを実施します。dp train input.jsonはマシンスペックによりますが2時間程度かかります。

環境を元に戻したければ、VirtualBox関連ファイルを全て削除するだけでOKです。本記事はあくまでに手軽に機械学習力場を体験することを目的としていますので、より本格的に使いたい場合はVMを使わずに環境を構築することとなります。