GPUMDkit 抽样、扰动与训练集拆分
抽样、扰动与训练集拆分:终端操作、输入输出、集群示例与适用条件。
阅读本篇目录
本篇以集群GPUMDkit 1.5.8为准。下载输入与参考结果,解压进入gpumdkit-examples。所有工具操作在自己的工作副本执行。
module load gpumdkit/1.5.8
gpumdkit.sh -doctor
按什么顺序操作#
先检查异常近邻,再抽样。均匀抽样和随机抽样按帧选择;FPS按NEP描述符差异选择,不等于按时间等间隔。随机方法每次结果可以不同。拆分演示的PbTe数据量很小,不能作为独立泛化评估结论;真实训练尽量按轨迹或结构族分组拆分,防止相邻帧泄漏。
本章功能与终端入口#
带“→”的是交互菜单:先运行gpumdkit.sh,再逐项输入编号;不是把箭头整行粘进终端。
| 功能 | 命令或菜单 | 输入、输出与关键条件 |
|---|---|---|
| 均匀抽样201 | python "$GPUMDkit_path/Scripts/sample_structures/sample_structures.py" trajectory.xyz uniform 5 |
从全轨迹均匀选5帧,输出sampled_structures.xyz |
| 随机抽样201 | python "$GPUMDkit_path/Scripts/sample_structures/sample_structures.py" trajectory.xyz random 5 |
不放回选5帧;可加skip_initial跳过前N帧 |
| 旧PyNEP入口202 | gpumdkit.sh -pynep |
弃用兼容入口;需要pynep,优先使用203 NepTrain FPS |
| NepTrain FPS203 | gpumdkit.sh → 2 → 203 |
输入候选xyz、已有训练xyz、nep.txt、线程数;选距离阈值或构型数量 |
| 结构扰动204 | python "$GPUMDkit_path/Scripts/sample_structures/perturb_structure.py" POSCAR 5 0.03 0.2 uniform |
5个结构,3%晶胞扰动、0.2 Å位置扰动;输出POSCAR_*.vasp和perturb.txt |
| 力偏差抽样205 | python "$GPUMDkit_path/Scripts/sample_structures/select_max_modev.py" 200 0.15 |
需要真实active.out与active.xyz;按偏差筛选,不是按DFT误差筛选 |
| 训练测试集拆分206 | gpumdkit.sh → 2 → 206 |
输入文件、测试占比或数量,选均匀/随机/FPS;生成*_train.xyz和*_test.xyz |
实际操作:sample-uniform#
从附件根目录新建这个示例:
python new-case.py sample-uniform
cd work/sample-uniform
执行以下命令:
gpumdkit.sh
交互提示中依次输入(空行表示接受默认值):
2
201
trajectory.xyz uniform 5
0
也可直接执行附件的bash run-tool.sh,它会读取配套answers.in。
本次生成的参考文件:sampled_structures.xyz。自己的输出会写在当前work/sample-uniform目录。
输入10帧,输出5帧,每帧512个Si原子;抽样只选帧,不计算新标签。
下一例开始前执行cd ../..回到附件根目录;不要把两个例子的输出放在同一目录。
实际操作:sample-random#
从附件根目录新建这个示例:
python new-case.py sample-random
cd work/sample-random
执行以下命令:
gpumdkit.sh
交互提示中依次输入(空行表示接受默认值):
2
201
trajectory.xyz random 5
0
也可直接执行附件的bash run-tool.sh,它会读取配套answers.in。
本次生成的参考文件:sampled_structures.xyz。自己的输出会写在当前work/sample-random目录。
输入10帧,输出5帧,每帧512个Si原子;抽样只选帧,不计算新标签。
下一例开始前执行cd ../..回到附件根目录;不要把两个例子的输出放在同一目录。
实际操作:perturb#
从附件根目录新建这个示例:
python new-case.py perturb
cd work/perturb
执行以下命令:
gpumdkit.sh
交互提示中依次输入(空行表示接受默认值):
2
204
POSCAR 5 0.03 0.2 uniform
0
也可直接执行附件的bash run-tool.sh,它会读取配套answers.in。
本次生成的参考文件:perturb.txt。自己的输出会写在当前work/perturb目录。
下一例开始前执行cd ../..回到附件根目录;不要把两个例子的输出放在同一目录。
实际操作:split#
从附件根目录新建这个示例:
python new-case.py split
cd work/split
执行以下命令:
gpumdkit.sh
交互提示中依次输入(空行表示接受默认值):
2
206
train.xyz
0.25
1
0
也可直接执行附件的bash run-tool.sh,它会读取配套answers.in。
本次生成的参考文件:见附件reference/split,其中保留对应结构与输出。自己的输出会写在当前work/split目录。
本次16帧按25%测试占比分成12帧训练、4帧测试;相邻帧相关性仍需另行处理。
下一例开始前执行cd ../..回到附件根目录;不要把两个例子的输出放在同一目录。
实际操作:sample-fps-fixed#
从附件根目录新建这个示例:
python new-case.py sample-fps-fixed
cd work/sample-fps-fixed
执行以下命令:
gpumdkit.sh
交互提示中依次输入(空行表示接受默认值):
2
203
train.xyz test.xyz nep.txt 1
2
4 4
0
也可直接执行附件的bash run-tool.sh,它会读取配套answers.in。
本次生成的参考文件:select.png、selected.xyz。自己的输出会写在当前work/sample-fps-fixed目录。

候选16帧,已有参考4帧,按结构数量方式选择4帧;数量提示需要输入两个整数,本例为4 4。
下一例开始前执行cd ../..回到附件根目录;不要把两个例子的输出放在同一目录。