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.

動いた!ヨシ!

コメント

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