GPUMDkit NEP 元素增删与子模型
在真实Te-Pb模型中新增Se、移除Te或仅保留Pb,检查配套输入与已有结构预测。
阅读本篇目录
下载输入、实际结果和绘图资料包。解压后进入资料包目录,inputs 是可修改输入,reference 是鸢算科技集群的参考结果。脚本每次在 work 下新建目录,结果位置写入 LAST-RUN.txt。计算请放在已分配的资源内执行。
先决定模型要覆盖哪些元素#
本例从 type 2 Te Pb 出发,分别演示新增 Se、移除 Te、仅保留 Pb。三个操作都从同一个原始模型开始,方便比较;不把它们连续叠加。
先按模型导出与初始化准备好 model-input。完整演示可直接运行:
module purge
module load gpumdkit/1.5.8
bash run.sh models
1. 新增 Se#
gpumdkit.sh -nep_modifier model-input/nep.txt \
model-input/nep.restart model-input/nep.in
依次选择 3 新增元素 → Se → 随机种子 20261028 → 回车接受本次初始化设置 → y 确认 → 7 记录 → 8 导出 → add-Se → y → 0。
head -n 6 add-Se/nep_modified.txt
cat add-Se/nep_modified.in
本例导出元素为 Te、Pb、Se,30 个神经元,总系数 4885,SNES 参数 4843 行。原有参数的搜索标准差为 0.01,新 Se 参数的初始标准差为 0.1。
原 PbTe 探针的输出保持一致,只能说明该已有探针保留。新 Se 参数尚未经过目标数据训练;不能因此开始正式模拟 Pb-Te-Se 合金。下一步需要包含 Se、混合环境和目标温压范围的标签数据。
2. 移除 Te#
重新从原模型进入:
gpumdkit.sh -nep_modifier model-input/nep.txt \
model-input/nep.restart model-input/nep.in
选择 4 移除元素 → Te → 回车接受本次设置 → y → 7 → 8 → remove-Te → y → 0。
head -n 1 remove-Te/nep_modified.txt
cat remove-Te/nep_modified.in
输出仅剩 Pb,模型总系数 1461,SNES 参数 1419 行。含 Te 的结构已经不在新模型的元素范围内。
3. 只保留 Pb#
第三次重新打开原模型,选择 5 保留指定元素 → Pb → 回车 → y → 7 → 8 → keep-Pb → y → 0。
head -n 1 keep-Pb/nep_modified.txt
cat keep-Pb/nep_modified.in
因为原模型只有两个元素,本例“移除 Te”与“只保留 Pb”得到相同元素集合和规模。多元素模型中,两种操作用于表达不同选择方式,仍要核对元素顺序。

4. 用什么结构检查删减后的模型#
Pb-only 模型无法再计算原 PbTe 结构。资料包为这个接口对照单独构造了 32 原子 fcc Pb 几何探针,比较原模型与 Pb-only 子模型在相同几何上的输出。这里晶格常数为 5 Å,仅用于保留参数与文件格式对照,不是 Pb 平衡结构结论。
from ase.build import bulk
from calorine.calculators import CPUNEP
atoms = bulk('Pb', 'fcc', a=5, cubic=True).repeat((2, 2, 2))
atoms.calc = CPUNEP('remove-Te/nep_modified.txt')
print(atoms.get_potential_energy())
print(atoms.get_forces())
两种 Pb-only 编辑在这个探针上的能量、力、应力与原模型一致;不代表原 PbTe 训练集已经充分覆盖纯 Pb 的物性。正式使用仍需要相应验证。
5. 最后检查配套文件#
始终让模型、重启和训练输入来自同一次导出。确认 type 数量与顺序、type_weight 等逐元素参数,以及训练集中的元素都与新模型匹配。
新增元素会需要新数据;删除元素会限制可计算结构;保留元素不等于重新拟合。不要只修改 nep.txt 第一行或 nep.in 的元素名单来代替编辑器。