Machine learning Azure机器学习管道的最佳实践
我开始使用Azure机器学习服务。它有一个叫做管道的特性,我目前正在尝试使用它。然而,从文档和示例中有很多东西是完全不清楚的,我正在努力完全理解这个概念Machine learning Azure机器学习管道的最佳实践,machine-learning,pipeline,azure-machine-learning-service,Machine Learning,Pipeline,Azure Machine Learning Service,我开始使用Azure机器学习服务。它有一个叫做管道的特性,我目前正在尝试使用它。然而,从文档和示例中有很多东西是完全不清楚的,我正在努力完全理解这个概念 当我看“批量评分”示例时,它是作为管道步骤实现的。这就提出了一个问题:这是否意味着“预测部分”与“培训部分”是同一管道的一部分,还是应该有两条单独的管道?对我来说,创建一个结合了这两个步骤的管道似乎很奇怪,因为您不希望每次更改训练部分时都运行预测部分(反之亦然) 哪些部分应作为管道步骤实施,哪些部分不应实施?数据存储和数据集的创建是否应该作为一
Azure ML管道最佳实践是紧急出现的,所以我可以给您一些建议,但如果其他人以不同的根深蒂固的观点回应,我会感到惊讶。Azure ML产品组也在以惊人的速度改进和扩展产品,因此我完全希望随着时间的推移,情况会发生变化(变得更好)。很好地解释了ML管道 3将模型传递到下游步骤 下一步如何获取模型 在开发过程中,我建议您不要注册模型,评分步骤通过
PipelineData
将模型作为pickle文件接收
在生产中,评分步骤应使用以前注册的模型
我们的团队使用一个PythonScriptStep
,它有一个脚本参数,允许从上游步骤传递模型或从注册表获取模型。下面的屏幕截图显示了使用名为best\u run\u data
的PipelineData
的批评分步骤,其中包含来自HyperDriveStep
的最佳模型(另存为model.pkl
)
我们的batch\u score\u step
的定义有一个布尔参数,--use\u model\u registry'
,它决定是使用最近训练的模型,还是使用模型注册表。我们使用一个函数,以脚本arg为轴心。以上各点
2控制平面与数据平面
哪些部分应作为管道步骤实施,哪些部分不应实施
您对数据所做的所有转换(挖掘、特征化、训练、评分)都应该在PipelineStep
中进行。其输入和输出应为管道数据
Azure ML构件应为:
-在管道控制平面中使用PipelineData
创建,以及
-注册的:
-临时的,与每次跑步相反,或
-当需要在管道之间传递工件时
通过这种方式,PipelineData
是直接连接管道步骤的粘合剂,而不是通过w/.register()
和.download()
PipelineData
最终只是临时目录,在运行创建和注册工件的步骤之前,也可以将其用作占位符
Dataset
是对PipelineData
的抽象,因为它们使传递到AutoMLStep
和HyperDriveStep
以及DataDrift
1管道封装
这是否意味着“预测部分”与“培训部分”是同一管道的一部分,还是应该有两条单独的管道
您的管道体系结构取决于:
- 一个训练管道,在该管道的末尾注册一个模型,然后在中使用,或
- 按照我们所做的去做,并且有一个管道可以配置为使用脚本参数来执行
allow_reuse
参数并设置为True
,这将在管道中缓存步骤输出,以防止不必要的重新运行
以模型训练步骤为例,考虑以下步骤:
- 训练脚本
- 输入数据
- 附加步骤参数
allow_reuse=True
,并且培训脚本、输入数据和其他步骤参数与上次管道运行时相同,则不会重新运行该步骤,它将使用上次管道运行时的缓存输出。但假设您的数据输入已更改,则该步骤将重新运行
总的来说,管道是非常模块化的,您可以按照自己认为合适的方式构建它们。您可以为培训和评分维护单独的管道,或者将所有内容捆绑在一个管道中,但要利用自动缓存 值得一提的Def
allow_resue
。游戏规则的改变是肯定的。当数据是静态的时,您的场景对我来说是有意义的,但当数据在增长时,您的场景就没有意义了。我的理由正在酝酿中