用户工具

站点工具

本页面的其他翻译:
  • zh

adf:paramsm3gnet

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的能量和力都在其中,不允许将其分开。

机器学习基础设置

  • Max epochs:训练的最大 epoch 数。
  • Committee size:指定要训练多少个独立的 ML 模型。最终预测的能量/力使用所有 ML 模型的平均值。如果设置为大于 1 的数字将显著增加计算成本和内存需求,但可以更好地衡量预测值的不确定性。
  • Load model:加载先前训练的模型,以便继续训练。
  • Backend:使用哪种类型的机器学习模型,这里我们使用M3GNet,前提是已经安装了 M3GNet。
  • Learning rate:学习率。
  • Model:对于 M3GNet Backend,可以选择两种不同的模型:
    • Custom:这会从头开始训练一个新的神经网络。您可以决定这个神经网络的架构,例如每层的神经元数量和卷积块的数量。请注意,使用自定义,您通常需要大量的训练数据才能训练出一个好的模型。
    • UniversalPotential:从 M3GNet-UP-2022 通用势能开始训练。这通常会使训练速度更快。您可以选择要重新训练的层,但不能更改任何其他参数。

对于机器学习任务,不同训练集条目的权重可以在这两个地方设置:

  • 在右上角窗口训练集和验证集面板的“W”列
  • Options → Loss function

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粘贴,同样会得到和方法一的结果。

adf/paramsm3gnet.txt · 最后更改: 2024/06/29 09:54 由 liu.jun

© 2014-2022 费米科技(京ICP备14023855号