本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在 Neptune ML 中通过模型训练产生的构件
模型训练结束后,Neptune ML 使用经训练的最佳模型参数来生成启动推理端点和提供模型预测所需的模型构件。这些构件由训练任务打包并存储在最佳 SageMaker 训练任务的 Amazon S3 输出位置。
以下各节描述了各种任务的模型构件中包含的内容,以及模型转换命令如何使用预先存在的训练模型生成构件,即使是在新的图形数据上也是如此。
为不同的任务生成的构件
训练过程生成的模型构件的内容取决于目标机器学习任务:
-
节点分类和回归 – 对于节点属性预测,构件包括模型参数、来自 GNN 编码器的节点嵌入、训练图形中节点的模型预测以及推理端点的一些配置文件。在节点分类和节点回归任务中,预先计算训练期间存在的节点的模型预测,以减少查询延迟。
-
边缘分类和回归 – 对于边缘属性预测,构件还包括模型参数和节点嵌入。模型解码器的参数对于推理尤其重要,因为我们通过将模型解码器应用于边缘的源顶点和目标顶点的嵌入,来计算边缘分类或边缘回归预测。
-
链接预测 - 对于链接预测,除了为边缘属性预测生成的构件外,DGL 图形还作为构件包含在内,因为链接预测需要训练图形才能执行预测。链接预测的目标是预测可能与源顶点组合以在图形中形成特定类型的边缘的目标顶点。为此,将源顶点的节点嵌入和边缘类型的学习表示形式与所有可能的目标顶点的节点嵌入相结合,以便为每个目标顶点生成边缘似然性分数。然后对分数进行排序,以对潜在的目标顶点进行排名并返回排名靠前的候选顶点。
对于每种任务类型,来自 DGL 的图形神经网络模型权重都保存在模型构件中。这允许 Neptune ML 在图形变化时计算新的模型输出(归纳推理),此外,还可以使用预先计算的预测和嵌入(转导推理)来减少延迟。
生成新的模型构件
在 Neptune ML 中训练模型后生成的模型构件与训练过程直接相关。这意味着预先计算的嵌入和预测仅对原始训练图形中的实体存在。尽管 Neptune ML 端点的归纳推理模式可以实时计算新实体的预测,但您可能需要在不查询端点的情况下对新实体生成批量预测。
为了获得已添加到图形中的新实体的批量模型预测,需要为新的图形数据重新计算新的模型构件。这是使用 modeltransform
命令完成的。当您只想在不设置端点的情况下进行批量预测,或者您想生成所有预测以便将它们写回到图形时,您可以使用 modeltransform
命令。
由于模型训练在训练过程结束时隐式执行模型转换,因此,训练任务总是根据训练图形数据重新计算模型构件。但是,modeltransform
命令还可以在未用于训练模型的图形数据上计算模型构件。为此,必须使用与原始图形数据相同的特征编码来处理新的图形数据,并且必须遵循相同的图形架构。
为此,您可以先创建一个新的数据处理任务,该任务是在原始训练图形数据上运行的数据处理任务的克隆,然后对新的图形数据运行该任务(请参阅处理 Neptune ML 的更新图形数据)。然后,使用新的 dataProcessingJobId
和旧的 modelTrainingJobId
调用 modeltransform
命令,以针对更新后的图形数据重新计算模型构件。
对于节点属性预测,节点嵌入和预测是在新的图形数据上重新计算的,甚至对于原始训练图形中存在的节点也是如此。
对于边缘属性预测和链接预测,还会重新计算节点嵌入,并类似地覆盖任何现有的节点嵌入。为了重新计算节点嵌入,Neptune ML 将从先前训练的模型中学习到的 GNN 编码器应用于具有新特征的新图形数据的节点。
对于没有特征的节点,可以重用从原始模型训练中学习到的初始表示形式。对于没有特征且原始训练图形中不存在的新节点,Neptune ML 将其表示形式初始化为原始训练图形中存在的该节点类型的已学习初始节点表示形式的平均值。如果您有许多没有特征的新节点,这可能会导致模型预测的性能有所下降,因为它们都将初始化为该节点类型的平均初始嵌入。
如果您的模型在 concat-node-embed
设置为 true 的情况下进行训练,则初始节点表示形式是通过将节点特征与可学习的初始表示形式串联起来创建的。因此,对于更新后的图形,新节点的初始节点表示形式还使用平均初始节点嵌入,并与新的节点特征串联。
此外,目前不支持删除节点。如果在更新后的图形中移除了节点,则必须根据更新后的图形数据重新训练模型。
重新计算模型构件在新的图形上重用学习到的模型参数,并且只有在新图形与旧图形非常相似时才应这样做。如果您的新图形不够相似,则需要重新训练模型,以便在新图形数据上获得相似的模型性能。什么构成足够相似取决于图形数据的结构,但根据经验,如果您的新数据与原始训练图形数据相差超过 10-20%,则应重新训练模型。
对于所有节点都有特征的图形,阈值的高限(相差 20%)适用,但是对于许多节点没有特征而添加到图形中的新节点没有属性的图形,则阈值的低限(相差 10%)甚至可能过高。
有关模型转换任务的更多信息,请参阅modeltransform 命令。