DeePMD专题

DeePMD虚拟原子与掩码模型

讲清四个真实原子与五个容量槽,逐帧推断、虚拟原子操作和真实原子误差统计。

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

se_a_mask用于非周期体系中的真实/虚拟原子掩码。本例仍是NH₃,只有4个真实原子,额外增加1个H类型的容量槽,用aparam=0排除。它没有变成NH₄,也没有增加电子或改变量子化学标签。先完成公共准备与训练,本篇继续读取同一个新作业。下载三个实例的完整资料包。

1 查看掩码输入#

cat inputs/se_a_mask.json

实际模型设置为:

{
  "type": "standard",
  "type_map": [
    "N",
    "H"
  ],
  "descriptor": {
    "type": "se_a_mask",
    "sel": [
      1,
      4
    ],
    "neuron": [
      8,
      16
    ],
    "axis_neuron": 4,
    "resnet_dt": false,
    "precision": "float64",
    "seed": 600001
  },
  "fitting_net": {
    "type": "ener",
    "neuron": [
      32,
      32
    ],
    "resnet_dt": false,
    "precision": "float64",
    "seed": 600002,
    "numb_aparam": 1,
    "use_aparam_as_mask": true
  }
}

这里sel=[1,4]表示最多一个N槽和四个H槽,含那个虚拟槽;不要套用其他描述符的近邻容量含义。numb_aparam=1给每个原子一个附加标记,use_aparam_as_mask=true把它解释为真实/虚拟标记。输入数据非周期,没有压力或virial训练标签。

NH3-legacy-physical-atoms-and-virtual-mask

2 直接检查数组#

bash masks.sh

会显示type.raw中的0 1 1 1 1和第一帧aparam中的1 1 1 1 0。最后一个H类型槽的坐标为(4,3,2)Å,力标签为0;它只是输入容量的一部分。数据同时提供atom_pref.npy掩码,便于进一步按原子的损失设置使用;本例使用所附完整的能量/力训练输入。

包内推断程序逐帧调用原生接口。在这个版本中,直接把多帧掩码数据一起交给原生批量测试,会遇到非周期virial输出的形状问题;单帧路径能正常读取能量与力。程序相应设置DP_INFER_BATCH_SIZE=5,一次对应五个容量槽,客户无需手工拆文件。

如果在Slurm脚本中自己编写Python,加载对应DeePMD模块后,单帧调用方式为:

import numpy as np
from deepmd.infer import DeepPot
coordinates = np.load("data-mask/test/set.000/coord.npy")[0]
model = DeepPot("new-work/p100-se_a_mask/frozen_model.pb")
energy, force, virial = model.eval(
    coordinates.reshape(1, 15), None,
    [0, 1, 1, 1, 1], aparam=[[1, 1, 1, 1, 0]]
)

coordinates是你从相应一帧coord.npy读出的坐标;None表示非周期。本例只使用能量与原子力,不能把这个旧非周期接口提供的virial占位结果解释为压力。

3 比较自己的CPU和GPU结果#

cat tables-new/cpu-gpu-errors.csv

表格将同一模型分别放到CPU和Slurm分配的GPU上计算,再比较能量与力。还检查平移、旋转、H换序、合力及两档能量差分。掩码另外检查移动虚拟槽、交换同类型真实/虚拟槽后,真实物理预测是否保持一致。

NH3-legacy-conservative-force-and-CPU-GPU

本次掩码模型在P100、V10016G上的真实原子力RMSE约0.08201eV/Å,总能量RMSE约0.0008396eV/真实原子。tables-new的能量和力误差都按4个真实原子统计。dp test和学习日志可能按5个输入槽归一,因而原生力RMSE约0.07335eV/Å;两者分母不同,不是计算丢了一个真实原子。虚拟槽不能用来降低物理误差数值。

4 重画参考图#

bash plot.sh

这里只重画reference中的六张真实结果图,不重新训练。自己的预测继续看tables-new与new-work。依据:DeePMD官方掩码文档、DeePMD3.2.0版本。

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

查看配图

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

100%查看原图 ↗