【DP系列教程-04】训练数据不会搞怎么办?深度势能模型一跑就崩怎么办?
pair_style deepmd graph_0.pb graph_1.pb graph_2.pb graph_3.pb out_file md.out out_freq 10
graph_0.pb graph_1.pb graph_2.pb graph_3.pb 是DP君通过不同的随机种子设置训练出来的四个模型,其中第一个模型被用来跑MD,四个模型一起来给出model deviation。model deviation 每10个MD步算一次,计算结果被输出到一个叫 md.out 的文件中。git clone http://github.com/deepmodeling/dpgen.git
安装非常简单:
cd dpgen
pip install.
运行dpgen 需要提供两个json 格式的配置文件,一个规定了dpgen工作流程,一个规定了dpgen使用的计算资源。一般命名为param.json和 machine.json。
DP君先带大家看一下工作流配置文件。一个例子可以在
examples/run/dp-lammps-vasp/Al/param_al_all_gpu_deepmd_kit_1.1.0.json
中找到。这个文件中的参数说明可以在官网找到,我们看一下几个关键参数。
首先是如何定义做了哪些MD模拟,相应的参数是model_devi_jobs,这是一个list,list中的每个元素是一个dict,这个dict规定了一组MD模拟。包含如下参数:
ensemble:做MD模拟使用的系综
nsteps:MD模拟步数
traj_freq:MD轨道上每个这个步数检查一次 model deviation
press MD:模拟的压强,是一个list
temps MD:模拟的温度,是一个list
sys_idx:模拟的初始构型,是一个list,list中每个元素是一个int, 对应`sys_configs`这个数组中一个元素的index。比如sys_idx: [0, 8, 16] 是用 sys_configs[0], sys_configs[8]和sys_configs[6]这三个list中定义的构型做初始构型做MD模拟。
dpgen会帮大家运行这些MD模拟,然后根据每一帧最大的model deviation 确定哪些构型需要做DFT计算。选取准则由如下两个参数确定:
model_devi_f_trust_lo是model deviation的下界,小于这个值认为是准确构型,不需要DFT计算
model_devi_f_trust_hi是model deviation 的上界,大于这个值构型被认为非常不靠谱(比如两个原子距离过近等情况,这时DP质量很差),不会进行DFT计算。
因此只有当 model deviation 落到上下界之间,才可能会进行DFT计算,此时这个构型被称为candidate。dpgen会在这些candidate构型中随机选取不多于fp_task_max个构型,不少于fp_task_min个构型进行DFT计算。
dpgen在做第一轮MD模拟之前,需要一组初始数据,以训练DP模型。这组初始数据由init_data_sys这个参数给出。
dpgen的计算资源机制非常灵活和强大,比如我们可以在GPU集群A上进行DeePMD-kit训练,在GPU集群B上进行MD模拟,在CPU集群C上进行VASP计算。这些都可以通过machine.json文件配置。更详细的配置方法大家可以查寻官网。这里就不做过多介绍了。
end
DP视角
强大的DP-gen不仅能给你更准确的模型,还能让你同时处理多个体系,真香!