Azure 机器学习管道的最佳实践

Leo*_*ens 3 pipeline machine-learning azure-machine-learning-service

我开始使用 Azure 机器学习服务。它有一个名为 Pipeline 的功能,我目前正在尝试使用它。然而,文档和示例中有些事情完全不清楚,我正在努力完全掌握这个概念。

  1. 当我查看“批量评分”示例时,它是作为管道步骤实现的。这就提出了一个问题:这是否意味着“预测部分”与“训练部分”属于同一管道的一部分,或者是否应该有两个单独的管道?制作 1 个结合这两个步骤的管道对我来说似乎很奇怪,因为您不想每次对训练部分进行更改时都运行预测部分(反之亦然)。
  2. 哪些部分应该作为管道步骤实现,哪些部分不应该实现?数据存储和数据集的创建是否应该作为一个步骤来实施?注册模型是否应该作为一个步骤来实施?
  3. 任何地方都没有显示如何处理模型注册表。我在训练步骤中创建模型,然后将其作为 pickle 文件写入输出文件夹。然后呢?下一步如何获取模型?我应该将它作为 PipelineData 对象传递吗?train.py 本身应该负责注册训练好的模型吗?

Tre*_*Bye 5

安德斯有一个很好的答案,但我会稍微扩展一下第一点。在您看到的批量评分示例中,假设已经存在一个经过训练的模型,该模型可能来自另一个管道,或者就笔记本而言,它是根本不在管道中构建的预训练模型。

然而,在同一管道中运行训练和预测是一个有效的用例。使用allow_reuse参数并设置为True,这将在管道中缓存步骤输出以防止不必要的重新运行。

以模型训练步骤为例,并考虑该步骤的以下输入:

  • 训练脚本
  • 输入数据
  • 附加步骤参数

如果您设置allow_reuse=True,并且您的训练脚本、输入数据和其他步骤参数与上次管道运行时相同,则它将不会重新运行该步骤,它将使用上次管道运行时的缓存输出。但假设您的数据输入发生了变化,那么该步骤将重新运行。

一般来说,管道是相当模块化的,您可以按照您认为合适的方式构建它们。您可以维护单独的训练和评分管道,或者将所有内容捆绑在一个管道中,但利用自动缓存。