Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Machine learning Azure机器学习管道的最佳实践_Machine Learning_Pipeline_Azure Machine Learning Service - Fatal编程技术网

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

Machine learning Azure机器学习管道的最佳实践,machine-learning,pipeline,azure-machine-learning-service,Machine Learning,Pipeline,Azure Machine Learning Service,我开始使用Azure机器学习服务。它有一个叫做管道的特性,我目前正在尝试使用它。然而,从文档和示例中有很多东西是完全不清楚的,我正在努力完全理解这个概念 当我看“批量评分”示例时,它是作为管道步骤实现的。这就提出了一个问题:这是否意味着“预测部分”与“培训部分”是同一管道的一部分,还是应该有两条单独的管道?对我来说,创建一个结合了这两个步骤的管道似乎很奇怪,因为您不希望每次更改训练部分时都运行预测部分(反之亦然) 哪些部分应作为管道步骤实施,哪些部分不应实施?数据存储和数据集的创建是否应该作为一

我开始使用Azure机器学习服务。它有一个叫做管道的特性,我目前正在尝试使用它。然而,从文档和示例中有很多东西是完全不清楚的,我正在努力完全理解这个概念

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

  • 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
    。游戏规则的改变是肯定的。当数据是静态的时,您的场景对我来说是有意义的,但当数据在增长时,您的场景就没有意义了。我的理由正在酝酿中