掌握GPUMD+NEP 从一个水分子开始

文摘   2024-11-26 14:53   芬兰  

GPUMD+NEP是入门机器学习势函数(MLP)的最佳组合。不仅因为它是完全的国产软件,更因为其简洁高效。此外,得益于庞大的用户群体,该流程拥有完善的社区支持,任何问题都能得到专业、快速的解答。

“用GPUMD+NEPMLP少弯路“

——某资深用户如是说

准备环境

系统环境检查:

在开始安装之前,请确认您的系统环境。本教程使用的是 Windows 11 上的 WSL2(与 Ubuntu 完全一致)。并且经过测试,本教程所需的命令在任何 Linux 系统上均可运行。

>> $ uname -aLinux kewin 5.15.133.1-microsoft-standard-WSL2 #1 SMP Thu Oct 5 21:02:42 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux

nep安装检查:

详情参考本公众号以前的安装教程:

本公众号之前发布的GPUMD及NEP安装教程包含nep_cpu部分

徐克,公众号:微纳计算GPUMD_3.9.1_2024
>> $ which nep/home/ke/software/GPUMD/GPUMD-3.9.5/src/nep

GPUMD安装检查:

详情参考本公众号以前的安装教程(见上述引用):

>> $ which gpumd/home/ke/software/GPUMD/GPUMD-3.9.5/src/gpumd

支持nep势模型的lammps安装检查:

详情参考本公众号以前的安装教程(见上述引用

>> $ ls ~/software/Install/lammps-stable_29Aug2024/src/lmp_mpi/home/ke/software/Install/lammps-stable_29Aug2024/src/lmp_mpi

ovitos安装检查:

请在ovito官网上下载ovito pro,并解压到系统中后检查其路径:

https://ovito.org/#download

提示:ovito pro的界面版是付费的(可执行文件名为ovito),但是其命令行版本是完全免费的(可执行文件名为ovitos),大家可以安心使用。

>> $ ls /home/ke/software/Ovitos/ovito-pro-3.11.0-x86_64/bin/ovitos/home/ke/software/Ovitos/ovito-pro-3.11.0-x86_64/bin/ovitos

参考数据包下载

下载地址:

>> $ git clone https://github.com/Kick-H/NEP-water.git

提示:该仓库是作者在学习 GPUMD+NEP 过程中,关于水分子相关工作的开源仓库。目前已有两篇相关论文一篇发表在JCP上,另一篇目前在 arXiv 上,感兴趣的读者可以阅读:

使用GPUMD+NEP实现对液态水的热导率的准确预测

https://doi.org/10.1063/5.0147039

使用NEP-MB-pol实现对常压、全温度下液态水的结构、热容、输运系数的精确预测

https://arxiv.org/abs/2411.09631
>> $ ls NEP-water/LICENSE  README.md  compare_MB-pol_SCAN  one_molecule

这里只用到了one_molecule这个文件夹。

开始运行

>> $ cd NEP-water/one_molecule

检查ext-xyz格式的训练集:

>> $ ls datasets/monomers.xyzdatasets/monomers.xyz

运行nep

>> $ cp datasets/monomers.xyz nep/train.xyz>> $ cd nep/>> $ lsnep.in train.xyz

提示:这里没有test.xyz,因此loss.out中后3列为0,并且没有*_test.out系列文件。

>> $ nep # /home/ke/software/GPUMD/GPUMD-3.9.5/src/nep

提示:该命令在作者笔记本电脑的4060上运行时间为261 s。运行完成后该目录的文件信息为:

>> $ lsenergy_train.out loss.out nep.restart  stress_train.out  virial_train.out force_train.out   nep.in   nep.txt      train.xyz

运行gpumd

>> $ cd ../gpumd/>> $ cp ../nep/nep.txt .>> $ lsmodel.xyz nep.txt run.in>> $ gpumd # /home/ke/software/GPUMD/GPUMD-3.9.5/src/gpumd

提示:该命令在作者笔记本电脑的4060上运行时间为54 s此外,这里显示gpumd的计算速度为11092 atom*step/second,与声称的10e7 atom*step/second相差甚远,主要有以下两个原因:

  1. 1.      体系规模较小:该体系仅包含一个水分子(3 个原子),无法充分利用GPU 资源。

  2. 2.      硬件限制:笔记本显卡性能有限。目前性价比最高的显卡为 RTX 4090,读者可在该显卡上测试不同体系以达到最佳运行效率。

注意:目前教程中训练的势函数只能模拟单个水分子,并不能运行其他多分子的水体系,例如块体水等。

运行完成后该目录的文件信息为:

>> $ lsdump.xyz model.xyz neighbor.out  nep.txt  run.in thermo.out

运行ovitos文件(.py文件),分析单个水分子的Radial Distribution Function (rdf)Angular Distribution Function (adf)

>> $ cd ../ovito/>> $ lsplot_rdf_adf.py rdf_adf.py>> $ ovitos rdf_adf.py # /home/ke/software/Ovitos/ovito-pro-3.11.0-x86_64/bin/ovitos rdf_adf.py

提示:该命令正常运行并不输出信息。运行完成后该目录的文件信息为:

>> $ lsadf-c1-hoh.dat adf-hoh.dat adf-ooo.dat  plot_rdf_adf.py  rdf.dat rdf_adf.py

随后可以使用python运行plot_rdf_adf.pyrdf.dat, adf-ooo.dat, adf-hoh.dat进行分析:

>> $ python plot_rdf_adf.py

最终的输出如rdf_adf.pdf图所示。

感兴趣的读者还可以用lammps运行一下试试,看看与gpumd获得的结果是否一致。

进入 LAMMPS 目录并复制 NEP 模型文件:

>> $ cd ../lammps/>> $ cp ../nep/nep.txt .>> $ lslmp.in water.data nep.txt>> $ lmp_mpi < lmp.in # /home/ke/software/Install/lammps-stable_29Aug2024/src/lmp_mpi < lmp.in

提示:在作者的笔记本电脑上,运行时间约为 4 秒。可见,在小规模MD 计算中,CPU 的速度更快,并非所有计算都需要使用GPU

结语

本教程只是带着读者对GPUMD+NEP进行了系统演练,其中的一些命令行含义、运行文件参数设置以及分析数据等方面等下次再详细说明。

本教程所用到的参考文献如下:

[单个水分子训练集] https://pubs.aip.org/aip/jcp/article/158/8/084111/2868881/A-short-blanket-dilemma-for-a-state-of-the-art

[ovito] https://ovito.org/

[github教程] https://github.com/Kick-H/NEP-water

[gpumd] https://gpumd.org/

[lammps] https://www.lammps.org/

[nep-lmp] https://github.com/brucefan1983/NEP_CPU

[nep-water文章1] https://doi.org/10.1063/5.0147039

[nep-water文章2] https://arxiv.org/abs/2411.09631

作者简介:

徐克,致力于分子动力学模拟和机器学习势函数的研究,热衷于分享科学计算的技巧和心得。偷偷预祝一波谷歌学术引用破千:https://scholar.google.com.hk/citations?user=lfan0bAAAAAJ

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