从VASP数据训练DeePMD原子势
用硅的能量和原子力,完整走通数据整理、训练、模型导出和独立测试。
阅读本篇目录
机器学习原子势学习的是结构到能量和原子力的映射。准备VASP数据后,还要分开训练、验证和测试集,才能判断模型对未参与训练的构型是否有效。本例在鸢算科技集群用25个Si₁₆构型训练一个小模型,重点展示可重复的操作流程。
1. 先获得VASP能量和力#
本例沿用硅的热位移算例:一个静态构型,以及0、300、600 K谐振动分布下各8个构型。0 K样本包含零点振动位移。晶胞和原子数固定;这些是热位移单点计算,不是结构优化,不应把每个样本都优化回最低能结构。
PBE、PAW64、ENCUT=550 eV、EDIFF=1E-6、4×4×4 Gamma网格,ISYM=0,ISMEAR=0,SIGMA=0.05 eV。附件calculations包含这25组输入;准备匹配POSCAR元素顺序的合法POTCAR,在各目录运行sbatch run.sh。确认电子收敛后再整理数据。
采用与原子力一致的VASP自由能F作为能量标签。不同泛函、赝势、电子展宽或不收敛构型不应直接混入同一训练集。本例不拟合virial,也不验证压力和变胞性能。
2. 整理数据,先划分再训练#
在附件根目录执行:
module load ase/3.29.0
python prepare_data.py
脚本读取自己计算出的vasprun.xml,写出DeePMD的coord.npy、box.npy、energy.npy和force.npy,并保留type.raw、type_map.raw。坐标、能量、力单位分别是Å、eV、eV/Å。
| 数据集 | 构型数 | 用途 |
|---|---|---|
| train | 13 | 更新模型参数 |
| validation | 6 | 观察训练过程误差 |
| test | 6 | 模型固定后独立评估 |
热位移使用成对正负位移;不同温度还有相同随机方向的缩放构型。本例把同一方向的所有温度和正负构型分在同一组:方向0、1用于训练,方向2用于验证,方向3用于测试,静态构型放训练集。这样避免把高度相关的一对样本随机拆到两边,制造虚假的低测试误差。独立方向仍然很少,不能据此宣布模型泛化充分。
3. 提交训练任务#
cd training
sbatch run.sh
附件脚本加载deepmd-kit/3.2.0,在V100上运行PyTorch后端;实际运行显示PyTorch 2.12.0,双精度。VASP标签使用NVHPC 25.3/CUDA 12.8构建的6.6.1 P100分支。现有模块已包含所需环境,无须用户自行编译。
input.json采用se_e2_a描述符,截断5.5 Å、平滑起点4.5 Å,描述符网络16–32–64、拟合网络64–64–64,训练5000步。能量和力共同进入损失,学习率从10⁻³下降到10⁻⁵。完整参数以附件为准。任务依次运行:
dp --pt train input.json
dp --pt freeze -o model.pth
dp --pt test -m model.pth -s ../data/test -n 6 -d test
lcurve.out是训练曲线;model.pth是冻结模型;test.e.out和test.f.out分别给出测试能量和力的参考值、预测值。模型导出后仍需要测试,训练损失不能代替测试集误差。
4. 查看真实测试结果#
回到附件根目录,在有NumPy的环境运行python extract_deepmd.py,生成DEEPMD-DATA.json。
| 独立测试指标 | 本例结果 |
|---|---|
| 能量RMSE | 1.228 meV/atom |
| 力分量RMSE | 0.03853 eV/Å |
| 最大能量误差绝对值 | 1.495 meV/atom |
| 最大力分量误差绝对值 | 0.17283 eV/Å |
能量误差先除以16个原子;力RMSE统计6×16×3个笛卡尔分量。下表正号表示预测能量比VASP更高。
| 测试构型 | 预测−VASP / meV/atom |
|---|---|
| si-thermal-000-03--1 | +1.480 |
| si-thermal-000-03-+1 | +1.282 |
| si-thermal-300-03--1 | +1.495 |
| si-thermal-300-03-+1 | +1.104 |
| si-thermal-600-03--1 | +1.241 |
| si-thermal-600-03-+1 | +0.466 |

5. 最后得到什么,怎样用于自己的体系#
本例得到可加载的model.pth、学习曲线、独立测试误差和输入模板。25个固定体积硅构型只覆盖很小的结构空间,不能直接用于熔化、缺陷、表面、断键、其他元素或高压模拟。即使能量误差小,也要检查最大力误差和实际轨迹稳定性。
用于自己的体系时,先覆盖计划模拟的组成、温度、密度、应变和反应构型;按独立轨迹或构型族划分数据,再训练、测试并补充模型误差大的构型。需要应力和变胞动力学时,还应加入经过核对的virial标签与相应测试。本例没有完成这些生产级扩展。
方法参考:DeePMD-kit训练说明。