Azure ML SDK DataReference - 文件模式 - 许多文件

Azure ML SDK DataReference - File Pattern - MANY files

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

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

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

  1. 我该如何使用数据引用来代替它?
  2. 数据引用对我有哪些安装时间戳数据没有的作用? 一种。从审计的角度来看,我有版本控制、执行时间和带时间戳的只读数据。虽然,对此进行重播需要额外的编码,但是是可行的。

您可以将指向文件夹的指针作为管道的输入参数传递,然后您的步骤可以装载该文件夹以遍历 json 个文件。

如前所述,该步骤的输入可以是对 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")