65.9K
CodeProject 正在变化。 阅读更多。
Home

如何在 Azure ML 中将 Azure ML 输入 Web 服务参数传递并消耗到 R 模块中

starIconstarIconstarIconstarIconstarIcon

5.00/5 (1投票)

2018 年 3 月 7 日

CPOL

4分钟阅读

viewsIcon

9735

本文旨在解释将输入 Web 服务参数传递给 Azure 机器学习中的“执行 R 脚本”模块的过程。

在 Azure ML 中执行 R 脚本模块

Azure 机器学习平台允许用户通过使用 R 代码脚本来扩展其实验的功能。这可以通过使用 Azure ML 的“执行 R 脚本”模块来实现。该模块有三个输入和两个输出。它可以接受三个输入,即两个(不同的)数据集和一个脚本包输入。输入数据集提供了 R 脚本处理所需的数据,而脚本包输入提供了 R 代码处理所需的 R 库。所需的 R 库作为 zip 文件上传到 Azure ML 平台,然后作为输入传递给模块。有关此内容的更多详细信息,请关注这篇博文

提供给 R 脚本作为输入的数据集在“执行 R 脚本”模块中被用作数据帧,并使用命令访问

  • dataset1 <- maml.mapInputPort(1)    # 用于访问第一个输入端口
  • dataset2 <- maml.mapInputPort(2)    # 用于访问第二个输入端口

执行 R 脚本模块的两个输出端口是:结果数据集和 R 设备。使用第一个输出端口,结果数据集可用于通过 maml.mapOutputPort() 命令将 R 脚本执行后的结果内容输出为矩形表。

模块的 R 设备输出包含 R 脚本执行的结果产生的消息和图形输出。

Azure ML Web 服务

Azure ML 实验被部署为 Web 服务,以便其他应用程序和程序可以利用它们进行预测。这些实验可以是模型或一些机器学习工作流程。这些实验被发布并部署为 RESTFUL Web 服务,以便可以在实时或批处理模式下由不同的平台和应用程序使用。

可以使用 Azure API 管理来管理 Azure ML Web 服务。有关 Azure API 管理的更多详细信息,请关注此链接

Azure ML Web 服务参数

每当 Azure ML 实验发布、部署并用作 Web 服务时,通常需要将数据传递到实验以及从实验接收数据。这由Web 服务参数促进。这些参数可以与 Azure ML 实验的一个或多个模块关联,并且当任何外部应用程序或程序访问此 Web 服务时,Web 服务的消费者需要为这些输入参数提供值,并使用输出参数收集作为输出提供的数据。参数可以配置为强制性或可选。

场景

现在,在理解了执行 R 脚本、Azure ML Web 服务及其参数之后,考虑一个场景,在该场景中需要将一些输入值作为数据从调用 Azure ML Web 服务(实验)的外部应用程序传递到实验的“执行 R 脚本”模块中。让我们想象一个用例,其中需要通过 Web 服务参数将一些值传递给驻留在“执行 R 脚本”模块中的 R 代码。这成为了一个问题,因为 Azure ML 平台不允许为 Web 服务配置用户定义的参数。解决这个问题的方法是什么?有两种方法可以解决这种情况;要么开发自定义 R 模块,要么遵循替代方法。在这里,我们将讨论替代方法。

为了将输入值作为 Web 服务参数传递给 R 脚本,请获取源数据集(包含要处理的数据),然后在 Azure ML 画布中添加一个“添加列”模块。将源数据集的输出连接到“添加列”模块的第一个输入。

下一步,准备一个包含单列(及其标题)的 .csv 文件。将此 .csv 文件作为数据集上传到 Azure ML 平台,然后将此数据集添加到当前的实验画布中。

现在,将此 csv 数据集和一个 Web 服务输入参数添加到添加列模块的第二个输入(两个实体在同一个输入端口上)。

通过这种方式,添加列模块将在源数据集中添加另一列,列名与 csv 文件中指定的一样,并且此列的值将填充在调用 Web 服务时作为输入数据传递的值。添加列模块的输入端口处的结果数据集将包含一个额外的列,该列的值将填充在进行 Web 服务调用时作为输入传递的数据值。此结果数据集可以馈送到“执行 R 脚本”模块中,并且 Web 服务输入参数值可以在 R 代码/脚本中被访问为

  • Dataset1 <- maml.mapInputPort(1)
  • wsinput <- Dataset1$<<包含 Web 服务输入参数值的列的名称 >>
© . All rights reserved.