在本地运行 Azure 机器学习服务管道

Posted

技术标签:

【中文标题】在本地运行 Azure 机器学习服务管道【英文标题】:Running Azure Machine Learning Service pipeline locally 【发布时间】:2019-06-12 18:27:21 【问题描述】:

我正在使用带有 azureml-sdk python 库的 Azure 机器学习服务。

我使用的是 azureml.core 1.0.8 版

我正在关注这个https://docs.microsoft.com/en-us/azure/machine-learning/service/how-to-create-your-first-pipeline 教程。

当我使用 Azure 计算资源时,它可以正常工作。但我想在本地运行它。

我收到以下错误

raise ErrorResponseException(self._deserialize, response)
azureml.pipeline.core._restclients.aeva.models.error_response.ErrorResponseException: (BadRequest) Response status code does not indicate success: 400 (Bad Request).
Trace id: [uuid], message: Can't build command text for [train.py], moduleId [uuid] executionId [id]: Assignment for parameter Target is not specified

我的代码如下:

run_config = RunConfiguration()
compute_target = LocalTarget()
run_config.target = LocalTarget()    
run_config.environment.python.conda_dependencies = CondaDependencies(conda_dependencies_file_path='environment.yml')
run_config.environment.python.interpreter_path = 'C:/Projects/aml_test/.conda/envs/aml_test_env/python.exe'
run_config.environment.python.user_managed_dependencies = True
run_config.environment.docker.enabled = False

trainStep = PythonScriptStep(
    script_name="train.py",
    compute_target=compute_target,
    source_directory='.',
    allow_reuse=False,
    runconfig=run_config
)

steps = [trainStep]

# Build the pipeline
pipeline = Pipeline(workspace=ws, steps=[steps])
pipeline.validate()

experiment = Experiment(ws, 'Test')

# Fails, locally, works on Azure Compute
run = experiment.submit(pipeline)


# Works both locally and on Azure Compute
src = ScriptRunConfig(source_directory='.', script='train.py', run_config=run_config)
run = experiment.submit(src)

train.py 是一个非常简单的自包含脚本,仅依赖于近似于 pi 的 numpy。

【问题讨论】:

【参考方案1】:

根据文档,可以在本地机器上进行培训(例如在开发期间)并且非常容易:how-to-set-up-training-targets

我在我的 Windows 计算机上按如下方式执行此操作:

定义本地环境:

sklearn_env = Environment("user-managed-env")
sklearn_env.python.user_managed_dependencies = True
# You can choose a specific Python environment by pointing to a Python path 
sklearn_env.python.interpreter_path = r'C:\Dev\tutorial\venv\Scripts\python.exe'

compute_target='local' 似乎是将脚本定向到我的本地环境的神奇词汇。

src = ScriptRunConfig(source_directory=script_folder,
script='train_iris.py',
arguments=[dataset.as_named_input('iris')],
compute_target='local',
environment=sklearn_env)

然后我需要确保我的本地环境具有脚本所需的所有依赖项。

另外我需要在我的本地机器上安装这些包:

azureml-defaults 包装

【讨论】:

当然,但是 azureml 管道呢?这就是最初的问题的意义【参考方案2】:

本地计算不能与 ML Pipelines 一起使用。请看这个article。

【讨论】:

谢谢。我不明白那个表,因为它不应该是可能的。 难道不能将您的本地计算机配置为“远程虚拟机”吗?假设您有一个公共 IP 并允许 SSH 连接。但是,我找不到有关如何设置此类资源的任何信息,他们是否将其关闭? docs.microsoft.com/en-us/azure/machine-learning/… 确实见docs.microsoft.com/en-us/azure/machine-learning/…

以上是关于在本地运行 Azure 机器学习服务管道的主要内容,如果未能解决你的问题,请参考以下文章

Azure 机器学习在运行管道时抛出错误“无效图:节点中的计算目标无效”

Azure 机器学习管道:如何在失败时重试?

如何将 Pycharm 和 git 与 azure 机器学习服务(工作区)集成

从 Azure 机器学习运行注册模型,无需下载到本地文件

安排 Azure 机器学习计算实例

是否可以将 Azure 管道连接到本地服务器?