🔁 主动学习工作流
使用 GPUMDkit 的采样、筛选、批处理准备、格式转换和验证工具,组织经过人工审查的 NEP 数据迭代。
适用范围
本页把一次 NEP 数据迭代拆成可检查的准备步骤:生成候选结构、筛选、准备 参考计算、转换结果、更新数据集和验证模型。GPUMDkit 负责准备和分析; 实际 GPUMD、DFT 和 NEP 计算仍使用项目自己的执行方式。
开始迭代前
先建立专用工作目录,保留上一版数据集和模型,并记录以下决定:
| 项目 | 必须确定的内容 |
|---|---|
| 模型 | 当前所用 nep.txt 的版本和预期适用(部署)领域 |
| 候选生成 | 起始结构和 GPUMD 条件 |
| 筛选方式 | MD 轨迹过滤后进行 NepTrain FPS |
| 筛选条件 | 距离、盒子、FPS 停止和结构数量限制 |
| DFT | 程序、泛函、赝势、收敛设置和任务预算 |
| 数据集 | 合并、权重、排除、划分和数据泄漏策略 |
| 验证 | NEP 精度和目标范围稳定性的验收标准 |
1. 生成候选结构
如果有多个起始结构或多套 run.in,先使用功能 302 准备 GPUMD 批处理目录:
该功能只创建目录和符号链接。准备结束后,把已确认的 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:
VASP 分支会创建 struct_fp/、fp/、计算目录和 presub.sh。准备结束后,
把已经确认的 INCAR、POTCAR 和 KPOINTS 放入 fp/。CP2K 分支通过
菜单 301 -> 2 接收 extxyz 文件、审查过的模板和目录前缀。
提交前检查结构数量、原子和 type 顺序、晶胞、DFT 输入、资源请求、可执行文件 和预期输出。GPUMDkit 只准备文件,不提交 DFT 任务。
4. 转换并审查参考数据
确认每个接受的 DFT 计算都完整结束后,根据 DFT 程序选择转换入口:
VASP 结果:
如果 OUTCAR 包含完整的 BORN EFFECTIVE CHARGES 数据块,并且需要保留逐原子的
BEC 标签,可以改用 gpumdkit.sh -out2xyz_bec <scf_results_directory>。
CP2K 日志与结构文件:先进入 CP2K 结果根目录,再运行以下命令。它会递归扫描当前目录下的 .log 及配套 .xyz/.inp,成功转换后写入当前目录的 cp2k_exyz.xyz,并用 Logfile.txt 记录处理情况。
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 前, 保留模型和数据集的版本记录,并记录本轮变化。
迭代记录
为保证可复现性,应保留模型和数据的版本记录、已确认的方案、完整命令、工作目录、 可执行文件版本、退出状态、警告、生成文件、被剔除结构、验证结果和已知限制。 缺少必要输出或仍存在未解决的验证问题时,停止本轮迭代。