azure - 在 Azure ML 服务中装载 FileDatasets
问题描述
我遇到了 Azure 机器学习服务中的数据集模块的问题。我用一堆图像创建了一个 FileDataset 来在 TensorFlow 中训练一个模型。我将数据集安装在目标计算中,然后将安装点传递给训练脚本,如我们在 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/dataset
脚本中收到的实际路径:
/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/dataset
解决方案
在这两种方法中,您传递给的路径as_mount
和mount
是一个相对路径,也就是说,它没有以前导 开头/
,这将导致数据集相对于当前工作目录安装,在您的情况下是/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')
,也就是说,你需要/
在目标路径中显式添加 a 以使路径成为绝对路径。
我创建了一个要点来展示相对路径与绝对路径的效果。
submit.py
:提交 TensorFlow 运行
so.py
: 比较两个参数,第一个参数是相对路径,第二个是绝对路径。
driver_log_partial.txt
: 是您在运行详细信息页面中看到的驱动程序日志的部分输出。
现在关于您传递给的名称as_named_input
。然后将该名称作为环境变量提供,其值与脚本参数的值相同,该值是数据集安装到的路径。该名称也可用作run.input_datasets
值也是数据集安装到的路径的键。换句话说,访问挂载路径的方式有三种,你可以选择一种最适合你的代码的方式。
推荐阅读
- react-native - Redux 坚持导入不导入
- azure - Azure App Insights 警报触发器但在日志中找不到故障?
- routes - Laravel 8. 路由问题。总是需要指定完整路径
- python-3.x - Python tracemalloc,什么是大小和计数?
- php - Laravel Paginator 'options' 参数
- graph - Visibility Graph 算法在时间序列中的应用
- docker - 单个 Docker 容器中的 aspnet 核心 web api 和 SPA (ReactJs)
- java - 识别多个字符
- r - 在 R 中获取公历周数(类似于 Excel)
- mysql - Docker 提交实际上并没有提交