DeePMD-kit是一款基于Python/C++编写的软件包,旨在最小化构建基于深度学习的原子间势能模型和力场所需的工作量,并用于分子动力学模拟。这为解决分子模拟中精度与效率难以兼顾的难题带来了新希望。DeePMD-kit的应用范围涵盖从有限分子到扩展体系,从金属系统到化学键合系统等多种场景。详细的文档可以参考链接。
安装
建议通过conda-forge安装
conda create -n deepmd deepmd-kit lammps horovod -c conda-forge
通过 conda activate deepmd 激活deepmd环境 通过 conda deactivate 推出当前环境
有可能之前已经激活了环境但是未使用 conda deactivate 来退出环境。还需要使用 source activate 重新进入环境,否则有可能会出错。
并行效率

案例(CH4)
00.data是需要准备的文件,其中outcar为vasp计算得到的结果,所以在准备训练数据之前,我们需要用其他dft软件(包括并不限于vasp、qe、gaussian等)得到数据。
tree DeePMD-kit_Tutorial -L 1
DeePMD-kit_Tutorial
├── 00.data %存储训练和测试数据
├── 01.train %使用DeePMD-kit训练模型的示例脚本
├── 01.train.finished %训练过程的完整结果
├── 02.lmp %Lammps分子动力学模拟的脚本
└── 02.lmp.finished %
6 directories, 0 files
DeePMD-kit_Tutorial/00.data
├── abacus_md %ABACUS分子动力学模拟的数据
├── training_data
└── validation_data
01.data是deepmd训练的工作目录。其中 input.json 为训练脚本。主要分为4大块:
- Model->模型
- Learning rate->学习效率
- Loss function->损失函数
- Training->训练
dp train input.json
运行完以上代码之后,将会看到lcurve.out的文件。这里面包含了训练和测试的误差。
lcurve.out文件包含8列数据,从左至右依次为:训练步数(step)、验证损失(rmse_val)、训练损失(rmse_trn)、能量的验证集均方根误差(rmse_e_val)、能量的训练集均方根误差(rmse_e_trn)、力的验证集均方根误差(rmse_f_val)、力的训练集均方根误差(rmse_f_trn)以及学习率(lr)。其中能量均方根误差已按体系原子数进行归一化处理。结果表明,经过106步训练后,能量测试误差小于1毫电子伏特(meV),力的测试误差约为120毫电子伏特/埃(meV/Å)。同时观察到力的测试误差系统性地(略微)高于训练误差,这表明模型对当前较小规模数据集存在轻微的过拟合现象。
在训练过程中,模型每经过10000步会被保存为TensorFlow的model.ckpt*文件,而最后保存的模型名称会记录在checkpoint文件中(model.ckpt)。
当训练过程异常中断时,我们可以通过直接运行程序从提供的检查点重新启动训练。
dp train --restart model.ckpt input.json
经过单核大约一个小时训练结束后,需要将model文件冻结。
dp freeze -o graph.pb
#压缩model文件,将会提高计算速度
dp compress -i graph.pb -o graph-compress.pb
#测试训练数据的质量
dp test -m graph-compress.pb -s ../00.data/validation_data -n 40 -d results
作图

模型的应用
将上面训练好的模型数据,在02.lmp文件夹进行分子动力学模拟。
#软链接到当前分子动力学模拟工作目录
ln -s ../01.train/graph-compress.pb
与常规lammps的输入文件不同的地方在于pair_style的定义:
pair_style deepmd graph-compress.pb
pair_coeff * *