NEP 操作演示
NEP 操作演示
这里,我们以 MatPL 源码根目录/example/HfO2/nep_demo 为例(HfO2 训练集来源),演示 NEP 模型的训练、测试、lammps 模拟以及其他功能。当前案例目录结构如下所示:
nep_demo/
├── nep_kokkos_lmps/
│ ├── kkin.lmp
│ ├── lmp.config
│ ├── nep_to_lmps.txt
│ ├── rungpu_mcloud.job
│ └── rungpu_station.job
├── nep_lmps/
│ ├── in.lmp-cpu-25
│ ├── in.lmp-kk
│ ├── lmp.config
│ ├── nep_to_lmps.txt
│ ├── runcpu_mcloud.job
│ ├── runcpu_station.job
│ ├── rungpu_mcloud.job
│ └── rungpu_station.job
├── nep_lmps_deviation/
│ ├── in.lmp-kk
│ ├── lmp.config
│ ├── nep0.txt
│ ├── nep1.txt
│ ├── nep2.txt
│ ├── nep3.txt
│ ├── rungpu_mcloud.job
│ └── rungpu_station.job
├── nep_test.json
├── nep_train.json
├── train_mcloud.job
└── train_station.job
nep_train.json和nep_test.json分别是 NEP 模型的训练和测试参数文件,其中的../pwdata/指向HfO2/pwdata训练数据目录。train_mcloud.job和train_station.job分别是 mcloud 和自建集群的 Slurm 训练任务示例。nep_lmps同时提供 CPU 和 NEP KOKKOS GPU 模拟的输入文件与作业脚本。nep_kokkos_lmps提供 NEP KOKKOS GPU 模拟示例。nep_lmps_deviation提供四模型偏差计算示例,用于主动学习流程。- 各 lammps 案例目录中,
lmp.config为初始结构,nep_to_lmps.txt或nep*.txt为 NEP 力场文件,*.lmp*为 lammps 输入文件,*.job为 Slurm 作业脚本。
train 训练
在 nep_demo 目录下使用如下命令即可开始训练:
MatPL train nep_train.json
# 或根据运行环境修改 Slurm 脚本后提交训练任务
sbatch train_mcloud.job
# 自建集群使用 sbatch train_station.job
输入文件解释
nep_train.json 中的内容如下所示,关于 NEP 的参数解释,请参考 NEP 参数手册:
{
"model_type": "NEP",
"atom_type": [
8, 72
],
"optimizer": {
"optimizer": "ADAM",
"epochs": 30,
"batch_size": 1,
"print_freq": 10,
"train_energy": true,
"train_force": true,
"train_virial": true
},
"format": "pwmlff/npy",
"train_data": [
"../pwdata/init_000_50/", "../pwdata/init_002_50/",
"../pwdata/init_004_50/", "../pwdata/init_006_50/",
"../pwdata/init_008_50/", "../pwdata/init_010_50/",
"../pwdata/init_012_50/", "../pwdata/init_014_50/",
"../pwdata/init_016_50/", "../pwdata/init_018_50/",
"../pwdata/init_020_20/", "../pwdata/init_022_20/",
"../pwdata/init_024_20/", "../pwdata/init_026_20/",
"../pwdata/init_001_50/", "../pwdata/init_003_50/",
"../pwdata/init_005_50/", "../pwdata/init_007_50/",
"../pwdata/init_009_50/", "../pwdata/init_011_50/",
"../pwdata/init_013_50/", "../pwdata/init_015_30/",
"../pwdata/init_017_50/", "../pwdata/init_019_50/",
"../pwdata/init_021_20/", "../pwdata/init_023_20/",
"../pwdata/init_025_20/", "../pwdata/init_027_20/"
],
"valid_data":[
"../pwdata/init_000_50/", "../pwdata/init_004_50/",
"../pwdata/init_008_50/"
]
}