我正在尝试使用工作区ws
中的ScriptRunConfig
对象在Azure VM上在本地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)
但是,此操作失败
ExperimentExecutionException:{ “错误详情”: { “相关性”:{ “ operation”:“ bb12f5b8bd78084b9b34f088a1d77224”, “ request”:“ iGfp + sjC34Q =” }, “错误”:{ “ code”:“ UserError”, “ message”:“无法反序列化运行定义”
更糟糕的是,如果我将数据文件夹设置为使用数据存储(可能需要)
script_params = {
'--data-folder': ds.path('mydatastoredir').as_mount(),
'--training-data': 'train.csv'
}
错误是
UserErrorException:具有非本地python类型值的字典是 runconfigs不支持。
{'-数据文件夹': $ AZUREML_DATAREFERENCE_d93269a580ec4ecf97be428cd2fe79, '--training-data':'train.csv'}
我不太了解如何将script_params
参数传递给train.py
(不幸的是,the documentation of ScriptRunConfig
并未包含很多细节)。
在这两种情况下,有人知道如何正确创建src
吗?
答案 0 :(得分:1)
最后,我放弃了namespace A::B::C::D::E {
struct X {
int y;
};
}
namespace B {
using namespace A::B::C::D::E;
void foo() {
X aa;
B::X bb;
aa.y = 0;
}
struct X {
int z;
};
void bar() {
X aa;
B::X bb;
aa.y = 0;
}
}
int main() {
return 0;
}
并按如下方式使用ScriptRunConfig
来传递Estimator
(在提供了计算目标之后):
script_params
这还使我可以通过将https://hub.docker.com/上的estimator = Estimator(source_directory='./mysourcedir',
script_params=script_params,
compute_target='cluster',
entry_script='train.py',
conda_packages = ["pandas"],
pip_packages = ["git+https://github.com/..."],
use_docker=True,
custom_docker_image='<mydockeraccount>/<mydockerimage>')
Docker镜像安装到pip_packages
上,该镜像是从Dockerfile创建的,例如:
custom_docker_image
(有效!)
答案 1 :(得分:1)
将参数传递给ScriptRunConfig和RunConfig的正确方法是根据https://docs.microsoft.com/nb-no/python/api/azureml-core/azureml.core.runconfiguration?view=azure-ml-py作为字符串列表。
修改后的工作代码如下。
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)