DeePMD氨分子能量与受力数据准备
从真实RHF能量和原子力准备非周期氨分子训练集,讲清单位、分组与个人环境。
阅读本篇目录
本例从氨分子的真实量子化学能量和原子力出发,演示准备DeePMD数据、选择类型嵌入描述符、训练并比较模型的完整流程。三篇共用一个下载包:下载完整实例包。先完成本篇,再按顺序运行类型嵌入训练和DPA4结果分析。
1 下载并解压#
把ZIP放在自己的工作目录,执行:
mkdir NH3-descriptors
python3 -m zipfile -e nh3-deepmd-descriptors-*.zip NH3-descriptors
cd NH3-descriptors
目录内的data是训练数据,inputs是三个完整训练输入,reference保存本次实算参考,code是可读的操作脚本。保持当前目录,后面的命令连续执行。
2 认识真实结构和标签#
采用24个不同NH₃构型,每个构型4个真实原子:一个N和三个H。先按原始构型分为16个训练、4个验证、4个测试,再对每个构型进行3种刚体姿态变换,得到48、12、12帧。同一个原始构型的旋转副本不会跨越训练集与测试集。
能量和力采用Gaussian的RHF/6-31G(d),电荷0、单重态,SCF严格收敛。本批重新计算24个Force任务,再做12个位移单点任务,核对6个坐标方向的受力和能量差分。力标签来自实际Force计算的梯度。下载包提供全部36个量子化学输入和选出的数值字段,无需下载大型检查点。

下面是包内一个实际输入;坐标不同的其他构型见reference/gaussian-inputs:
%NProcShared=1
%Mem=1GB
%chk=calc.chk
#p HF/6-31G(d) SCF=(Tight,Conver=10) Force NoSymm
Actual NH3 energy-force labels NH3-train-02
0 1
N 0.00000000000000 0.00000000000000 0.00000000000000
H 0.90441000297779 0.00000000000000 -0.40266927682480
H -0.42479863803490 0.73577282542747 -0.37826507803693
H -0.43850181949731 -0.75950742877317 -0.39046717743087
Force要求解析梯度,NoSymm使构型和原子编号保持清楚,%nprocshared=1是这个小分子标签任务的设置。Gaussian需要相应使用权限;本教程默认使用包内已完成的真实标签,不会重新调用Gaussian。若换成自己的体系,应自行重新计算对应构型的能量和力,不能沿用氨分子的标签。
3 重建DeePMD数组#
bash labels.sh
脚本按保存的姿态变换记录重建三个数据集,逐项核对所附数组。coord.npy形状为帧数×12,energy.npy是帧数×1,force.npy是帧数×12;力的顺序与坐标原子顺序相同。能量单位eV、力单位eV/Å。type.raw为0 1 1 1,type_map.raw依次是N H,nopbc表示非周期分子。20Å对角盒只是文件格式中的占位,推断时传入box=None。没有使用virial或逐原子能量标签。
由Hartree/Bohr梯度转换受力时要带负号:F=-gradient×27.211386245988/0.529177210903。两档独立检查分别针对量子化学力和模型力,不能把“模型力等于自身能量导数”当成“模型力已经准确预测量子化学”。

4 准备个人依赖#
bash setup.sh
采用集群deepmd-kit/3.2.0、Python3.12、PyTorch2.12.0,源码环境基于GCC13.3和CUDA12.9。脚本在当前目录创建.venv,仅在个人环境安装Vesin与vesin-torch 0.6.2,安装文件的URL和SHA256在requirements-lock.txt中。随后真正执行Torch邻居表接口;公共模块不会改变。首次需联网下载这两个依赖。
5 查看数据规模#
cat LABEL-REBUILD.json
rebuilt_splits应为48、12、12,new_Gaussian_calls为0。到此数据与环境已准备好,下一篇提交一次新训练。包的SHA256:fc24de035360c3d13b4832d83fbe8b8d33f99790f7fd4fce88e62575aa2a2de3。