将多个运行提交到 AzureML 上的同一节点
Submitting multiple runs to the same node on AzureML
我想使用 AzureML 执行超参数搜索。我的模型很小(大约 1GB),因此我想 运行 在同一个 GPU/node 上使用多个模型以节省成本,但我不知道如何实现。
我目前提交作业的方式如下(每个 GPU/node 进行一次培训 运行):
experiment = Experiment(workspace, experiment_name)
config = ScriptRunConfig(source_directory="./src",
script="train.py",
compute_target="gpu_cluster",
environment="env_name",
arguments=["--args args"])
run = experiment.submit(config)
ScriptRunConfig
可以提供一个distributed_job_config
。我尝试在那里使用 MpiConfiguration
,但如果这样做,运行 由于 MPI 错误而失败,该错误显示集群配置为每个节点仅允许一个 运行:
Open RTE detected a bad parameter in hostfile: [...]
The max_slots parameter is less than the slots parameter:
slots = 3
max_slots = 1
[...] ORTE_ERROR_LOG: Bad Parameter in file util/hostfile/hostfile.c at line 407
使用 HyperDriveConfig
也默认提交一个 运行 一个 GPU,另外提供一个 MpiConfiguration
会导致如上所示的相同错误。
我想我总是可以重写我的训练脚本来并行训练多个模型,s.t。每个 run
包含多个训练。不过,我想避免使用此选项,因为这样日志记录和检查点写入会变得越来越混乱,并且需要对训练管道进行大量重构。而且这个功能看起来很基础,我希望有一种方法可以优雅地做到这一点。有什么想法吗?
使用 Run.create_children 方法启动对父 运行 而言“本地”的子 运行,并且不需要身份验证。
对于 AML 计算 max_concurrent_runs 映射到将用于 运行 超参数调整 运行 的最大节点数。
因此每个节点将执行 1 次。
部署了单个服务,但您可以在 init 中加载多个模型版本,然后评分函数根据请求的参数使用特定的模型版本进行评分。
或使用新的 ML 端点(预览版)。
What are endpoints (preview) - Azure Machine Learning | Microsoft Docs
我想使用 AzureML 执行超参数搜索。我的模型很小(大约 1GB),因此我想 运行 在同一个 GPU/node 上使用多个模型以节省成本,但我不知道如何实现。
我目前提交作业的方式如下(每个 GPU/node 进行一次培训 运行):
experiment = Experiment(workspace, experiment_name)
config = ScriptRunConfig(source_directory="./src",
script="train.py",
compute_target="gpu_cluster",
environment="env_name",
arguments=["--args args"])
run = experiment.submit(config)
ScriptRunConfig
可以提供一个distributed_job_config
。我尝试在那里使用 MpiConfiguration
,但如果这样做,运行 由于 MPI 错误而失败,该错误显示集群配置为每个节点仅允许一个 运行:
Open RTE detected a bad parameter in hostfile: [...] The max_slots parameter is less than the slots parameter: slots = 3 max_slots = 1 [...] ORTE_ERROR_LOG: Bad Parameter in file util/hostfile/hostfile.c at line 407
使用 HyperDriveConfig
也默认提交一个 运行 一个 GPU,另外提供一个 MpiConfiguration
会导致如上所示的相同错误。
我想我总是可以重写我的训练脚本来并行训练多个模型,s.t。每个 run
包含多个训练。不过,我想避免使用此选项,因为这样日志记录和检查点写入会变得越来越混乱,并且需要对训练管道进行大量重构。而且这个功能看起来很基础,我希望有一种方法可以优雅地做到这一点。有什么想法吗?
使用 Run.create_children 方法启动对父 运行 而言“本地”的子 运行,并且不需要身份验证。
对于 AML 计算 max_concurrent_runs 映射到将用于 运行 超参数调整 运行 的最大节点数。 因此每个节点将执行 1 次。
部署了单个服务,但您可以在 init 中加载多个模型版本,然后评分函数根据请求的参数使用特定的模型版本进行评分。 或使用新的 ML 端点(预览版)。 What are endpoints (preview) - Azure Machine Learning | Microsoft Docs