Как получить путь к путевому файлу Python из хранилища BLOB-объектов Azure?
Я пытаюсь сделать некоторые пользовательские манипуляции с torch.utils.data.DataLoader
в AzureML, но не могу заставить его создать экземпляр непосредственно из моего 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
как ожидается, конструктор 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)
кажется, создать законный объект.
0 ответов
Возможно, вы можете попробовать использовать класс 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
Приведенный выше код сгенерировал для меня ошибку, удалив круглые скобки после того, как экземпляр 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
Спасибо за фрагмент кода, очень полезно!