GPUMDkit 模型检查、导出与优化器初始化
检查NEP4模型结构,保存成组文件,区分已有训练续算与全新SNES初始化。
阅读本篇目录
下载输入、实际结果和绘图资料包。解压后进入资料包目录,inputs 是可修改输入,reference 是鸢算科技集群的参考结果。脚本每次在 work 下新建目录,结果位置写入 LAST-RUN.txt。计算请放在已分配的资源内执行。
这篇解决什么问题#
拿到一个 NEP 模型后,先确认元素顺序、网络规模和配套参数,再决定是否修改。GPUMDkit 的模型编辑器可以检查、导出模型,并为后续扩容、裁剪和元素调整提供入口。
本篇采用已公开的 NEP4 PbTe 教学模型:元素顺序 Te Pb,隐藏层 30 个神经元。它用来演示文件和编辑操作;模型精度是否满足自己的研究,要用自己的独立数据判断。

1. 加载环境并查看文件#
module purge
module load gpumdkit/1.5.8
head -n 6 inputs/model/nep.txt
cat inputs/model/nep.in
模型头部为:
nep4 2 Te Pb
cutoff 8 4 73 8
n_max 6 6
basis_size 6 6
l_max 4 2 0
ANN 30 0
配套 nep.in:
type 2 Te Pb
generation 1000
batch 1000
nep.txt 后面的数值是模型系数,不能只复制这六行当作完整势文件。下载包提供完整模型。type 元素顺序应与模型一致,不能只交换两个元素名字。
本集群入口为 GPUMDkit 1.5.8、Python 3.11.16、Calorine 4.0;C++ 扩展使用 GNU 13.3。模块已配好模型编辑接口,直接使用下面的原生命令。
2. 只检查已有模型#
gpumdkit.sh -nep_modifier inputs/model/nep.txt - inputs/model/nep.in
两个 - 中的第一个表示不提供 nep.restart。进入后选择 6 查看当前模型、7 查看修改记录,用 0 退出。检查不需要启动 NEP 训练,也不需要 GPU。
有自己真实训练配套文件时,可以这样进入:
gpumdkit.sh -nep_modifier nep.txt nep.restart nep.in
必须使用与该模型匹配的重启文件,不能从别的模型随便复制一个。
3. 教学包如何得到可编辑的配套文件#
本包不附带原训练优化器。运行以下命令,会从公开模型的参数创建一份 全新的 SNES 初始状态:
python init_optimizer.py
cat model-input/INITIALIZATION.json
它建立 model-input 目录,复制模型和输入,并将 3033 个 ANN/描述符参数作为新均值,初始标准差设为 0.01。模型还有 42 个 q scaler,总系数为 3075;这 42 个 scaler 不作为 SNES 的两列参数行。
# 本例初始化的核心操作;完整解析与检查见 init_optimizer.py
n = model.n_ann_parameters + model.n_descriptor_parameters
restart = np.column_stack([weights[:n], np.full(n, 0.01)])
np.savetxt('nep.restart', restart, fmt='%.16e')
这个专用示例解析器适用于包内标准 NEP4 势模型,不应直接处理 qNEP 或任意特殊模型。sigma 是优化器搜索分布的标准差,不是模型预测的不确定度或误差。新建状态不保留原训练优化器的历史,不能称作继续上一次优化。
4. 导出一个完整文件组#
gpumdkit.sh -nep_modifier model-input/nep.txt \
model-input/nep.restart model-input/nep.in
依次选择:6 查看模型 → 7 查看记录 → 8 导出 → 输入一个新的输出目录,如 export → y 确认 → 0 退出。
ls export
head -n 6 export/nep_modified.txt
cat export/nep_modified.in
一次导出产生四个文件:
| 文件 | 用途 |
|---|---|
nep_modified.txt |
修改后或重新导出的模型 |
nep_modified.restart |
与导出架构对应的优化器状态 |
nep_modified.in |
对应的训练参数和元素列表 |
nep_modified.changes.txt |
修改记录 |
再次导出到同目录,程序会为这一整组使用共同的新后缀,例如 _1,避免只更新其中一部分。原来的三个输入文件保留。
5. 实际输出与下一步#
本例原模型有 2641 个 ANN 参数、392 个描述符参数、42 个 q scaler。未修改导出后,在原 PbTe 测试结构上的能量、力和应力保持一致。这个对照检查的是文件往返保真,不是对模型做新的精度认证。
一次运行全部模型编辑演示:
bash run.sh models
cat LAST-RUN.txt
导出模型之后准备训练数据#
实际DFT标签与字段检查以及VASP、CP2K、ABACUS给出终端路线。新输出头需要相应额外标签;普通DeepMD往返会丢失本例BEC,保留NEP原件。