【发布时间】:2019-08-28 10:45:35
【问题描述】:
我正在尝试使用我的工作区ws 中的ScriptRunConfig 对象在 Azure VM 上本地在 Azure 机器学习服务中提交实验,如
from azureml.core import ScriptRunConfig
from azureml.core.runconfig import RunConfiguration
from azureml.core import Experiment
experiment = Experiment(ws, name='test')
run_local = RunConfiguration()
script_params = {
'--data-folder': './data',
'--training-data': 'train.csv'
}
src = ScriptRunConfig(source_directory = './source_dir',
script = 'train.py',
run_config = run_local,
arguments = script_params)
run = experiment.submit(src)
但是,这失败了
实验执行异常:{ “错误详情”: { “相关性”: { “操作”:“bb12f5b8bd78084b9b34f088a1d77224”, “请求”:“iGFP+sjC34Q=” }, “错误”: { “代码”:“用户错误”, "message": "无法反序列化运行定义"
更糟糕的是,如果我将数据文件夹设置为使用数据存储(我可能需要这样做)
script_params = {
'--data-folder': ds.path('mydatastoredir').as_mount(),
'--training-data': 'train.csv'
}
错误是
UserErrorException:具有非本机 python 类型值的字典是 在运行配置中不受支持。
{'--数据文件夹': $AZUREML_DATAREFERENCE_d93269a580ec4ecf97be428cd2fe79, '--training-data': 'train.csv'}
我不太明白我应该如何将我的 script_params 参数传递给我的 train.py(很遗憾,the documentation of ScriptRunConfig 没有包含很多细节)。
有人知道在这两种情况下如何正确创建src 吗?
【问题讨论】:
-
一种解决方法是在我的
train.py中为我的 ArgumentParser 添加默认值,但这并不是真正的解决方案... -
你能用
Estimator代替吗?问是因为这种方法适用于Estimators,但不适用于ScriptRunConfig(我不知道为什么他们不接受两者的相同类型的参数)。 -
嘿!谢谢你。所以我第一次尝试确实使用
Estimator,但我有一些深奥的依赖,我必须通过pip install git+https://github.com/...处理,因为我无法在conda_packagesAFAIK 中添加包。因此,按照指南,我假设“使用 RunConfiguration 对象和 ScriptRunConfig 对象 [...] 为您提供了很大的灵活性和最大程度的控制”,并在我的 VM 上本地安装了该依赖项。由于这似乎不是一条可行的路线,我可能会选择Estimator和安装了我的依赖项的自定义 docker 映像,但我仍然必须尝试...
标签: python azure azure-machine-learning-service