DeePMD专题

DeePMD从完整JSON训练到冻结测试

运行500步DPA1小模型,读懂输入、输出和训练步数。

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

下载结构、标签、完整JSON、冻结模型、参考结果和脚本。解压到自己的工作目录,以下命令从附件根目录开始。预处理可交互操作;训练、批量预测和MD在申请的计算资源内运行。所有新结果进入work,不覆盖reference。

1. 提交第一轮#

sbatch train.sbatch dpa1-500

任务脚本加载deepmd-kit/3.2.0,每个任务申请一张P100;不是把多张卡默认塞给一个小模型。完成后输出在work/dpa1-500。训练和参考目录分开,已有work目录时拒绝覆盖。

2. 读完整输入#

inputs/dpa1-500/input.json如下。systems相对于实际计算目录work/dpa1-500,而不是你敲命令时的附件根目录:

{
  "model": {
    "type": "standard",
    "type_map": [
      "Si"
    ],
    "descriptor": {
      "type": "se_atten",
      "rcut": 4.0,
      "rcut_smth": 3.5,
      "sel": 64,
      "neuron": [
        8,
        16
      ],
      "axis_neuron": 4,
      "resnet_dt": false,
      "attn": 16,
      "attn_layer": 1,
      "attn_dotr": true,
      "attn_mask": false,
      "seed": 20261028,
      "precision": "float64"
    },
    "fitting_net": {
      "type": "ener",
      "neuron": [
        16,
        16
      ],
      "resnet_dt": false,
      "seed": 20261029,
      "precision": "float64"
    }
  },
  "learning_rate": {
    "type": "exp",
    "start_lr": 0.001,
    "stop_lr": 1e-05,
    "decay_steps": 100
  },
  "loss": {
    "type": "ener",
    "start_pref_e": 0.02,
    "limit_pref_e": 1.0,
    "start_pref_f": 1000.0,
    "limit_pref_f": 1.0,
    "start_pref_v": 0.1,
    "limit_pref_v": 0.1
  },
  "training": {
    "training_data": {
      "systems": [
        "../../data/train"
      ],
      "batch_size": 2
    },
    "validation_data": {
      "systems": [
        "../../data/test"
      ],
      "batch_size": 3,
      "numb_btch": 1
    },
    "numb_steps": 500,
    "seed": 20261028,
    "disp_file": "lcurve.out",
    "disp_freq": 50,
    "save_freq": 250,
    "save_ckpt": "model.ckpt"
  }
}

rcut是邻域截断,rcut_smth至rcut之间平滑衰减;sel需容纳实际邻居。本例4Å内最多16个邻居,设置64。neuron/attn/fitting_net控制小网络;不要因本例能跑就认为200或500步足以得到生产势。

能量、力与virial一起拟合,力权重起点较高;训练步数numb_steps=500。validation_data只监测,不做梯度更新。本例将其用于模型观察,正式研究另保留最终test。

3. 原生终端步骤是什么#

train.py准备新目录后,实际执行以下原生命令;已经运行过train.py时不要在同一目录重复开始:

cd work/dpa1-500
dp --pt train input.json
dp --pt freeze -o model.pth
dp --pt test -m model.pth -s ../../data/test -n 3 -d holdout

model.ckpt.pt是续训需要的本地检查点,model.pth是冻结推断模型。附件只提供自己训练的冻结权重,检查点由用户重新训练产生。lcurve.out保存曲线,holdout.e_peratom.out为每原子能量,holdout.f.out为三分量力,holdout.v_peratom.out为每原子virial。

4. 看实际结果#

500步:留出能量RMSE0.725410eV/atom、力1.232725eV/Å、virial3.294267eV/atom,误差明显偏大。完成训练只是走通流程;继续看续训与模型选择,不能直接拿这套权重计算可信物性。

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

查看配图

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

100%查看原图 ↗