如何将参数传递到Azure机器学习服务中的训练脚本?

2024-04-19 09:07:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用我的工作区中的一个^{}对象在我的工作区ws中,在Azure虚拟机上本地提交一个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: { "error_details": { "correlation": { "operation": "bb12f5b8bd78084b9b34f088a1d77224", "request": "iGfp+sjC34Q=" }, "error": { "code": "UserError", "message": "Failed to deserialize run definition"

更糟的是,如果我将我的数据文件夹设置为使用数据存储(我可能需要这样做)

^{pr2}$

错误是

UserErrorException: Dictionary with non-native python type values are not supported in runconfigs.
{'--data-folder': $AZUREML_DATAREFERENCE_d93269a580ec4ecf97be428cd2fe79, '--training-data': 'train.csv'}

我不太明白应该如何将script_params参数传递给train.py(不幸的是,the documentation of ^{}没有包含很多细节)。在

有人知道如何在这两种情况下正确地创建src?在


Tags: runfromcoreimportsrcdatawsscript
2条回答

最后,我放弃了ScriptRunConfig,并使用Estimator来传递script_params(在配置了一个计算目标之后):

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>')

这也允许我安装我的pip_packages依赖项,方法是将https://hub.docker.com/一个custom_docker_imageDocker映像放在Dockerfile中创建,如下所示:

^{pr2}$

(成功了!)在

向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)

相关问题 更多 >