DPA-2测评+NEP对比

文摘   2024-12-04 00:01   芬兰  

审核梁挺

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有时会一次性显示多个依赖包未安装的提示,可以使用以上命令完成一次性安装。

提示2Bohrium平台上给出了以下报错的修复示例:

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

提示1pt.in内容如下:

units        metalboundary     p p patom_style   atomicneighbor     0.0 binneigh_modify every 50 delay 0 check noread_data    water.lmpmass         1 16mass         2 2replicate    2 2 2 # Bohrium: replicate 4 4 4pair_style   deepmd ../se_atten_compressible/frozen_model.pthpair_coeff   * *velocity     all create 330.0 23456789timestep     0.0005thermo_style custom step pe ke etotal temp press volthermo       20run          100run          500

提示2使用2 2 2的超胞后,作者的笔记本电脑上运行时间为125秒,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-MACEDP-Original的收敛速度基本一致,但是DP-MACE的精度更高。DP-OriginalNEP4精度相近

DP-MACEbatch 1000000: val: rmse = 1.29e-02, rmse_e = 1.15e-04, rmse_f = 1.26e-02    # 力的误差单位(eV/A)。

DP-Originalbatch 1000000: val: rmse = 4.09e-02, rmse_e = 2.83e-04, rmse_f = 3.99e-02    # 力的误差单位(eV/A)。

NEP41000000 0.05967    0.00492   0.01827    0.00027      0.03621      0.00000      0.00035      0.03704      0.00000   # 力的误差单位(eV/A)。

训练速度:

相同的训练参数下,训练速度如下所示:

DP-Original0.0637 s/batch,总训练耗时3小时7分钟。(100万步)

DP-MACE0.0112 s/batch,总训练耗时17小时42分钟。(100万步)

NEP4:总训练耗时18小时44分钟。(100万步)

由于 NEP 使用的是演化算法优化参数,训练速度较慢,但收敛更快,且可避免误差陷入局部最小值。总体而言,NEP4 的精度与 DP-Original 一致,但两者的精度均不及 DP-MACE。

MD运行速度与NEP对比

本次示例使用的体系为液态的块体水体系。

三种MLP计算速度对比:

作者使用了单4090显卡进行测试,对于NEP4势在GPUMD中运行,对于两个DP势在LAMMPS中运行。其中NEPDP均使用了单核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软件中可模拟的理论最大体系进行对比。可以看出NEP4GPUMD中可以模拟接近90万原子大小的体系,而 DP-MACE 只能模拟5500原子体系,DP-Original 可以模拟22000原子体系。


结语

模型选择与适用性:

  • 高精度需求:DP-MACE 是最佳选择,适用于对精度要求极高的研究,并且在DP的加持下,MACE级的精度,DP级速度的机器学习势不是梦。

  • 大规模体系模拟:NEP4 在大规模体系下表现突出。


软件生态:

  • DeePMD-kit 3.0 的模块化设计支持多后端框架,适应不同场景需求。

  • 对于科研用户,Bohrium 平台提供了友好的支持和优化选项。

  • 机器学习势函数的不断迭代(如 DP-MACE 的引入)为分子模拟提供了更多选择。

  • 目前,GPUMD 社区正在快速发展。作为国内广受认可的分子动力学软件,其卓越的运行速度和出色的软件生态,使其在科研领域得到了更广泛的应用。

本次评测表明,DPA-2 在性能、适用性和用户验上均有显著提升,为分子模拟领域的研究者提供了更强大的工具。

作者简介:

徐克,致力于分子动力学模拟和机器学习势函数的研究,热衷于分享科学计算的技巧和心得。

GPUMD与NEP
演化策略的神经网络机器学习势NEP与GPU分子动力学GPUMD模拟