有没有办法在同一个 Azure 机器学习管道中使用经典组件和自定义组件?

问题描述 投票:0回答:1

我正在尝试将管道从 Microsoft 机器学习工作室经典迁移到 Azure 机器学习。我的管道实际上在 Machine Learning Studio Classic 上运行,由以下经典和自定义组件组成。输入数据有 6 个,是使用导入数据组件从 Blob 存储帐户收集的。它们主要是 csv 文件,我使用一个自定义组件(R 脚本)来清理输入数据。这是因为“执行 R 脚本”只允许 2 个输入,但我需要 6 个输入,因为我有 6 个输入文件。之后,使用称为导出数据的组件将 csv 文件写入同一 Blob 存储帐户,但写入另一个文件夹中。我想在 Azure 机器学习中构建相同的管道,我可以在同一管道中使用自定义组件和默认组件吗?

如果我尝试使用经典组件创建管道,显然我无法使用我的自定义组件(又名 R 脚本),并且当我尝试创建自定义管道时,我无法使用经典组件,并且显然无法导出我的自定义组件清理输入数据后创建自定义管道时的数据。

r azure machine-learning azure-machine-learning-service
1个回答
0
投票

有多种方法可以处理这种情况:

  1. 从这六个文件在 Azure ML Studio 中创建数据资产。

enter image description here

在这里,您可以从 6 个文件创建单个数据资产,并在如下所示的组件中使用它。

enter image description here

  1. 如果您需要使用不同的逻辑单独清理这些文件,请创建 6 个单独的数据资产并在 R 脚本中访问它们,如下所示。然后,清理它们并将其注册为 Azure ML 中的数据资产。
azureml_main <- function(dataframe1, dataframe2){
  print("R script run.")
  run = get_current_run()
  ws = run$experiment$workspace
  dataset1 = azureml$core$dataset$Dataset$get_by_name(ws, "output_dataset_name")
  dataset2 = azureml$core$dataset$Dataset$get_by_name(ws, "sql")
  #load all your data asset
  #clean your data
  dataframe1 <- dataset$to_pandas_dataframe()
  # Return datasets as a Named List
  return(list(dataset1=dataframe1, dataset2=dataframe2))
}

enter image description here

  1. 您还可以使用 3 参数或端口 Script Bundle,在其中使用包含所有文件的
    .zip
    文件创建数据资产。这些文件在运行时在
    ./Script Bundle
    下提取并可用。使用下面的代码来读取您的文件。
azureml_main <- function(dataframe1, dataframe2){
  print("R script run.")
  mydataset<-read.csv("./Script Bundle/mydatafile.csv",encoding="UTF-8");  
  # clean and return
  return(list(dataset1=mydataset, dataset2=dataframe2))
}

要使用

zip
文件创建数据资产,请按照 这些步骤

请参阅此文档,了解有关 R 组件及其用法的更多信息。

您还可以参考此 github 文档,了解如何将 csv 文件加载为表格数据资产、清理它们并将其注册为数据资产,而不需要导出数据组件。

© www.soinside.com 2019 - 2024. All rights reserved.