Skip to content

🔁 主动学习工作流

使用 GPUMDkit 的采样、筛选、批处理准备、格式转换和验证工具,组织经过人工审查的 NEP 数据迭代。

适用范围

本页把一次 NEP 数据迭代拆成可检查的准备步骤:生成候选结构、筛选、准备 参考计算、转换结果、更新数据集和验证模型。GPUMDkit 负责准备和分析; 实际 GPUMD、DFT 和 NEP 计算仍使用项目自己的执行方式。

开始迭代前

先建立专用工作目录,保留上一版数据集和模型,并记录以下决定:

项目 必须确定的内容
模型 当前所用 nep.txt 的版本和预期适用(部署)领域
候选生成 起始结构和 GPUMD 条件
筛选方式 MD 轨迹过滤后进行 NepTrain FPS
筛选条件 距离、盒子、FPS 停止和结构数量限制
DFT 程序、泛函、赝势、收敛设置和任务预算
数据集 合并、权重、排除、划分和数据泄漏策略
验证 NEP 精度和目标范围稳定性的验收标准

1. 生成候选结构

如果有多个起始结构或多套 run.in,先使用功能 302 准备 GPUMD 批处理目录:

gpumdkit.sh  # 选择:3) Workflow -> 302

该功能只创建目录和符号链接。准备结束后,把已确认的 nep.txt 和每个样本 对应的 run_<index>.in 放入生成的 md/,逐项检查映射,再通过项目自己的 流程运行 GPUMD。

重新运行前使用干净输出目录,或先归档采用追加模式的 GPUMD 输出。开始筛选 前,检查退出状态、日志、温度、能量、压力、晶胞和轨迹,确认 dump.xyz 完整且没有明显不合理结构。

2. 选择候选结构

推荐对稳定的 MD 轨迹先做几何检查,再应用已经确定的筛选条件:

gpumdkit.sh -min_dist_pbc dump.xyz
gpumdkit.sh -filter_dist_pbc dump.xyz <minimum_distance>
# 只有在盒子边长条件已确定时才运行:
gpumdkit.sh -filter_box filtered_dump.xyz <maximum_box_edge>
gpumdkit.sh  # 选择:2) Sample Structures -> 203) FPS by NepTrain

-min_dist_pbc 只报告距离,不会剔除结构;实际筛选使用 -filter_dist_pbc。盒子筛选是可选的,没有适用且已确定的盒子边长条件时 应跳过。使用盒子筛选时,它会写入 filtered_by_box.xyz,在 203 的提示中 使用这个文件作为候选输入。记录所有阈值、被剔除的结构、FPS 停止条件和选中 帧的对应关系。

可选的委员会不确定度方案

只有项目明确采用时才使用委员会不确定度。GPUMD active 需要兼容的委员会 模型,并生成同一次运行的 active.out 和 active.xyz;随后可用功能 205 按力偏差排序或限制数量。使用前确认模型顺序、检查间隔、输出选项、阈值、 top_n 和 min_deviation。

3. 准备参考计算

对审查后的 selected.xyz 使用功能 301:

gpumdkit.sh  # 选择:3) Workflow -> 301 -> VASP 或 CP2K

VASP 分支会创建 struct_fp/、fp/、计算目录和 presub.sh。准备结束后, 把已经确认的 INCAR、POTCAR 和 KPOINTS 放入 fp/。CP2K 分支通过 菜单 301 -> 2 接收 extxyz 文件、审查过的模板和目录前缀。

提交前检查结构数量、原子和 type 顺序、晶胞、DFT 输入、资源请求、可执行文件 和预期输出。GPUMDkit 只准备文件,不提交 DFT 任务。

4. 转换并审查参考数据

确认每个接受的 DFT 计算都完整结束后,根据 DFT 程序选择转换入口:

VASP 结果:

gpumdkit.sh -out2xyz <scf_results_directory>

如果 OUTCAR 包含完整的 BORN EFFECTIVE CHARGES 数据块,并且需要保留逐原子的 BEC 标签,可以改用 gpumdkit.sh -out2xyz_bec <scf_results_directory>。

CP2K 日志与结构文件:先进入 CP2K 结果根目录,再运行以下命令。它会递归扫描当前目录下的 .log 及配套 .xyz/.inp,成功转换后写入当前目录的 cp2k_exyz.xyz,并用 Logfile.txt 记录处理情况。

gpumdkit.sh -cp2k2xyz

VASP 的 -out2xyz/菜单 101 和带 BEC 的 -out2xyz_bec 默认在当前目录生成 NEPdataset/train.xyz;上述 CP2K 入口生成 cp2k_exyz.xyz。后续命令 中的 <new_reference.xyz> 应替换为转换器实际生成的 extxyz 文件,不能把 占位符当成文件名:

gpumdkit.sh -range <new_reference.xyz> energy
gpumdkit.sh -range <new_reference.xyz> force
gpumdkit.sh -min_dist_pbc <new_reference.xyz>
gpumdkit.sh -analyze_comp <new_reference.xyz>

检查能量、力、维里标签、单位、晶胞、元素和 type 顺序、组成覆盖、重复结构、 极端结构以及失败或不完整的计算。保留原始 DFT 输出,并记录所有排除项。输出位置和重复转换的覆盖风险见格式转换。

5. 更新数据集并验证模型

合并新增参考结构前,保留上一版数据集。记录加入、剔除、加权以及分配到训练 集/测试集的构型;需要独立性时,避免相邻轨迹帧泄漏到划分两侧。

检查数据集后,按已确认的方案准备或修改 nep.in。通过项目的执行流程完成 NEP 训练后,检查:

  • 训练和测试损失;
  • 能量、力和维里/应力 parity 输出;
  • 按元素、组成、相和构型类别划分的误差;
  • 异常点、短程行为和目标范围内的 MD 稳定性;
  • 项目规定的模型验收标准。

总体 RMSE 不能单独证明模型已经适合正式使用。将新模型用于下一轮 MD 前, 保留模型和数据集的版本记录,并记录本轮变化。

迭代记录

为保证可复现性,应保留模型和数据的版本记录、已确认的方案、完整命令、工作目录、 可执行文件版本、退出状态、警告、生成文件、被剔除结构、验证结果和已知限制。 缺少必要输出或仍存在未解决的验证问题时,停止本轮迭代。