2

尝试运行 ScriptRunConfig 时,使用:

src = ScriptRunConfig(source_directory=project_folder, 
                      script='train.py', 
                      arguments=['--input-data-dir', ds.as_mount(),
                                 '--reg', '0.99'],
                      run_config=run_config) 
run = experiment.submit(config=src)

当我提交作业时,它不起作用并中断:

... lots of things... and then
TypeError: Object of type 'DataReference' is not JSON serializable

但是,如果我使用 Estimator 运行它,它就可以工作。不同之处之一是ScriptRunConfig我们使用参数列表,而另一个是字典。

感谢您的任何指点!

4

2 回答 2

4

能够使用DataReferenceinScriptRunConfig比只做ds.as_mount(). 您需要将其转换为字符串,arguments然后使用created from更新RunConfiguration'sdata_references部分。请在此处查看有关如何执行此操作的示例笔记本。DataReferenceConfigurationds

如果您只是从输入位置读取而不对其进行任何写入,请查看Dataset. 它使您无需做任何额外的事情就可以准确地做您正在做的事情。这是一个示例笔记本,它显示了这一点。

以下是笔记本的简短版本

from azureml.core import Dataset

# more imports and code

ds = Datastore(workspace, 'mydatastore')
dataset = Dataset.File.from_files(path=(ds, 'path/to/input-data/within-datastore'))

src = ScriptRunConfig(source_directory=project_folder, 
                      script='train.py', 
                      arguments=['--input-data-dir', dataset.as_named_input('input').as_mount(),
                                 '--reg', '0.99'],
                      run_config=run_config) 
run = experiment.submit(config=src)
于 2019-09-20T02:14:46.667 回答
1

你可以在官方文档中看到这个链接how-to-migrate-from-estimators-to-scriptrunco​​nfig

ScriptRunConfig中使用DataReference的核心代码 是

# if you want to pass a DataReference object, such as the below:
datastore = ws.get_default_datastore()
data_ref = datastore.path('./foo').as_mount()

src = ScriptRunConfig(source_directory='.',
                      script='train.py',
                      arguments=['--data-folder', str(data_ref)], # cast the DataReference object to str
                      compute_target=compute_target,
                      environment=pytorch_env)
src.run_config.data_references = {data_ref.data_reference_name: data_ref.to_config()} # set a dict of the DataReference(s) you want to the `data_references` attribute of the ScriptRunConfig's underlying RunConfiguration object.
于 2021-01-14T16:44:55.177 回答