本教程仅适用于AMS2024.1以上版本,展示如何训练自己的 M3GNet 机器学习势。
先决条件:熟悉ParAMS训练ReaxFF力场
在本教程中,训练数据已经准备好。一般而言,在训练 M3GNet 等 ML 势时,只能训练单点能量和力。
SCM → ParAMS → File → Open打开示例:$AMSHOME/scripting/scm/params/examples/M3GNet/params.in,会加载一些液氩结构并设置一些 ML 训练设置,例如:
如果自行生成作业,确保ParAMS → Parameters 选择 No Parameters,至于机器学习势则在左下角窗口选择Machine Learning。
切换到Jobs面板:
在这里,可以看到所有作业都是“Single Point + Gradients”类型,这是唯一可以使用的Job类型。
注意:将训练集导入 ParAMS 时。确保Task (for new job)为SinglePoint。
切换到Training Set面板:
在这里,可以看到训练集的能量和力。
切换到Validation Set面板:
也是只有能量和力。对于机器学习势的训练,Validation Set中至少需要有一个条目。
注意:给定Job的能量和力必须属于同一数据集,例如Validation Set中uff_md_frame001的能量和力都在其中,不允许将其分开。
对于机器学习任务,不同训练集条目的权重可以在这两个地方设置:
W 列允许为不同的单个条目设置不同的权重。Options → Loss function面板,可以设置能量和力的相对权重。如果发现能量训练的精度不够,可以考虑在 Options→Loss function 面板上增大 Energy 系数。
此处为Force的 MAE 设定目标值,如果训练和验证的 MAE 都小于此阈值,则训练成功。这有助于:
File → Save as保存作业,然后运行作业。
右下角窗口选择Graph栏: 可以看到损失函数和统计数据随训练过程的变化情况。最后一个图默认是显示Best Training,即训练出来的M3GNet相对于训练集的符合情况,可以改为Best Validation,即相对于验证集的负荷情况:
右下角创窗口选择Results栏,下拉菜单中选择Validation best: engine 或 Training best: engine,即可看到训练好的M3Gnet所在的位置:
可以把这个文件夹复制到其他地方存起来,以便后面多次用到。
ParAMS → File → Open Optimized Engine in AMSinput → Best validation,这将打开一个新的 AMSinput 窗口,其中选择了 MLpotential 模块。可能会弹出警告,要求您仔细检查输入,其中Model显示为Custom:
点击Model右侧的>按钮:
将前面ParAMS窗口右下角Resuls栏里面Engine MLPotential到EndEngine直接所有内容,到AMSinput → ML Potential模块Ctrl v粘贴,同样会得到和方法一的结果。