如何从 Azure blob 数据存储获取 Python pathlib 路径?

Lar*_*ien 5 python azure pytorch azure-machine-learning-service

我正在尝试torch.utils.data.DataLoader在 AzureML 中对 a 进行一些自定义操作,但无法让它直接从我的实例化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...
    )

Run Code Online (Sandbox Code Playgroud)

的值am.path()是“$AZUREML_DATAREFERENCE_my_ds”,但我无法弄清楚如何pathlib.Path按照构造函数的预期从该值转到 a 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) 
Run Code Online (Sandbox Code Playgroud)

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

Rit*_*uri 2

您也许可以尝试使用DataPath 类。它公开了一些属性,例如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

Run Code Online (Sandbox Code Playgroud)