【问题标题】:How get a Python pathlib Path from an Azure blob datastore?如何从 Azure blob 数据存储中获取 Python pathlib 路径?
【发布时间】:2019-09-16 23:21:17
【问题描述】:

我正在尝试在 AzureML 中对 torch.utils.data.DataLoader 进行一些自定义操作,但无法直接从我的 azureml.core.Datastore 实例化它:

ws = Workspace( # ... etc ... )
ds = Datastore.get(ws, datastore_name='my_ds')
am = ds.as_mount()

# HOW DO I GET base_path, data_file from am?

dataloader = DataLoader(
        ListDataset(base_path, data_file), #... etc...
    )

am.path() 的值是“$AZUREML_DATAREFERENCE_my_ds”,但我无法弄清楚如何从 pathlib.Path 转到 pathlib.Path 的构造函数所期望的 ListDataset。我尝试过的方法包括 Path(am.path())Path(os.environ[am.path()]),但它们似乎不起作用。

很明显,有一些答案,因为:

script_params = {
    '--base_path': ds.as_mount(), 
    '--epochs': 30,  
    '--batch_size' : 16,  
    '--use_cuda': 'true'
}
torch = PyTorch(source_directory='./',
                        script_params=script_params,
                        compute_target=compute_target,
                        entry_script='train.py',
                        pip_packages=packages,
                        use_gpu=True) 

似乎创建了一个合法的对象。

【问题讨论】:

  • 您的意思是我们必须通过估算器传递 DataReference 对象才能访问数据?

标签: python azure pytorch azure-machine-learning-service


【解决方案1】:

您或许可以尝试使用DataPath class。它公开了诸如 path_on_datastore 之类的属性,这可能是您正在寻找的路径。

从你的 DataReference 对象构造这个类,即变量am;你可以使用create_from_data_reference() 方法。

例子:

ds = Datastore.get(ws, datastore_name='my_ds')
am = ds.as_mount()

dp = DataPath().create_from_data_reference(am)

base_path = dp.path_on_datastore

【讨论】:

    【解决方案2】:

    上面的代码对我产生了一个错误,删除了 DataPath 实例化后的括号,如下所示使代码运行。

    ds = Datastore.get(ws, datastore_name='my_ds')
    am = ds.as_mount()
    
    dp = DataPath.create_from_data_reference(am)
    
    base_path = dp.path_on_datastore
    

    感谢sn-p的代码,很有用!

    【讨论】:

    • 嗨,Karin,您知道 base_path 获得 None 值的可能原因是什么吗?
    猜你喜欢
    • 1970-01-01
    • 2021-10-31
    • 1970-01-01
    • 2021-02-22
    • 1970-01-01
    • 2015-11-04
    • 2019-06-21
    • 1970-01-01
    • 2019-04-07
    相关资源
    最近更新 更多