目录

ParAMS:训练机器学习势

本教程仅适用于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保存作业,然后运行作业。

查看M3GNet训练结果

右下角窗口选择Graph栏: 可以看到损失函数和统计数据随训练过程的变化情况。最后一个图默认是显示Best Training,即训练出来的M3GNet相对于训练集的符合情况,可以改为Best Validation,即相对于验证集的负荷情况:

使用重新训练的模型进行计算

右下角创窗口选择Results栏,下拉菜单中选择Validation best: engine 或 Training best: engine,即可看到训练好的M3Gnet所在的位置:

可以把这个文件夹复制到其他地方存起来,以便后面多次用到。

将训练好的M3Gnet导入AMSinput方法一

ParAMS → File → Open Optimized Engine in AMSinput → Best validation,这将打开一个新的 AMSinput 窗口,其中选择了 MLpotential 模块。可能会弹出警告,要求您仔细检查输入,其中Model显示为Custom:

点击Model右侧的>按钮:

将训练好的M3Gnet导入AMSinput方法二

将前面ParAMS窗口右下角Resuls栏里面Engine MLPotential到EndEngine直接所有内容,到AMSinput → ML Potential模块Ctrl v粘贴,同样会得到和方法一的结果。