0

我正在构建一个应该相当频繁地执行和训练的管道。我正在关注这个:https ://docs.microsoft.com/en-us/azure/machine-learning/service/how-to-create-your-first-pipeline

无论如何,我有一个流分析作业将遥测数据转储到 blob 存储上的 .json 文件中(很快将成为 adls gen2)。无论如何,我想找到所有 .json 文件并使用所有这些文件进行训练。我也可以只使用新的 .json 文件(老实说,这很有趣)。

目前我只是将商店安装到数据湖并可用;它只是迭代数据文件的挂载并加载它们。

  1. 我怎样才能使用数据引用呢?
  2. 数据引用对我有什么安装时间戳数据没有的作用?一个。从审计的角度来看,我有版本控制、执行时间和带有时间戳的只读数据。虽然,对此进行重播需要额外的编码,但是是可行的。
4

2 回答 2

3

如前所述,该步骤的输入可以是对 blob 文件夹的 DataReference。

您可以使用默认商店或将您自己的商店添加到工作区。然后将其添加为输入。然后,当您在训练代码中获得该文件夹的句柄时,只需像往常一样遍历该文件夹即可。我不会为每个文件动态添加步骤,我只会一步一步从您的存储中读取所有文件。

ds = ws.get_default_datastore()
blob_input_data = DataReference(
    datastore=ds,
    data_reference_name="data1",
    path_on_datastore="folder1/")

step1 = PythonScriptStep(name="1step",
                         script_name="train.py", 
                         compute_target=compute, 
                         source_directory='./folder1/',
                         arguments=['--data-folder',  blob_input_data],
                         runconfig=run_config,
                         inputs=[blob_input_data],
                         allow_reuse=False)

然后在您的 train.py 中,您访问路径为

parser = argparse.ArgumentParser()
parser.add_argument('--data-folder', type=str,  dest='data_folder', help='data folder')
args = parser.parse_args()
print('Data folder is at:', args.data_folder)

关于好处,这取决于您的安装方式。例如,如果您在代码中动态挂载,则要挂载的凭据需要在您的代码中,而 DataReference 允许您注册一次凭据,我们可以使用 KeyVault 在运行时获取它们。或者,如果您在机器上进行静态挂载,则需要一直在该机器上运行,而 DataReference 可以从任何 AMLCompute 动态获取凭据,并在作业结束后立即拆除该挂载。

最后,如果你想定期训练,那么安排它定期运行很容易。例如

pub_pipeline = pipeline_run1.publish_pipeline(name="Sample 1",description="Some desc", version="1", continue_on_step_failure=True)

recurrence = ScheduleRecurrence(frequency="Hour", interval=1) 

schedule = Schedule.create(workspace=ws, name="Schedule for sample",
                           pipeline_id=pub_pipeline.id, 
                           experiment_name='Schedule_Run_8',
                           recurrence=recurrence,
                           wait_for_provisioning=True,
                           description="Scheduled Run")
于 2019-09-12T22:16:46.900 回答
1

您可以将指向文件夹的指针作为管道的输入参数传递,然后您的步骤可以挂载文件夹以迭代 json 文件。

于 2019-08-26T21:23:08.780 回答