NepTrain专题

NepTrain描述符接口、virial单位与续算

实际Python接口、八条CLI入口和NEP检查点续训的操作说明。

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

下载输入、模型、真实数据和短命令脚本(ZIP)。本篇把常用命令、Python结果和续算入口对应起来,避免只拿到一个nep.txt却不知道如何检查。

1 安装版八条CLI#

module load gpumdkit/1.5.8
NepTrain --help
NepTrain nep --help
NepTrain gpumd --help
NepTrain train --help
入口 用途 本专题对应
init 生成调度模板 initialize.sh,四种模板
perturb 生成扰动构型 perturb.sh
select 描述符筛选、降维图 三种select短脚本
nep 调用原生训练或预测 闭环训练、独立预测、续训分支
gpumd 用势进行MD 两温度探索
dft 选后端进行标签计算 四帧VASP补标
vasp 单独VASP标签入口 同一初始Si8实际单点
train 统筹上述流程 workflow.sh

这些是安装版2.2.0的实际入口。源码中还有内部和历史辅助函数,不应把每个名字都当作稳定公共接口;本专题没有宣称已验证所有内部函数或ABACUS插件路径。

2 先运行API例子#

bash api.sh
cat analysis/API-results.json
ls analysis/*descriptors.npy

这个入口使用附件的第一代参考模型,输出八个测试结构的描述符、能量、力和virial。它与 evaluate.sh 不同:后者使用自己新训练出的第二代模型。

核心Python操作如下,完整可执行版本是 api_example.py,已包含当前环境所需的项目内配置衔接:

from ase.io import read
from NepTrain.core.nep.calculator import Nep3Calculator

frames = read('data/test.xyz', ':')
calc = Nep3Calculator('models/round1-nep.txt')
per_atom = calc.get_descriptors(frames[0])
per_structure = calc.get_structures_descriptors(frames)
energy, forces, mean_virial = calc.calculate(frames)

实际第一个Si2得到2×30原子描述符,八个结构得到8×30结构描述符。单结构描述符为对应原子描述符平均,描述符坐标不是带有eV或Å单位的直接材料物理量。

3 virial最容易差一个原子数#

默认 mean_virial 为每原子eV;转为总virial要乘原子数。

import numpy as np

i = 0
W = np.asarray(mean_virial[i]).reshape(3, 3) * len(frames[i])
pressure_GPa = W / frames[i].get_volume() * 160.21766208
ase_stress_eV_A3 = -W / frames[i].get_volume()

总virial除体积是压力张量;上式压力采用压缩为正,ASE应力符号相反。calculate(..., mean_virial=False) 给出原子贡献,求和后也应得到同一个总virial。

CPU与P100/V100预测、力及virial有限差分对照

同一个pilot模型在CPU接口、P100和V100 16G原生预测中逐项对照能量、力及每原子virial;还用Si2、Si8的体积应变和xy剪切做有限差分,最大virial偏差约0.001463 eV。比较前必须确认使用的是同一组权重,不能拿两个独立训练模型要求逐项相等。

4 两种续算分别解决什么#

工作流中断后,在原目录继续:

bash workflow.sh
bash status.sh

脚本优先读取 loop/restart.yaml,复用已完成阶段。本例完整流程结束后再次运行,没有新增Slurm作业。保留cache、配置和任务记录,不要只复制一个restart.yaml到空目录。

NEP检查点则是训练器的另一层续训。附件含本例训练产生的 models/pilot-nep.restart;本集群另做了V100 16G原生续训1000代并重新评价独立测试,结果见误差表。配置应明确启用检查点并指定续训代数,而不是把nep.txt重命名为restart。

ls models/pilot-nep.restart
cat analysis/neptrain-heldout.csv
cat inputs/nep.in

本次续训分支显式设置 lambda_1=0,没有把它称为与未中断长训练完全相同的轨迹;原始检查点和第二代模型用途不同。需要自己的续训时,在新的工作目录保留原检查点和输入,核对原生训练日志确实读取检查点,再判断独立误差。

5 结果交付时保留什么#

保留输入、数据拆分、nep.in、模型、训练曲线、独立测试误差、候选标签及单位说明。最短检查顺序:

bash run.sh
bash api.sh
bash evaluate.sh

最后一条要求自己已完成完整训练;前两条可直接使用附件参考结果。不要把参考模型图、自己模型误差和训练点回算混成同一组独立测试结论。

Python工具与ABACUS标签#

继续阅读NepTrain Python接口与结构筛选和NepTrain用ABACUS计算能量力标签。提供安装版入口索引、周期几何/描述符/FPS操作、完整INPUT与KPT、真实Si单点以及能量定义和virial单位转换。原VASP闭环数据与ABACUS标签保持各自一致的DFT标准。

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

查看配图

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

100%查看原图 ↗