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