GPUMD+NEP是入门机器学习势函数(MLP)的最佳组合。不仅因为它是完全的国产软件,更因为其简洁高效。此外,得益于庞大的用户群体,该流程拥有完善的社区支持,任何问题都能得到专业、快速的解答。
“用GPUMD+NEP,MLP少弯路“
——某资深用户如是说
准备环境
系统环境检查:
在开始安装之前,请确认您的系统环境。本教程使用的是 Windows 11 上的 WSL2(与 Ubuntu 完全一致)。并且经过测试,本教程所需的命令在任何 Linux 系统上均可运行。
$ uname -a
Linux 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.xyz
datasets/monomers.xyz
运行nep:
$ cp datasets/monomers.xyz nep/train.xyz
$ cd nep/
>> $ ls
nep.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。运行完成后该目录的文件信息为:
>> $ ls
energy_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 .
$ ls
model.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. 体系规模较小:该体系仅包含一个水分子(3 个原子),无法充分利用GPU 资源。
2. 硬件限制:笔记本显卡性能有限。目前性价比最高的显卡为 RTX 4090,读者可在该显卡上测试不同体系以达到最佳运行效率。
注意:目前教程中训练的势函数只能模拟单个水分子,并不能运行其他多分子的水体系,例如块体水等。
运行完成后该目录的文件信息为:
$ ls
dump.xyz model.xyz neighbor.out nep.txt run.in thermo.out
运行ovitos文件(.py文件),分析单个水分子的Radial Distribution Function (rdf)和Angular Distribution Function (adf):
$ cd ../ovito/
>> $ ls
plot_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
提示:该命令正常运行并不输出信息。运行完成后该目录的文件信息为:
$ ls
adf-c1-hoh.dat adf-hoh.dat adf-ooo.dat plot_rdf_adf.py rdf.dat rdf_adf.py
随后可以使用python运行plot_rdf_adf.py对rdf.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 .
$ ls
lmp.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