Ubuntu 22.04.3でDeePMD-kitを動かす

計算化学

機械学習力場によるMD計算を実行できる統合環境 DeePMD-kit をUbuntuのDockerで動かせるようにします。

スポンサーリンク

Dockerの準備

一番簡単なインストール方法は、公式が配布しているdockerのイメージを使用する方法です。
dockerのインストール方法はこちらで解説しています。

スポンサーリンク

Dockerでpull

DeePMD-kitの公式で案内されている方法は以下の通りです。

Install with docker
A docker for installing the DeePMD-kit is available here.

To pull the CPU version:
docker pull ghcr.io/deepmodeling/deepmd-kit:2.1.1_cpu

To pull the GPU version:
docker pull ghcr.io/deepmodeling/deepmd-kit:2.1.1_cuda11.6_gpu

To pull the ROCm version:
docker pull deepmodeling/dpmdkit-rocm:dp2.0.3-rocm4.5.2-tf2.6-lmp29Sep2021

deepmd-kit/doc/install/easy-install.md at master · deepmodeling/deepmd-kit · GitHub

このように、CPU版GPU版ROCm版があります
ROCmとはAMD版のCUDAのことです。
計算用GPUといえばNVIDIAですが、AMDも計算用GPUの開発に力を入れています。

さて、私の環境にはパワーのあるGPUがないのでCPU版を使います。
2023年12月時点でCPU版の最新は2.2.7_cpuなのでそれをpullします。
dockerが使える状態のUbuntuで以下のコマンドを実行します。

$ docker pull ghcr.io/deepmodeling/deepmd-kit:2.2.7_cpu
2.2.7_cpu: Pulling from deepmodeling/deepmd-kit
7a2c55901189: Pull complete 
438160a90d62: Pull complete 
5e7003ad4db0: Pull complete 
870bf2621e66: Pull complete 
8fdcf87b37a9: Pull complete 
7f8f82dd7a0b: Pull complete 
Digest: sha256:bf14bcf4d3128bb9bfe4d6f447a7be6df2d1d5f16d4182a054fefbdbe4fb0003
Status: Downloaded newer image for ghcr.io/deepmodeling/deepmd-kit:2.2.7_cpu
ghcr.io/deepmodeling/deepmd-kit:2.2.7_cpu

こんな感じでダウンロードが始まって、しばらくすると全てPull completeになります。
なおこのUbuntuではsudoなしでdockerが動くようになっています。sudoが要る場合はsudoを付けます。

スポンサーリンク

Dockerの操作

ここでは以下のコマンドを使用します。

  • docker images
  • docker ps -a
  • docker run -it –name NAME ImageID bash
  • docker start NAME
  • docker exec -it NAME bash
  • docker cp ./filename NAME:/root/ または docker cp NAME:/root/filename ./

dockerイメージを確認します。

$ docker images
REPOSITORY                        TAG         IMAGE ID       CREATED         SIZE
ghcr.io/deepmodeling/deepmd-kit   2.2.7_cpu   308d4307adb9   6 weeks ago   2.87GB

deepmd-kitが入っていますね。OKです。
次にコンテナを確認しましょう。

$ docker ps -a
CONTAINER ID   IMAGE         COMMAND    CREATED          STATUS                      PORTS     NAMES

何もないです。DeePMD-kitはまだ動いていません。
ではdeepmdという名前のdockerコンテナを作ってbashに入ってみましょう。

$ docker run -it --name deepmd 308d4307adb9 bash
(base) root@9eeb306c61d6:/# hostname
9eeb306c61d6
(base) root@9eeb306c61d6:/# whoami
root
(base) root@9eeb306c61d6:/# exit
exit
$ docker ps -a
CONTAINER ID   IMAGE          COMMAND               CREATED         STATUS         PORTS     NAMES
9eeb306c61d6   308d4307adb9   "tini -- /bin/bash"   5 minutes ago   Up 4 minutes             deepmd

dockerコンテナの中ではホスト名やユーザ名も変わっています。
またexitするとdeepmdコンテナはExitedステータスになっています。つまり止まっています。
実際にDeePMD-kitを使う場合は、これを起動して出たり入ったりすることになると思います。

ここからがよく使うコマンドになると思います。
startでdockerコンテナを起動します。そしてbashに入ります。
(ここでは入った後にすぐ出ています)

$ docker start deepmd
deepmd
$ docker exec -it deepmd bash
(base) root@9eeb306c61d6:/# exit
exit
$ docker ps -a
CONTAINER ID   IMAGE          COMMAND          CREATED             STATUS                         PORTS     NAMES
9eeb306c61d6   308d4307adb9   "tini -- bash"   5 minutes ago       Up 52 seconds                            deepmd

DeePMD-kitで何かをやる場合は、docker exec -it deepmd bashでbashに入って操作をすることになります。

最後にファイルの受け渡しです。dockerコンテナの中と外は別の世界なので、コピーコマンドでファイルを動かす必要があります。

$ docker cp aaa.dat deepmd:/root/
Successfully copied 2.05kB to deepmd:/root/

指定の仕方は普通のcpコマンドと同様ですが、複数ファイルを指定できないと思います。
ファイルが複数ある場合はディレクトリごとコピーしましょう。

スポンサーリンク

DeePMD-kitの確認

最後に、このdockerコンテナの中でDeePMD-kitが動くことを確認します。
コマンド dp –versionと dp –helpを実行します。

(base) root@9eeb306c61d6:/# dp --version
DeePMD-kit v2.2.7
(base) root@9eeb306c61d6:/# dp --help
usage: dp [-h] [--version] {transfer,train,freeze,test,compress,doc-train-input,model-devi,convert-from,neighbor-stat,train-nvnmd,gui} ...

DeePMD-kit: A deep learning package for many-body potential energy representation and molecular dynamics

options:
  -h, --help            show this help message and exit
  --version             show program's version number and exit

Valid subcommands:
  {transfer,train,freeze,test,compress,doc-train-input,model-devi,convert-from,neighbor-stat,train-nvnmd,gui}
    transfer            pass parameters to another model
    train               train a model
    freeze              freeze the model
    test                test the model
    compress            compress a model
    doc-train-input     print the documentation (in rst format) of input training parameters.
    model-devi          calculate model deviation
    convert-from        convert lower model version to supported version
    neighbor-stat       Calculate neighbor statistics
    train-nvnmd         train nvnmd model
    gui                 Serve DP-GUI.

動いた!ヨシ!

スポンサーリンク

実際に使ってみた

Quantum ESPRESSOのpw.xによる第一原理MD計算の結果を使ってDeePMD-kitによるポテンシャル作成とMD計算をやってみました。以下の記事で解説しています。

コメント

  1. harrods より:

    大変参考になりました。
    deepmdで無機材料の力場作成を行いたいのですが、教師データの作成方法をご存知でしたらご教授頂けると幸いです。

    • オレンジ酸 管理人 より:

      コメントありがとうございます。調べてもなかなか出てこないから困りますよね。以前に少しだけ動かしたことがあり、時間ができたら検証しながら記事にしようと思っていました。次の記事はDeepMDにしようと思いますので、もうしばらくお待ちください。

    • オレンジ酸 管理人 より:

      教師データ作成の記事ができました。完全に理解しているわけではなく「とりあえずこれで動いた」というレベルの内容ですが、ご参考になれば幸いです。 https://tech.gijukatsu.com/qe_pwmd_deepmdkit_part1/

      • harrods より:

        詳細な方法を教えて頂き、Prat1からPart3までトレースしてみましたところ、最後まで出来ました。
        ASEを変換に使うというのは便利と思いました。
        ありがとうございました。

        色々、ご質問したいことがございます。
        宜しければ、メールを頂けますと幸いです。

        • オレンジ酸 管理人 より:

          お役に立てたようで良かったです。

          恐れ入りますが、メールでのご質問は受け付けておりません。コメントで質問や記事のリクエストを書いていただくことは可能ですので、コメントでお願いいたします。

  2. harrods より:

    承知致しました。
    コメント欄にてご質問させて頂こうと思います。
    今後ともよろしくお願い致します。

タイトルとURLをコピーしました