目录

ParAMS高阶、重要教程:单点能比对、训练的并行化(多Optimizer同时优化)、重启、敏感度详解

本文原厂参考资料:https://www.scm.com/doc/params/examples/advanced_index.html

一、单点能比对

这个功能的目的:导入一些单点训练集,他们有对应的能量信息,这些能量例如来自DFT,我们可以将这些单点训练集使用其他引擎进行计算,例如ReaxFF的某个力场或我们自己训练的某个力场,DFTB的某个方法,或者机器学习势等。更换计算引擎重新计算的能量与原先DFT的能量,ParAMS中能够进行比对。

使用方法

例如我们有一个势能面扫描的作业导入:ParAMS → Jobs → Add Jobs → 选择作业的*.results/ams.rkf文件 → 以单点的方式导入势能面扫描的各个点:

这样“Al”l列表里面,除了Engine外,只有Energy和Job两种。 然后去掉训练设置:菜单栏Parameters → No parameters。点击Engine栏双击ParAMS这个引擎,弹窗中可以将其修改为我们需要的引擎,例如DFTB、ReaxFF,同时将弹窗的Engine ID改为我们自己方便识别的名字,例如DFTB、ReaxFF-Water-2017。

点击Edit in AMSinput,弹出AMSinput窗口即可修改计算方法。例如,对DFT而言就是泛函、基组、冻芯、积分精度、相对论等,对DFTB就是Model和Parameter Directory,对于ReaxFF就是选择以下力场,机器学习势、其他力场类似选择以下势、力场的名字即可。

引擎设置完毕后,Ctrl S即提示Pass to ParAMS保存引擎的设定。这里我们可以选择DFTB的默认Model:GFN1-xTB。

回到Jobs栏,按住Shift选中所有Job,然后双击这些Job的Details区域,就弹出来这些Job的设置。将ParAMS Engine ID改为我们刚才创建的引擎例如DFTB。

左下角的作业类型改为Single Point:

保存作业,然后运行作业即可。

结果显示

运行完毕,右下角出现点线图: 每个点的坐标,前一个数字就是参考集也就是这里DFT训练集中的能量,例如红圈中的点,就是DFTB计算第二个条目得到的,第一个数字是DFT的结果,第二个数字是DFTB的结果。如果所有点都在直线上,则二者完全一致。

二、训练的并行化(多Optimizer同时优化)

这个功能的打开,如下图所示:

Number of parallel optimizers,即Optimizer的个数,Max of optimizerrs converged,是指多少个Optimizer达到收敛,作业就停止,例如1,这里设置的是3个Optimizer都收敛才停止。点击Optimizer后面的>按钮,用户也可以尝试其他Optimizer的效果。

与多Optimizer同时优化相结合,Starting points generator可以选择Random,这样三个Optimizer从不同的参数起点开始优化,这样更容易从全局找到损失函数最小的参数点。

用户还可以对多个Optimizer的情况设置终止条件,也就是设置Stoper:点击Optimizer stoppers右侧的>按钮添加终止条件(条件如何设置,参考手册Stoppers and Exit Conditions),例如可以设置:

Options → Optimizer Stoppers → 点击+添加Stopper → Type:Current Function Value Unmoving,Number of function calls:10,Tolerance:0.05

然后点击+添加第二个Stopper → Type:Max Interoptimizer Distance,Max Relative Distance:0.01

Combine stoppers 输入 1 | 2,表示2个条件任意一个达到,就会终止作业。

保存作业并运行。

结果

可以看到损失函数的起点是不一样的:

损失函数等等的Data from,默认显示所有Optimizer的数据,也可以选择Show only selected optimizer,只显示指定的Optimizer的数据。

如果Optimizer比较多,甚至启动的时间也会不一致:

作业结束后,不同的曲线的终点有不同的标记:

例如:

三、敏感度

敏感度是使用 Hilbert-Schmidt Independence Criteria (HSIC) 准则来计算的,这是一种强大且流行的依赖性测量方法:

敏感度值有两个属性使得它们非常容易理解:

设置方式,参考:https://v.fermitech.com.cn/wiki/doku.php?id=adf:01basicprocess末尾。

结果

饼图显示了不同组的敏感度分配,这里只分析了H.O Bond Block,因此权重被全占了。

这个窗口切换到Parameters列表窗口,可以点击如下图所示最后一列Sensitive,将敏感度从高到低排序,然后可以方便地勾选高敏感度的参数。

经验

四、重启

如何留下重启点

优化作业要能重启,前提就是留下了checkpoint文件(以 .tar.gz 结尾的文件),后面就能读取checkpoint文件重新运行。如何留下checkpoint呢?

Optimization窗口 → Details → Checkpoints。这里可以设置留下checkpoints的条件。例如勾选Checkpoint at end,则完成后会留下一个checkpoint。

如何重启

Optimization → Main → Resume checkpoint选择对应的.tar.gz文件,另存运行即可。

重启作业时,可以修改这些内容,有时候非常有帮助: