DeePMD局部坐标系与真实受力训练
用不等长键氨分子理解选轴规则,准备真实标签并一次提交三个TensorFlow模型。
阅读本篇目录
loc_frame是DeePMD的旧式局部坐标系描述符,适合了解早期方法和复现旧输入。本篇用不等长N-H键的真实NH₃构型,讲解数据、选轴规则和原生TensorFlow训练。下载三个实例的完整资料包。同一个包还包括旧类型嵌入与虚拟原子掩码;下面只需提交一次,就会依次训练三个模型。
1 下载与解压#
mkdir NH3-legacy
python3 -m zipfile -e nh3-deepmd-legacy-*.zip NH3-legacy
cd NH3-legacy
inputs里是完整训练输入;data-asym用于局部坐标系,data用于旧类型嵌入,data-mask用于掩码。reference是本站实际计算的参考,自己的新结果放到new-work和tables-new。
2 准备真实标签#
bash labels.sh
脚本从所附数值记录重建数组并逐项核对,不会再次运行Gaussian。两个真实数据集各有24个原始构型,先按16/4/4分为训练、验证、测试,再各做3个刚体姿态,得到48/12/12帧。同一个构型的旋转副本始终在同一组。
局部坐标系使用不等长键构型:基于氨分子构型将三个N-H方向分别缩放0.92、1.00、1.08,再重新计算RHF/6-31G(d)能量与解析受力。24个标签任务加12个能量差分对照任务,共36次真实Gaussian Force计算。另两个模型复用氨分子能量受力教程的原始真实标签。

为什么要不等长键? 局部坐标系按同类型近邻的距离顺序选轴。等距近邻或计算过程中近邻换序,会导致坐标轴切换;本例专门选择在所测位移范围内排序稳定的数据,最近同类距离间隔至少约0.0146Å。它说明该旧方法的操作路径,不代表能直接用于任意对称体系或反应MD。需要平滑势能面时,可先阅读本站的平滑描述符教程。
3 检查环境#
bash setup.sh
使用公共deepmd-kit/3.2.0,Python3.12、TensorFlow2.21.0,集群源码环境基于GCC13.3和CUDA12.9。无需另装个人依赖。下列三个描述符采用TensorFlow后端,不能把命令里的--tf直接换成--pt。
4 输入与选轴#
完整文件在inputs/loc_frame.json,实际模型部分如下:
{
"type": "standard",
"type_map": [
"N",
"H"
],
"descriptor": {
"type": "loc_frame",
"rcut": 3.0,
"sel_a": [
4,
8
],
"sel_r": [
0,
0
],
"axis_rule": [
0,
1,
0,
0,
1,
1,
0,
0,
0,
0,
1,
0
]
},
"fitting_net": {
"type": "ener",
"neuron": [
32,
32
],
"resnet_dt": false,
"precision": "float64",
"seed": 600002
}
}
sel_a=[4,8]为N、H两类近邻预留完整坐标容量,sel_r=[0,0]表示不加只用距离的近邻。axis_rule每6个整数对应一种中心原子类型:前三个指定第一根轴的近邻类别、元素类型与同类排序编号,后三个指定第二根轴。编号从0开始。本例N中心使用最近和次近的H,H中心使用N与最近的另一个H。
5 提交自己的三个模型#
bash run.sh
默认P100单卡、2个CPU核、8GB内存。V10016G用户在新解压目录运行bash run.sh v100。程序显示Slurm作业号并等待完成;已有new-work时请保留结果,另建目录,避免覆盖。完整流程为:准备目录→依次训练三个模型→分别冻结成.pb→原生测试→GPU与CPU推断→输出CSV。
局部坐标系和旧类型嵌入各12000步,掩码模型3000步。每个都从头训练,没有把参考权重作为自己的训练结果。P100与V10016G实算中,局部坐标系能量RMSE约0.000297eV/真实原子、力RMSE约0.01745eV/Å。只是限定氨分子构型的教学结果,不是通用氨势的精度承诺。

上图比较真正的量子化学受力和独立能量差分。训练模型还会做自己的能量差分检查,二者是不同问题。ZIP SHA256:78714b2780cee08eabf3d6bc969b74cb6e08aaa5ea48b3f49ce9d7c717a699bb。