CH4CH_4CH4为例
1.原始数据处理
1.1 将VSAP得到得到OUTCAR文件将VSAP得到得到OUTCAR文件将VSAP得到得到OUTCAR文件,用工具dpdatadpdatadpdata进行转变得到能被deepmd执行的训练集,
dpdatadpdatadpdata工具需要用pippippip命令下载,pippippip可以通过condacondaconda包管理工具使用
得到验证数据data/validation−datadata/validation-datadata/validation−data和训练数据data/training−datadata/training-datadata/training−data
set.000 是一个目录,包含压缩格式的数据(numpy 压缩数组)
type.raw 是一个文件,包含原子类型(以整数表示)
type_map.raw 是一个文件,包含原子类型名称
2.input.json
2.1 模型参数 model paramters
定义将原子构型映射到一组对称不变特征的描述符,以及将描述符作为输入并预测原子对目标物理性质贡献的拟合网
①type−map①type-map①type−map:给出每种类型原子的名称
"type_map": ["H", "C"]
②descriptor②descriptor②descriptor:原子环境描述符
"descriptor":{
"type": "se_e2_a", 描述符类型
"rcut": 6.00, 截止半径
"rcut_smth": 0.50, 开始平滑,1/r从rcut到rcut_smth
"sel": [4, 1], 给出所选的第i类邻居的数量
"neuron": [10, 20, 40], 嵌入网各隐藏层的神经元数量
"resnet_dt": false,
"axis_neuron": 4, G 的子矩阵(嵌入矩阵)的大小
"seed": 1, 用于参数初始化的随机种子
"_comment": "that's all"
},
sel−a[1]=4表示H原子的局部环境由4个近邻原子决定sel-a[1]=4表示H原子的局部环境由4个近邻原子决定sel−a[1]=4表示H原子的局部环境由4个近邻原子决定,sel−a[2]=1表示C原子的局部环境由1个近邻原子决定sel-a[2]=1表示C原子的局部环境由1个近邻原子决定sel−a[2]=1表示C原子的局部环境由1个近邻原子决定
嵌入网络的大小为[10,20,40][10,20,40][10,20,40]
③fitting−net③fitting-net③fitting−net:物理特性拟合
"fitting_net":{
"neuron": [100, 100, 100], 拟合网各隐藏层的神经元数量
"resnet_dt": true,
"seed": 1, 用于参数初始化的随机种子
"_comment": "that's all"
},
拟合网络大小为[100,100,100][100,100,100][100,100,100]
2.2 learning-rate 学习率
"learning_rate" :{
"type": "exp", 学习率类型
"decay_steps": 5000, 每训练这么多步,学习率衰减一次
"start_lr": 0.001, 训练起始的学习率
"stop_lr": 3.51e-8, 训练结束预期衰减到的学习率
"_comment": "that's all"
},
2.3 loss 损失函数
"loss" :{
"type": "ener", 函数类型
"start_pref_e": 0.02, 训练开始时能量损失的前置因子
"limit_pref_e": 1, 训练极限时能量损失的前置因子
"start_pref_f": 1000, 训练开始时力损失的前置因子
"limit_pref_f": 1, 训练极限时力损失的前置因子
"start_pref_v": 0, 训练开始时的病毒损失前置因子
"limit_pref_v": 0, 训练极限时的病毒损失前置因子
"_comment": "that's all"
},
DeePMD的损失函数是通过对力、能量和病毒项进行加权而确定的。
在损失函数中,prefepref_eprefe 从 0.020.020.02 逐步增加到 111,preffpref_fpreff 从 100010001000 逐步减少到 111,意味着力项在开始时占主导地位,而能量和病毒项在最后变得重要。prefvpref_vprefv 设置为 0,表示训练过程中不包含病毒数据
2.4 traing-controls 调用训练数据
"training" : {
"training_data": { 配置训练数据
"systems": ["../data/training_data"], 用于训练的数据
"batch_size": "auto", 自动确定批次大小,使 batch_size 乘以系统中的原子数不小于 32
"_comment": "that's all"
},
"validation_data":{ 配置验证数据
"systems": ["../data/validation_data/"], 用于验证的数据
"batch_size": "auto", 同上
"numb_btch": 1, 一个整数,用于指定每个验证期的采样系统数量
"_comment": "that's all"
},
"numb_steps": 100000, 训练批次数,每次训练使用一批数据
"seed": 10,
"disp_file": "lcurve.out", 打印学习曲线文件
"disp_freq": 1000, 印刷学习曲线的频率
"save_freq": 10000, 保存检查点的频率
}
学习曲线每 100010001000 步写入 lcurve.out,模型相关文件每 100001000010000 步保存一次。
3.DP训练模型
3.1 配置deepmd环境
3.2申请计算节点(登陆节点没dcu加速卡)
3.3登录计算节点
3.4配置DP环境和加载相关的dtk后运行input.json
3.5出现DeePMDDeePMDDeePMD界面
3.6 每1000步输出一次,每10000步保存一次检查点文件
3.7 观测lcurve.out文件
lcurve.out 包含 8 列,
从左到右依次为
stepstepstep:训练步骤
rmse−valrmse-valrmse−val:验证损失
rmse−trnrmse-trnrmse−trn:训练损失
rmse−e−valrmse-e-valrmse−e−val:能量的均方根验证误差
rmse−e−trnrmse-e-trnrmse−e−trn:能量的均方根训练误差
rmse−f−valrmse-f-valrmse−f−val:力的均方根验证误差
rmse−f−trnrmse-f-trnrmse−f−trn:力的均方根训练误差
lrlrlr:学习率
能量的均方根误差(RMSE)按系统中原子的数量进行归一化。结果表明,经过10510^5105步训练后,能量测试误差小于 1 meV,力测试误差约为 120 meV/Å。还可以观察到,力测试误差系统地(但略微)大于训练误差,这意味着对相当小的数据集进行了轻微的过度拟合
3.8 可视化处理
编写可视化pythonpythonpython代码
配置condacondaconda
配置python23.1.2配置python 23.1.2配置python23.1.2,要用到图表化模块matplotlibmatplotlibmatplotlib
3.9 查错
在训练过程中,模型每 10000 步会保存在 TensorFlow model.ckpt* 文件中,最后保存的模型名称会记录在检查点文件中
当训练过程异常停止时,我们可以从提供的检查点重新开始训练(在计算节点)
input.json 必须与之前的一致
3.10 冻结模型
训练结束后冻结模型 ,将 TensorFlow 检查点文件中保存的模型参数冻结为模型文件
3.11 压缩模型
压缩后的 DP 模型通常会将基于 DP 的计算速度提高一个数量级,内存消耗也会减少一个数量级
3.12测试压缩模型
当前目录下会有结果文件
4.使用LAMMPS运行MD
4.1打开目录并将训练目录下的输出模型链接过来
conf.lmpconf.lmpconf.lmp 给出了气相甲烷 MD 模拟的初始配置
in.lammpsin.lammpsin.lammps 如下,是 LAMMPS 输入脚本,pair−stylepair-stylepair−style作用是调用了deepmddeepmddeepmd并提供了冻结模型文件,意味着原子交互将使用储存在冻结模型文件中的DPDPDP模型计算
# gas phase methane
units metal
boundary p p p
atom_style atomic
neighbor 1.0 bin
neigh_modify every 10 delay 0 check no
read_data conf.lmp
mass 1 1
mass 2 12
pair_style deepmd graph-compress.pb
pair_coeff * *
velocity all create 50.0 23456789
fix 1 all nvt temp 50.0 50.0 0.5
timestep 0.001
thermo_style custom step pe ke etotal temp press vol
thermo 100
dump 1 all custom 100 ch4.dump id type x y z
run 5000
4.2 执行lammps
MD模拟结束生成 log.lammpslog.lammpslog.lammps和 ch4.dumpch4.dumpch4.dump 文件,分别存储了热力学信息和分子轨迹
4.3 模型推理
可以使用 DPDPDP 模型来评估 LAMMPSLAMMPSLAMMPS 轨迹中每一帧的能量