DeePMD从完整JSON训练到冻结测试
运行500步DPA1小模型,读懂输入、输出和训练步数。
阅读本篇目录
下载结构、标签、完整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,误差明显偏大。完成训练只是走通流程;继续看续训与模型选择,不能直接拿这套权重计算可信物性。