【问题标题】:Mounting a FileDatasets in Azure ML Services在 Azure ML 服务中装载 FileDatasets
【发布时间】:2019-10-11 15:16:18
【问题描述】:

我遇到了 Azure 机器学习服务中的数据集模块的问题。我用一堆图像创建了一个 FileDataset 来在 TensorFlow 中训练一个模型。我将数据集安装在目标计算中,然后将安装点传递给训练脚本,如in the sample notebook we have on GitHub 所述。

我尝试了两种方法:将路径作为脚本参数(如 GitHub 上的建议)和命名输入传递,但它们似乎都没有正确传递安装点。任何人都知道哪个是使它工作的正确方法? (顺便说一句,我可以让它与数据源一起工作)

作为脚本参数

script_params = {
    '--data-folder': dset.as_named_input('dogscats_train').as_mount('tmp/dataset'),
} 

src = TensorFlow(source_directory =  r'Tensorflow',
              framework_version = '1.13',
              entry_script = 'train.py',
              script_params=script_params,
              compute_target='amlcompute', 
              vm_size='Standard_NC6', 
              use_gpu = True, 
              pip_packages = ['matplotlib', 'pillow', 'numpy', 'azureml-sdk'])

安装路径:

/mnt/batch/tasks/shared/LS_root/jobs/aa-ml-aml-workspace/azureml/cats-vs-dogs-tensorflow_1570799752_014bea9f/mounts/workspaceblobstore/azureml/cats-vs-dogs-tensorflow_1570799752_014bea9f/tmp/数据集

脚本中收到的实际路径:

/tmp/数据集

命名输入

src = TensorFlow(source_directory =  r'Tensorflow',
              framework_version = '1.13',
              entry_script = 'train.py',
              inputs=[dset.as_named_input('dogscats_train')],
              compute_target='amlcompute', 
              vm_size='Standard_NC6', 
              use_gpu = True, 
              pip_packages = ['matplotlib', 'pillow', 'numpy', 'azureml-sdk'])

安装路径:

/mnt/batch/tasks/shared/LS_root/jobs/aa-ml-aml-workspace/azureml/cats-vs-dogs-tensorflow_1570804147_39168dcf/mounts/workspaceblobstore

run.input_datasets['dogscats_train'].mount('tmp/dataset').mount_point 检索到的路径:

/mnt/batch/tasks/shared/LS_root/jobs/aa-ml-aml-workspace/azureml/cats-vs-dogs-tensorflow_1570804147_39168dcf/mounts/workspaceblobstore/azureml/cats-vs-dogs-tensorflow_1570804147_39168dcf/tmp/数据集

【问题讨论】:

    标签: azure tensorflow azure-machine-learning-service


    【解决方案1】:

    在这两种方法中,您传递给as_mountmount 的路径是相对路径,也就是说,它没有以前导/ 开头,这将导致数据集相对于当前工作目录,在您的情况下是/mnt/batch/tasks/shared/LS_root/jobs/aa-ml-aml-workspace/azureml/cats-vs-dogs-tensorflow_1570799752_014bea9f/mounts/workspaceblobstore/azureml/cats-vs-dogs-tensorflow_1570799752_014bea9f

    如果要挂载到/tmp/dataset,则需要dset.as_named_input('dogscats_train').as_mount('/tmp/dataset'),即需要在目标路径中显式添加/,使路径成为绝对路径。

    我创建了一个gist 来展示相对路径与绝对路径的效果。

    submit.py:提交 TensorFlow 运行

    so.py:比较两个参数,第一个参数是相对路径,第二个是绝对路径。

    driver_log_partial.txt: 是您在运行详细信息页面中看到的驱动程序日志的部分输出。

    现在关于您传递给as_named_input 的名称。然后将该名称作为环境变量提供,其值与脚本参数的值相同,该值是数据集安装到的路径。该名称也可用作run.input_datasets 的键,其中值也是数据集安装到的路径。也就是说,访问挂载路径的方式有三种,你可以选择最适合你的代码的一种。

    【讨论】:

    • 嗨@Rongduan。感谢您的回复。但是,使用绝对路径会使驱动程序在读取文件夹时自行锁定。您是否尝试过从挂载路径读取内容?我还尝试在 /mnt/azuremnt 文件夹中安装代码路径,结果相同。不管怎样,如果我们使用相对文件夹,是不是期望该方法返回正确的挂载路径?
    • 嗨@FacundoSantiago,它没有为我锁定。我没有更改作业提交脚本,但修改了我的so.py。请参阅this gist 我的跑步。可以分享一下你的作业提交脚本和作业脚本吗?
    猜你喜欢
    • 1970-01-01
    • 2019-02-21
    • 1970-01-01
    • 1970-01-01
    • 2017-11-06
    • 2017-08-27
    • 1970-01-01
    • 2020-05-28
    • 2022-12-18
    相关资源
    最近更新 更多