【问题标题】:AzureML ParallelRunStep runs only on one nodeAzureML ParallelRunStep 仅在一个节点上运行
【发布时间】:2021-07-19 08:16:19
【问题描述】:

我有一个推理管道,其中包含一些 PythonScriptStep,中间有一个 ParallelRunStep。一切正常,除了在 ParallelRunStep 期间所有小批量都在一个节点上运行,无论我在 node_count 配置参数中放置了多少节点。

集群中的所有节点似乎都已启动并运行,根据日志,init() 函数已在它们上运行了多次。深入研究我可以在 sys/error/10.0.0.* 中看到的日志,除了正在工作的工作人员之外的所有工作人员都在说:

FileNotFoundError: [Errno 2] No such file or directory: '/mnt/batch/tasks/shared/LS_root/jobs/virtualstage/azureml/c36eb050-adc9-4c34-8a33-5f6d42dcb19c/wd/tmp8_txakpm/bg.png'

bg.png 恰好是在我传递给 ParallelRunStep 的前一个 PythonScriptStep 中创建的辅助参数:

bg_file = PipelineData('bg',  datastore=data_store)
bg_file_ds = bg_file.as_dataset()
bg_file_named = bg_file_ds.as_named_input("bg")
bg_file_dw = bg_file_named.as_download()

...

parallelrun_step = ParallelRunStep(
    name='batch-inference',
    parallel_run_config=parallel_run_config,
    inputs=[frames_data_named.as_download()],
    arguments=["--bg_folder", bg_file_dw],
    side_inputs=[bg_file_dw],
    output=inference_frames_ds,
    allow_reuse=True
)

这里发生了什么?为什么 side 论点似乎只在一个工人中可用,而在其他工人中却失败了?

顺便说一句,我发现 this 类似但未解决的问题。

非常感谢任何帮助,谢谢!

【问题讨论】:

    标签: azureml


    【解决方案1】:

    显然你需要指定一个本地挂载路径才能在多个节点中使用side_inputs:

    bg_file_named = bg_file_ds.as_named_input(f"bg")
    bg_file_mnt = bg_file_named.as_mount(f"/tmp/{str(uuid.uuid4())}")
    
    ...
    
    parallelrun_step = ParallelRunStep(
        name='batch-inference',
        parallel_run_config=parallel_run_config,
        inputs=[frames_data_named.as_download()],
        arguments=["--bg_folder", bg_file_mnt],
        side_inputs=[bg_file_mnt],
        output=inference_frames_ds,
        allow_reuse=True
    )
    

    来源:

    【讨论】:

      猜你喜欢
      • 2021-07-19
      • 2021-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多