审核:梁挺
Deep Potential 的目标是利用深度学习技术,构建通用、准确、高效且可扩展的原子间势能模型。该模型主要封装在 DeePMD-kit 中。目前,DeePMD-kit 已经发展到 3.0 版本,其大模型也更新到了 2.0 版本,尽管 DPA-1、DPA-2 的相关论文均未发表。这也体现了广大科研工作者对大模型的迫切需求和殷切期盼。究竟效果如何,使用起来是简单还是复杂,就让我们一探究竟吧~
“分子模拟处于黑暗,神说要有光,于是就有了大模型“
——某资深MD专家
前情提要
Deepmd-kit官方网站:
deepmd-kit github
https://github.com/deepmodeling/deepmd-kit
deepmd-kit documentation
https://docs.deepmodeling.com/projects/deepmd/en/r2
DPA-2 Bohrium教程(网址为Bohrium平台地址):
https://bohrium.dp.tech/notebooks/16449433825
DeepModeling,公众号:深度势能【DeePMD-kit v3教程1】多后端框架
https://bohrium.dp.tech/notebooks/17411863382
DeepModeling,公众号:深度势能【DeePMD-kit v3教程2】DPA-2模型、多任务训练、微调
https://bohrium.dp.tech/notebooks/42438451216
DeepModeling,公众号:深度势能【DeePMD-kit v3教程3】模型插件机制、训练MACE模型
安装与排错
系统环境检查:
在开始安装之前,请确认您的系统环境。本教程使用的是 Windows 11 上的 WSL2(与 Ubuntu 完全一致)。并且经过测试,本教程所需的命令在任何 Linux 系统上均可运行。
$ wget https://mirror.nju.edu.cn/github-release/deepmodeling/deepmd-kit/v3.0.0/deepmd-kit-3.0.0-cuda126-Linux-x86_64.sh.0 -O deepmd-kit-3.0.0-cuda126-Linux-x86_64.sh.0
$ wget https://mirror.nju.edu.cn/github-release/deepmodeling/deepmd-kit/v3.0.0/deepmd-kit-3.0.0-cuda126-Linux-x86_64.sh.1 -O deepmd-kit-3.0.0-cuda126-Linux-x86_64.sh.1
$ cat deepmd-kit-3.0.0-cuda126-Linux-x86_64.sh.0 deepmd-kit-3.0.0-cuda126-Linux-x86_64.sh.1 > deepmd-kit-3.0.0-cuda126-Linux-x86_64.sh
$ sh deepmd-kit-3.0.0-cuda126-Linux-x86_64.sh -b # -u
$ source ~/deepmd-kit/bin/activate ~/deepmd-kit
提示1:安装命令中,sh deepmd-kit-3.0.0-cuda126-Linux-x86_64.sh-b # -u安装命令中可以通过加 -u 来升级旧版本。
提示2:本示例中,将Bohrium平台参考命令中的"/root"替换为"~",使得其更通用。
排错:
在运行source以及示例的过程中都可能出现以下类似错误:
ModuleNotFoundError: No module named '******'
******代表不同的包名称。这时,需要使用deepmd-kit自带的pip进行安装更新。并且可能需要注意个别包的版本号。例如使用以下命令:
>> $ ~/deepmd-kit/bin/pip install ******
通过不断安装提示中所缺失的安装包,直到最后运行命令没有报错,即可算成功。
提示1:有时会一次性显示多个依赖包未安装的提示,可以使用以上命令完成一次性安装。
提示2:Bohrium平台上给出了以下报错的修复示例:
libdevice not found at ./libdevice.10.bc
运行测试示例
PyTorch:
以下以 PyTorch 版本为例,读者也可自行尝试 TensorFlow 版本。
准备文件并运行测试:
作者建立了新的目录来进行测试,以防止覆盖原文件,因此需要比Bohrium上多些命令、步骤:
> $ cd ~/gpumd-dp/dpa-2 # 请自行设置测试路径
> $ mkdir github ; cd github
> $ git clone https://github.com/deepmodeling/deepmd-kit
> $ mkdir test ; cd test
> $ cp -r ../deepmd-kit/examples/water/data ../deepmd-kit/examples/water/se_atten_compressible/ ../deepmd-kit/examples/water/lmp/ .
> $ cd se_atten_compressible
> $ sed -i "s/1000000/1000/g" input.json # 如果是详细测试,则不需要这条命令
> $ source ~/deepmd-kit/bin/activate ~/deepmd-kit # 如果需要
> $ ~/deepmd-kit/bin/dp --pt train input.json
提示1:如果github无法下载,可以在公众号后台向作者询问安装包。
提示2:因为使用了新的路径,所以需要将训练集(data)复制到合适的位置(测试目录的上一级)。
提示3:该命令在作者的笔记本电脑(RTX 4060)上运行时间为47 s,和--tf参数的运行时间基本一致。
提示4:运行完成后的目录文件如下:
checkpointinput_v2_compat.json model.ckpt-1000.pt out.json input.json lcurve.out model.ckpt.pt
冻结势函数并压缩:
>> $ ~/deepmd-kit/bin/dp --pt freeze
>> $ ~/deepmd-kit/bin/dp --pt compress
提示:我们现在得到了2个模型文件,格式为.pth:
frozen_model.pth
frozen_model_compressed.pth
MD运行测试:
$ cd ../lmp
$ ~/deepmd-kit/bin/lmp -in pt.in
提示1:pt.in的内容如下:
units metal
boundary p p p
atom_style atomic
neighbor 0.0 bin
neigh_modify every 50 delay 0 check no
read_data water.lmp
mass 1 16
mass 2 2
replicate 2 2 2 # Bohrium: replicate 4 4 4
pair_style deepmd ../se_atten_compressible/frozen_model.pth
pair_coeff * *
velocity all create 330.0 23456789
timestep 0.0005
thermo_style custom step pe ke etotal temp press vol
thermo 20
run 100
run 500
提示2:使用2 2 2的超胞后,作者的笔记本电脑上运行时间为1分25秒,MD运行速度为:11.07 katom-step/s(单核CPU)。
详细测试+对比MACE插件机制
安装支持MACE插件机制的deepmd-kit版本:
注意:以下命令需要完成上述deepmd-kit安装步骤:
> $ source ~/deepmd-kit/bin/activate ~/deepmd-kit
> $ export CMAKE_PREFIX_PATH=$(python -c "import torch;print(torch.utils.cmake_prefix_path)")
> $ CUDA_BIN_PATH=/usr/local/cuda CUDACXX=/usr/local/cuda/bin/nvcc pip install -v deepmd-gnn --no-binary deepmd-gnn
提示:以上命令需要首先安装cuda等,可以参考“微纳计算“公众号的安装系列文章。
GPUMD-3.9.1 安装教程 (2024)
徐克,公众号:微纳计算GPUMD_3.9.1_2024
运行训练MACE插件机制的输入:
> $ git clone https://github.com/njzjz/deepmd-gnn
> $ cd deepmd-gnn/examples/water/mace
> $ ##sed -i "s/1000000/2000/g" input.json ## 注意作者没有运行该命令,读者在测试命令的时候建议运行该命令可以更快结束运行
> $ export MPLBACKEND=svg # fix matplotlib issue
> $ ~/deepmd-kit/bin/dp --pt train input.json
通常由于训练和测试是分开的,因此这里对于测试部分重新进行环境激活后冻结势函数。
> $ source ~/deepmd-kit/bin/activate ~/deepmd-kit
> $ export MPLBACKEND=svg
> $ DP_GNN_USE_MAPPING=1 dp --pt freeze
> $ ~/deepmd-kit/bin/dp test -m frozen_model.pth -s ../data
训练速度、精度与NEP对比
注意事项:
符号标记:DP-Original,原生DP势
符号标记:DP-MACE,基于MACE插件机制训练获得的势函数
本小节内容中的所有测试数据为同一台主机电脑下RTX 4090的结果,DP相关的训练集、验证集输入为 deepmd-kit/examples/water/data ,NEP相关的训练集为使用 https://github.com/brucefan1983/GPUMD/tree/master/tools/dp2xyz 转换脚本将DP的训练集转换成ext-xyz格式后再使用nep进行训练(其中data0,data1,data2为训练集,data3为测试集),NEP4的输入脚本为:https://gitlab.com/brucefan1983/nep-data/-/blob/main/2023_Xu_liquid_water/nep.in 。
训练过程中力的误差:
误差收敛性如下图所示。可以看出DP-MACE跟DP-Original的收敛速度基本一致,但是DP-MACE的精度更高。DP-Original与NEP4精度相近:
DP-MACE:batch 1000000: val: rmse = 1.29e-02, rmse_e = 1.15e-04, rmse_f = 1.26e-02 # 力的误差单位(eV/A)。
DP-Original:batch 1000000: val: rmse = 4.09e-02, rmse_e = 2.83e-04, rmse_f = 3.99e-02 # 力的误差单位(eV/A)。
NEP4:1000000 0.05967 0.00492 0.01827 0.00027 0.03621 0.00000 0.00035 0.03704 0.00000 # 力的误差单位(eV/A)。
训练速度:
相同的训练参数下,训练速度如下所示:
DP-Original:0.0637 s/batch,总训练耗时3小时7分钟。(100万步)
DP-MACE:0.0112 s/batch,总训练耗时17小时42分钟。(100万步)
NEP4:总训练耗时18小时44分钟。(100万步)
由于 NEP 使用的是演化算法优化参数,训练速度较慢,但收敛更快,且可避免误差陷入局部最小值。总体而言,NEP4 的精度与 DP-Original 一致,但两者的精度均不及 DP-MACE。
MD运行速度与NEP对比
本次示例使用的体系为液态的块体水体系。
三种MLP计算速度对比:
作者使用了单4090显卡进行测试,对于NEP4势在GPUMD中运行,对于两个DP势在LAMMPS中运行。其中NEP和DP均使用了单核CPU和单个RTX 4090显卡。在5184个原子(1728个水分子)的体系中,DP-MACE的MD运行速度为15950 atom-step/second,DP-Original的运行速度为46445 atom-step/second,NEP4的运行速度为2971000 atom-step/second。此外,在单个4090显卡上,NEP4的计算速度峰值约为10^7 atom-step/second。
按照显存占比,作者按照 RTX 4090 显卡的24 G显存对对应的势函数在相应的MD软件中可模拟的理论最大体系进行对比。可以看出NEP4在GPUMD中可以模拟接近90万原子大小的体系,而 DP-MACE 只能模拟5500原子体系,DP-Original 可以模拟22000原子体系。
结语
模型选择与适用性:
高精度需求:DP-MACE 是最佳选择,适用于对精度要求极高的研究,并且在DP的加持下,MACE级的精度,DP级速度的机器学习势不是梦。
大规模体系模拟:NEP4 在大规模体系下表现突出。
软件生态:
DeePMD-kit 3.0 的模块化设计支持多后端框架,适应不同场景需求。
对于科研用户,Bohrium 平台提供了友好的支持和优化选项。
机器学习势函数的不断迭代(如 DP-MACE 的引入)为分子模拟提供了更多选择。
目前,GPUMD 社区正在快速发展。作为国内广受认可的分子动力学软件,其卓越的运行速度和出色的软件生态,使其在科研领域得到了更广泛的应用。
本次评测表明,DPA-2 在性能、适用性和用户体验上均有显著提升,为分子模拟领域的研究者提供了更强大的工具。
作者简介:
徐克,致力于分子动力学模拟和机器学习势函数的研究,热衷于分享科学计算的技巧和心得。