NEP 操作演示
这里,我们以 MatPL 源码根目录/example/HfO2/nep_demo 为例(HfO2 训练集来源),演示 NEP 模型的训练、测试、lammps模拟以及其他功能。案例目录结构如下所示。
HfO2/
├── atom.config
├── pwdata/
└── nep_demo/
├── nep_test.json
├── nep_train.json
├── train.job
└── nep_lmps/
├── in.lammps
├── lmp.config
├── nep_to_lmps.txt
├── runcpu.job
└── rungpu.job
- pwdata 目录为训练数据目录
- nep_train.json 是训练 NEP 力场输入参数文件
- nep_test.json 是测试 NEP 力场输入参数文件
- train.job 是slurm 提交训练任务例子
- nep_lmps 目录下 为 NEP 力场的 lammps md例子
- 力场文件 nep_to_lmps.txt
- 初始结构 lmp.config
- 控制文件 in.lammps
- runcpu.job 和 rungpu.job 是 slurm 脚本例子
train 训练
在 nep_demo 目录下使用如下命令即可开始训练:
MatPL train nep_train.json
# 或修改环境变量之后通过slurm 提交训练任务 sbatch train.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/"
]
}
训练结束后的力场文件目录请参考 model_record 详解
test 测试
test 命令支持来自 MatPL nep_model.ckpt 力场文件,以及在 lammps 或 GPUMD 中使用的 nep5.txt 格式文件。
MatPL test nep_test.json
test.json 中的内容如下所示,参数解释请参考 参数手册
{
"model_type": "NEP",
"format": "pwmlff/npy",
"model_load_file": "./model_record/nep_model.ckpt",
"test_data": [
"../init_000_50", "../init_004_50", "../init_008_50",
"../init_012_50", "../init_016_50", "../init_020_20",
"../init_024_20", "../init_001_50", "../init_005_50",
"../init_009_50", "../init_013_50", "../init_017_50",
"../init_021_20", "../init_025_20", "../init_002_50",
"../init_006_50", "../init_010_50", "../init_014_50",
"../init_018_50", "../init_022_20", "../init_026_20",
"../init_003_50", "../init_007_50", "../init_011_50",
"../init_015_30", "../init_019_50", "../init_023_20",
"../init_027_20"
]
}
测试结束后的力场文件目录请参考 test_result 详解