从数据工厂管道中的 ML Studio 管道中获取结果

问题描述

我们目前有一个数据工厂管道,可以成功调用我们的 ML Studio 管道之一。 ML Studio Pipeline 完成后,我们希望 Azure Data Factory 获取 ML Studio Pipeline 的结果并将结果存储在 sql Server 中。

我们发现 PipelineData 类根据子运行 id 将结果存储在 blob 中的文件夹中,这使得数据工厂难以获取结果。然后我们发现了 OutputFileDatasetConfig,它允许 ML Studio 将结果保存到数据工厂的静态位置。这对数据工厂非常有用,除了 OutputFileDatasetConfig 并不总是有效 :( 因为它是实验类。我们花了一段时间才弄明白这一点,我们甚至为此创建了一个 stackoverflow 问题,我们解决了这个问题,可以在这里找到:{ {3}}

我们回到使用 PipelineData 类,该类根据子运行 ID 将结果存储在 blob 中的文件夹中,但我们无法弄清楚如何根据 ML 的子运行 ID 获取数据工厂以查找 blob刚刚运行的 Studio Pipeline。

所以我的问题是,您如何让数据工厂获取从数据工厂管道触发的 ML Studio 管道的结果???

这是我们正在尝试构建的数据工厂管道的简单视觉效果

Step 1: Store Data in azure file store -->
Step 2: Run ML Studio scoring Pipeline -->
Step 3: copy Results to sql Server

第 3 步是我们无法弄清楚的步骤。任何帮助将不胜感激。谢谢,祝你编码愉快!

解决方法

我想我已经回答了我自己的问题。原来我的问题与几个月前提出的另一个问题类似,他们的最佳解决方案对我有用。

How to write Azure machine learning batch scoring results to data lake?

我可以按如下方式使用 DataTransferStep。

transfer_ml_to_blob = DataTransferStep(
    name="transfer_ml_to_blob",source_data_reference=output_dir,destination_data_reference=blob_data_ref,compute_target=data_factory_compute,source_reference_type='directory',destination_reference_type='directory'
) 

其他一些有用的资源:

https://github.com/Azure/MachineLearningNotebooks/blob/master/how-to-use-azureml/machine-learning-pipelines/intro-to-pipelines/aml-pipelines-data-transfer.ipynb

https://social.msdn.microsoft.com/Forums/en-US/026b9b1d-6961-4217-b179-0c1973ac1fa2/data-transfer-job-failed-with-unexpected-error-systeminvalidoperationexception-blob-contains-both?forum=AzureMachineLearningService#7b46c5eb-b7f1-4c2f-a6d0-553672a83e7a

Azure ML PipelineData with DataTransferStep results in 0 bytes file