HPC应用&分子动力学软件DeePMD-kit安装测试

目录

DeePMD-kit安装测试

DeePMD-kit简介

安装过程

新版配置

旧版配置

安装TensorFlow python接口

安装TensorFlow C++接口

安装deepmd-kit C++接口

安装deepmd-kit python接口

安装LAMMPS的deepmd-kit 模块

测试算例

训练

MD模拟


DeePMD-kit安装测试

DeePMD-kit简介

分子动力学(Molecular dynamics,MD)在物理、化学、生物、和材料科学等领域都有着极为广泛的应用。然而做MD计算模拟却长期面临着模拟精度与效率的困境:基于密度泛函理论(Density functional theory,简称DFT)的第一性原理分子动力学(ab initio molecular dynamics,简称AIMD)精度高,但缺包含着巨大的计算开销(通常与模拟原子数的立方成正比)。AIMD模拟尺度局限在数百个原子以及100皮秒以内。超出上述范围的应用往往只能依赖于经验力场(如经典的EAM势),经验力场有效地拓展了特定MD的模拟尺度,但是其可移植性以及精度往往是个问题,在处理复杂系统时常常显得力不从心,且构建经验力场通常比较麻烦。

近来通过深度学习的方法表示多体势能的发展给解决这一困境带来了新的希望,在这一背景下,DeePMD-kit应运而生。DeePMD-kit是一个基于TensorFlow(TF)开源机器学习框架的用Python/C++语言编写的软件包,旨在最小化构建基于深度学习的势能和力场表示以及执行MD模拟所需的人工干预。DeePMD-kit的潜在应用范围从有限的分子体系到周期性材料体系,从金属系统到带有化学键的系统。目前已经发表的成果证明DeePMD-kit 具有AIMD的精度同时也保有线性增长的计算复杂度和计算内存使用量。使用DeePMD-kit将在复杂的化学反应、电化学电池、纳米晶体材料、辐射损伤以及动态断裂和裂纹扩展等需要大规模、高精度分子动力学模拟的应用问题中发挥重要作用。将极大地加速化学反应设计与合成,材料老化与失效,新材料研发与工艺设计等领域的研究进展。

开源的(https://github.com/deepmodeling/deepmd-kit)DeePMD-kit 软件包,其代码主要由三个部分构成:

(1)C++实现的计算descriptors(保留了原子坐标的平移,交换以及对称不变性等信息),force以及virial等量的动态链接库,也包括了和TensoFlow以及LAMMPS等第三方软件包的接口;

(2)基于TensorFlow Python API实现的训练和测试程序;

(3)对于LAMMPS以及i-PI软件包的支持。

安装过程

新版配置

从 https://cancon.hpccube.com:65024/1/main/DTK-23.10_hpcapps-20231120/NFS3.2_CentOS7.6 下载deepmd-kit源码:

wget https://cancon.hpccube.com:65024/directlink/1/DTK-23.10_hpcapps-20231120/NFS3.2_CentOS7.6/DeepMD-kit-v2.2.7_nfs3.2_DTK23.10_hpcx2.4.1_01Nov2023.tar.gz

//下载后以包内最新的README为准,注意上方链接为DTK-23.10版本的DTK环境,配置环境需与安装包DTK版本一致,下方配置仅供参考。

旧版配置

安装TensorFlow python接口

在拥有conda工具以及可以连接外网的环境下,按照以下步骤进行安装:

conda create -n tensorflow-1.15 python=3.6.8
source activate tensorflow-1.15
pip install tensorflow-1.15.3-cp36-cp36m-linux_x86_64.whl

在conda虚拟环境中,pip会自动下载TensorFlow依赖的其他组件进行安装。

安装TensorFlow C++接口

安装TensorFlow C++接口需要bazel 0.24.1版本。进入TensorFlow 1.15源码顶层目录进行配置与安装:

export PATH=/public/home/gromacs/sourcecode/dcuapps-rocm39/tensorflow-source/bin:$PATH
cd /public/home/gromacs/sourcecode/dcuapps-rocm39/tensorflow-source/tensorflow-rocm-r1.15-rocm-enhanced
export ROCM_PATH=$(dirname $(dirname $(which hipcc)))
export ROCM_TOOLKIT_PATH=${ROCM_PATH}
yes "" | ROCM_PATH=$ROCM_PATH TF_NEED_ROCM=1 TF_DOWNLOAD_CLANG=0 TF_NEED_MPI=1 TF_NEED_CUDA=0 PYTHON_BIN_PATH=/public/home/gromacs/.conda/envs/tensorflow-1.15/bin/python ./configure
bazel build --config=opt --copt="-I/opt/rh/devtoolset-7/root/usr/include/c++/7" --copt="-L/opt/rh/devtoolset-7/root/usr/lib64" --copt="-static-libstdc++" --config=rocm --copt=-mavx2 //tensorflow:libtensorflow_cc.so
export tensorflow_root= /public/home/gromacs/sourcecode/dcuapps-rocm39/tensorflow-1.15-cc
mkdir -p $tensorflow_root
mkdir $tensorflow_root/lib
cp -d bazel-bin/tensorflow/libtensorflow_cc.so* $tensorflow_root/lib/
cp -d bazel-bin/tensorflow/libtensorflow_framework.so* $tensorflow_root/lib/
cp -d $tensorflow_root/lib/libtensorflow_framework.so.1 $tensorflow_root/lib/libtensorflow_framework.so
mkdir -p $tensorflow_root/include/tensorflow
cp -r bazel-genfiles/* $tensorflow_root/include/
cp -r tensorflow/cc $tensorflow_root/include/tensorflow
cp -r tensorflow/core $tensorflow_root/include/tensorflow
cp -r third_party $tensorflow_root/include
cp -r bazel-tensorflow-rocm-r1.15-rocm-enhanced/external/eigen_archive/Eigen/ $tensorflow_root/include
cp -r bazel-tensorflow-rocm-r1.15-rocm-enhanced/external/com_google_absl/absl $tensorflow_root/include
cp -r bazel-tensorflow-rocm-r1.15-rocm-enhanced/external/eigen_archive/unsupported/ $tensorflow_root/include
rsync -avzh --include '*/' --include '*.h' --include '*.inc' --exclude '*' bazel-tensorflow-rocm-r1.15-rocm-enhanced/external/com_google_protobuf/src/ $tensorflow_root/include/
cd $tensorflow_root/include
find . -name "*.cc" -type f -delete

安装deepmd-kit C++接口

然后使用cmake进行配置和安装:

cd deepmd-kit
mkdir -p source/build
cd source/build
cmake -DTENSORFLOW_ROOT=$tensorflow_root -DCMAKE_INSTALL_PREFIX=$deepmd_root ..
make -j 10
make install

其中$tensorflow_root为TensorFlow C++接口安装目录。

安装deepmd-kit python接口

进入deepmd-kit顶层目录,修改setup.py文件中deepmd_op_rocm_lib变量为deepmd-kit C++接口安装生成的libdeepmd_op_rocm.so库所在路径,然后直接使用pip进行安装。安装完成后,执行dp -h,产生如下输出:

usage: dp [-h] {transform,train,freeze,test} ...

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

optional arguments:
  -h, --help            show this help message and exit

Valid subcommands:
  {transform,train,freeze,test}
    transform           pass parameters to another model
    train               train a model
    freeze              freeze the model
    test                test the model

安装LAMMPS的deepmd-kit 模块

进入deepmd-kit源码目录的source/build目录,执行make lammps命令,当前目录下生成USER-DEEPMD目录。将该目录拷贝到LAMMPS目录的src目录下,然后在该目录下进行安装:

cd $lammps/src/
cp -r $deepmd_source_dir/source/build/USER-DEEPMD ./
make yes-kspace
make yes-user-deepmd
make mpi

完成后当前目录下生成lmp_mpi可执行文件。

测试算例

训练

进入deepmd-test/water/train目录,sbatch提交sub.sh脚本。sub.sh脚本内容如下:

#!/bin/bash
#SBATCH -J dp
#SBATCH -N 1
#SBATCH -n 32
#SBATCH -p sugon
#SBATCH -o dp-%J.log
#SBATCH -e dp-%J.err
#SBATCH -t 24:00:00
#SBATCH --gres=dcu:4

source /public/home/gromacs/sourcecode/dcuapps-rocm39/deepmd-test/env.sh
export TF_CPP_MIN_LOG_LEVEL=2

dp train water.json
dp freeze -o graph.pb

dp train按照json文件中的信息进行训练,dp freeze导出训练好的模型,作为后续MD过程的输入。

/public/home/gromacs/sourcecode/dcuapps-rocm39/deepmd-test/env.sh脚本内容如下:

export DP_HOME=/public/home/gromacs/sourcecode/dcuapps-rocm39

export tensorflow_root=${DP_HOME}/tensorflow-1.15-cc
export deepmd_source_dir=${DP_HOME}/deepmd-kit
export deepmd_root=${DP_HOME}/deepmd-kit-rocm-install

module purge
module load compiler/devtoolset/7.3.1
module load compiler/rocm/3.9.1
module load mpi/hpcx/2.4.1/gcc-7.3.1
module load apps/anaconda3

export LD_LIBRARY_PATH=/public/home/gromacs/sourcecode/dcuapps-rocm39/deepmd-kit-rocm-install/lib:$LD_LIBRARY_PATH
export PATH=${DP_HOME}/lammps/src:$PATH
source activate tensorflow-1.15

MD模拟

进入deepmd-test/water/lmp目录,提交sub.sh脚本进行MD模拟,脚本内容如下:

#!/bin/bash
#SBATCH -J dp 
#SBATCH -p sugon
#SBATCH -N 1
#SBATCH --cpus-per-task=1
#SBATCH --ntasks-per-node=32
#SBATCH --gres=dcu:4
#SBATCH --time=01:00:00 
#SBATCH -o dp-%j.log
#SBATCH -e dp-%j.err

source /public/home/gromacs/sourcecode/dcuapps-rocm39/deepmd-test/env.sh

date
srun hostname | sort | uniq -c |awk '{printf"%s slots=4\n",$2}' > hostfile
mpirun -np 4 --hostfile hostfile --bind-to none ./bind.sh
date

bind.sh脚本内容如下:

#!/bin/bash
lrank=$OMPI_COMM_WORLD_LOCAL_RANK
app=/public/home/gromacs/sourcecode/dcuapps-rocm39/lammps/src/lmp_mpi
case ${lrank} in
[0])
  export HIP_VISIBLE_DEVICES=0
  numactl --cpunodebind=0 --membind=0 ${app} -in copper.in;;
[1])
  export HIP_VISIBLE_DEVICES=1
  numactl --cpunodebind=1 --membind=1 ${app} -in copper.in;;
[2])
  export HIP_VISIBLE_DEVICES=2
  numactl --cpunodebind=2 --membind=2 ${app} -in copper.in;;
[3])
  export HIP_VISIBLE_DEVICES=3
  numactl --cpunodebind=3 --membind=3 ${app} -in copper.in;;
esac

copper.in文件为lammps的输入文件,其中:

pair_style      deepmd copper.pb
pair_coeff

pair_style 指定deepmd类型,后面加训练好的.pb模型文件。pair_coeff必须为空。

  • 15
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技术瘾君子1573

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值