DeePMD专题

DeePMD模型接入LAMMPS实操

从冻结模型和64原子硅结构出发,提交LAMMPS与Python接口对照,理解模块、类型映射和模型适用范围。

更新于 2026-11-11约 7 分钟阅读按任务与环境选择适用配置
阅读本篇目录

把已经训练的势接入LAMMPS,先用固定结构确认能量、力、virial与模型原接口一致,再考虑优化或动力学。本篇复用鸢算科技集群既有的教学冻结权重,完整经过P100和V10016G实际计算;没有重新训练,也没有把PyTorch权重转换成TensorFlow。

1 下载与目录#

下载模型、输入、原始输出、压力步长对照和绘图脚本,将ZIP放在登录目录:

mkdir DP-LAMMPS
python3 -m zipfile -e deepmd-lammps-interface-*.zip DP-LAMMPS
cd DP-LAMMPS
bash analyze.sh

分析已有数据,生成 tables/ 和 figures/,不提交计算:

head -n 10 tables/energies-forces.csv

reference/original/ 保存初始接口对照,reference/pressure/ 保存同一实际坐标的小步长压力对照。原先10⁻⁵微应变的压力差分偏差也保留,原因和选择方法见压力差分步长。

2 本例的结构和四种模型#

文件标签 实际模型 格式与来源
pt_se_e2_a PyTorch se_e2_a 原生 .pth 教学权重
pt_compressed 同一PyTorch模型的压缩版本 由上一行模型压缩得到
pt_dpa1 PyTorch DPA1 另一份原生 .pth 权重
tf_se_e2_a TensorFlow se_e2_a 在TensorFlow中独立训练的 .pb

只有前两行适合同权重压缩对照;TensorFlow模型与PyTorch模型分别训练,不应要求它们给出相同的材料预测。对应训练流程和输入见DeePMD训练教程。

结构为金刚石硅常规胞2×2×2,共64原子,a=5.43 Å、基准盒长10.86 Å,三维周期边界。四个条件分别是均匀缩放0.98、1.00、1.02,以及标准差0.03 Å的坐标扰动。

实际理想和扰动Si64结构的xy投影

图中颜色表示z坐标,沿z方向重合的原子会投影在同一位置。所有模型使用同一份结构,便于核对接口;没有把松弛前后的几何混在一起。

3 提交自己的接口算例#

bash run.sh

默认申请核时P100分区1GPU、2个CPU核额度,依次完成16个LAMMPS固定结构条件和8次Python批量求值。V10016G权限用户可将命令换为 bash run.sh v100。脚本在计算节点运行推断,不在登录节点执行LAMMPS或模型求值;登录节点只负责准备、提交和小文件分析。

每次Python批量求值包含四种结构。CPU模式也在本次GPU作业的计算节点内运行,通过隐藏CUDA设备作数值对照,不能当作Intel Xeon 8173M节点的性能数据。

脚本等待现有作业,提交号在 new-work/SUBMISSIONS.json;可另开终端用 squeue -u "$USER" 查看。不要因排队重复提交。重做请另建解压目录,保留原结果。

head -n 10 tables-new/your-energies-forces.csv

新结果位于 new-work/,汇总在 tables-new/;参考结果留在 reference/。本例全部是零步求能量与力,不积分MD时间。

4 LAMMPS输入与模块#

cat input-example.lmp

下面是实际复跑使用的PyTorch se_e2_a扰动结构输入。文件路径相对于生成的单个计算目录;后半段的±位移和±应变用于能量导数对照。

units metal
atom_style atomic
boundary p p p
read_data ../models/perturbed.data
pair_style deepmd ../potentials/pt_se_e2_a.pth
pair_coeff * * Si
neighbor 1.0 bin
neigh_modify every 1 delay 0 check yes
compute e all pe/atom
thermo 1
thermo_style custom step atoms pe press vol pxx pyy pzz pxy pxz pyz
thermo_modify norm no format float %.16g
dump d all custom 1 base.dump id type x y z fx fy fz c_e
dump_modify d sort id format float %.16g
run 0
undump d
print "base $(pe:%.16g) $(press:%.16g) $(vol:%.16g) $(pxx:%.16g) $(pyy:%.16g) $(pzz:%.16g) $(pxy:%.16g) $(pxz:%.16g) $(pyz:%.16g)" append properties.dat screen no
group probe id 1
displace_atoms probe move 1e-05 0 0 units box
run 0
print "FD 1 0 plus $(pe:%.16g)" append properties.dat screen no
displace_atoms probe move -2e-05 0 0 units box
run 0
print "FD 1 0 minus $(pe:%.16g)" append properties.dat screen no
displace_atoms probe move 1e-05 0 0 units box
group probe delete
group probe id 17
displace_atoms probe move 0 1e-05 0 units box
run 0
print "FD 17 1 plus $(pe:%.16g)" append properties.dat screen no
displace_atoms probe move 0 -2e-05 0 units box
run 0
print "FD 17 1 minus $(pe:%.16g)" append properties.dat screen no
displace_atoms probe move 0 1e-05 0 units box
group probe delete
group probe id 43
displace_atoms probe move 0 0 1e-05 units box
run 0
print "FD 43 2 plus $(pe:%.16g)" append properties.dat screen no
displace_atoms probe move 0 0 -2e-05 units box
run 0
print "FD 43 2 minus $(pe:%.16g)" append properties.dat screen no
displace_atoms probe move 0 0 1e-05 units box
group probe delete
change_box all x scale 1.000001 y scale 1.000001 z scale 1.000001 remap
run 0
print "strain plus $(pe:%.16g) $(vol:%.16g)" append properties.dat screen no
change_box all x scale 0.999998000002 y scale 0.999998000002 z scale 0.999998000002 remap
run 0
print "strain minus $(pe:%.16g) $(vol:%.16g)" append properties.dat screen no

核心设置是 pair_style deepmd 和 pair_coeff * * Si,将原子类型1映射到模型的Si。替换模型时保持自己的元素顺序和类型映射一致。

本例作业加载 lammps/22Jul2025_update6-deepmd-3.2.0-source-p100-gpu,V100使用对应的 source-v100-gpu 模块。它与独立源码版DeePMD-kit3.2.0配套,使用GCC13.3、CUDA12.9和HPC-X25.0的MPI环境;Python后端为PyTorch2.12.0、TensorFlow2.21.0。

作业中的原生求解命令为 mpirun -np 1 --bind-to none lmp -in in.lmp。这里的DeePMD后端按CUDA设备选择推断,不需要给 deepmd 强加 -sf gpu 或 -sf kk。普通新版LAMMPS模块与DeePMD配套模块应按自己的模型接口选择。

5 接口一致以后,还要检查模型#

四种教学权重对固定硅结构的实际原生压力

例如基准晶格下,PyTorch se_e2_a预测约41.158 GPa,DPA1约5.407 GPa,独立TensorFlow模型约−63.042 GPa。这些是模型的实际输出,显示这几份教学权重不能直接当作已验证的生产硅势。三点折线只是连接固定结构结果,不能据此拟合平衡EOS。

本包用于熟悉接口和结果核对;正式计算应换成经过自己体系验证的势,检查能量、力、应力、训练覆盖和MD稳定性。两套接口给出相同结果,不能替代这些材料检查。继续看能量、力与virial对照;输入选项见DeePMD官方LAMMPS接口说明。

需要根据你的体系选择资源?联系讨论计算需求。实际可用软件与权限,以当前账户和运行环境为准。

查看配图

放大后可滚动查看细节,按 Esc 关闭。

100%查看原图 ↗