首页 >> 仿真软件说明 >>ABACUS >>朱雪刚版 >> 4.1.1.1.2 DP训练时需要的参数
详细内容

4.1.1.1.2 DP训练时需要的参数

  1. DP训练时需要的参数

    "numb_models": 4,
    "default_training_param": {
        "model": {
            "type_map": ["Be","Cu"],
            "descriptor": {
                "_comment": "se_e2_a",
                "type": "se_e2_a",
                "sel": [40, 80],
                "rcut_smth": 0.5,
                "rcut": 6.0,
                "neuron": [25, 50, 100],
                "resnet_dt": true,
                "seed": 1
            },
            "fitting_net": {
                "neuron": [240, 240, 240],
                "resnet_dt": false,
                "seed": 1
            }
        },
        "learning_rate": {
            "type": "exp",
            "start_lr": 0.001,
            "stop_lr":  3.5e-8,
            "decay_steps": 2000
        },
        "loss": {
            "start_pref_e": 0.02,
            "limit_pref_e": 2,
            "start_pref_f": 1000,
            "limit_pref_f": 1,
            "start_pref_v": 0.0,
            "limit_pref_v": 0.0
        },
        "training": {
            "numb_steps": 400000,
            "disp_file": "lcurve.out",
            "disp_freq": 100,
            "numb_test": 10,
            "save_freq": 1000,
            "save_ckpt": "model.ckpt",
            "disp_training": true,
            "time_training": true,
            "profiling": false,
            "profiling_file": "timeline.json",
            "_comment": "that's all"
        }
    },

"numb_models":4,#训练的DP势函数个数为4个,这里会用不同的随机数进行4个势函数的训练,由于利用了随机数,因此四个势函数会有偏差,如果在后续模拟过程中四个势函数模拟的体系能量和力基本相同,则会认为这四个势函数都可用。如果偏差较大则说明势函数不准,需要把不准的构型做DFT计算并加入训练集,然后把所有训练集整合起来重新训练DP势函数,之后再探索训练进行迭代;

"default_training_param":{ }#表示后续是DeePMD训练需要的参数。大括号表示这个参数管理的范围,这里管理了48行


"model": { },#势函数的形式

"type_map": #元素种类(顺序要前后保持一致,和init也要一致因为LAMMPS是用0 1 2 等来表示元素构型,所以前边的Be对应的就是0);

"descriptor": { }#DP势函数描述符相关设置

"type": "se_e2_a",#使用二体相互作用描述符,即做计算时会计算构型能所有两个原子之间的相互作用。这里我尝试过三体相互作用,计算时内存明显升高。如果想做对应修改目前需要看手册介绍。

"sel": [40, 80],#(不太了解后补),但是这里改成“auto”之后模型很快收敛,准确率很快提升上去了"rcut_smth": 0.5,#截断半径以外的势函数受力平滑至零的计算;刚开始我以为这里会把势函数调整到0,但是经过单原子测试,单个原子的能量不是0,即这个截断半径跟LAMMPS内势函数的截断半径意义不同,这里可能是对力的处理(我不确定,猜的)

"rcut": 6.0,#截断半径,在距离中心原子这个范围以内的其他原子都统计到受力中。 "neuron": [25, 50, 100],#神经网络层数(我不太了解,后补)"resnet_dt": true,#(我不太了解,后补)"seed": 1#(我不太了解,后补)


"fitting_net": { }#拟合网络信息

"neuron": [240, 240, 240],#(我不太了解,后补)"resnet_dt": false,#(我不太了解,后补)"seed": 1#(我不太了解,后补)


"learning_rate": { },#学习率(如何调整,我不太了解,后补)"type": "exp",#学习率以指数形式来体现 "start_lr": 0.001,#初始学习率(具体含义不理解,后补)"stop_lr":  3.5e-8,#最终学习率 "decay_steps": 2000#学习率从开始到末尾的调整是,中间的调整步数(具体修改不了解,后补)


"loss": { },#损失函数相关设定 "start_pref_e": 0.02,#刚开始训练时能量所占的比重,此处表示刚开始几乎不参考能量信息。 "limit_pref_e": 2,#结束训练时能量所占比重,此处比下边力的比重大,说明最终会偏向于能量拟合。 "start_pref_f": 1000,#起始训练时力所占比重,此处1000表示起始时基本只考虑力。 "limit_pref_f": 1,#结束训练时力做所占比重,这里为1,基本跟能量差不多的占比 "start_pref_v": 0.0,#刚开始训练时维力信息所占比重,在前边的迭代中这里设置为0,等势函数训练快差不多的时候再加入维力力的信息,后续加入之后对势函数质量会有一定的提升,前期不加入主要是为了降低出错概率。 "limit_pref_v": 0.0#结束训练时维力信息所占比重


"training": { } #训练设置 "numb_steps": 400000,#表示训练40万步,训练步数时越长越好,但越长越耗时,训练是否可行一般是参考loss函数(后续提供脚本);最终做计算前需要做一个长训例如四百万或四千万步的训练。该步数在前期训练时多少合适需要测试,即做几次迭代,并对势函数相关信息进行分析,如果相关信息不能满足最基本的需求则增大步数测试。

我服务器是e5 2680V2 cpu +3090显卡,训练一个DP势函数大概5个小时。另外一台机器是i7 9700kcpu + 2080Ti显卡,训练势函数会比3090快近一倍,可能训练过程cpu也占部分资源

"disp_file": "lcurve.out",#损失函数,或训练效率 相关信息输出文件名称。 "disp_freq": 100,#什么频率,不了解,后补 "numb_test": 10,#不了解,后补 "save_freq": 1000,#保存频率,具体作用不了解,后补 "save_ckpt": "model.ckpt",;#保存过程文件,以备后续计算时重启使用。训练时会保存四个最新的文件,并删除以前的,进而节省硬盘空间。 "disp_training": true,#不了解,后补 "time_training": true,#不了解,后补 "profiling": false,#不了解,后补 "profiling_file": "timeline.json",#不了解,后补 "_comment": "that's all"#做评论,内容自己来写以便有个很好的提示。


作者:朱雪刚 邮箱:xuegangzhu@qq.com; 工作单位:石家庄学院 理学院/北京科学智能研究院(AISI)访问学者2023.07-2024.09,访问导师北京大学陈默涵; 徐张满仓 邮箱: xuzhangmancang@dp.tech

截止2024.07.21录制视频教程已上传至Bohrium的课程《DeePMD应用案例讲解:铜原子掺杂铍晶体的机器学习势函数拟合过程演示》网址: https://bohrium.dp.tech/courses/1075495070?tab=courses 后续会在Bohrium平台更新

注意:后续的更新,大部分会在Bohrium课程平台进行,请看教程入门的同学加入课程进行学习;且录制的视频课程会把一些个人观点给加入,从个人观点来看比文字教程的内容更多

写教程内容讨论QQ群:143276924 DPGEN+ABACUS教程准备;

ABACUS软件的QQ群:759914681,群内有专职开发人员,目前ABACUS提问问题以github的issue为主,群内可作为辅助提问。

欢迎大家推广本教程,让更多的dp入门学习者有个参考,目前2024.09.16我联系的微信公众号推广是 lammps加油站的小马老师(我也报名了小马老师的一对一辅导)。当然也看到lammps爱好者在转发推广。感谢大家公众号的推广。


技术支持: CLOUD | 管理登录
seo seo