Не удается получить доступ к смонтированному набору данных в записной книжке службы машинного обучения Azure

#azure #mount #azure-machine-learning-studio #azure-machine-learning-service #azure-notebooks

Вопрос:

Я использую функцию записной книжки из службы машинного обучения Azure. В этой записной книжке я подключился к рабочему пространству, извлек соответствующее хранилище данных и извлек свои файлы в виде объекта набора данных файлов. Пока все работает.

 from azureml.core import Workspace, Datastore, Dataset
import pandas as pd
import os

workspace = Workspace.from_config()
container="cnt_name"
file_path = 'actual_path'
# get datstore and dataset
datastore = Datastore.get(workspace, container)
datastore_path = [(datastore, file_path )]
dataset = Dataset.File.from_files(datastore_path)
 

Теперь я пытаюсь смонтировать этот набор file_dataset

 mounted_path = "/tmp/test_dir4"
dataset_mounted = dataset.mount(mounted_path)
 

и все кажется прекрасным. Быстрый ls дает следующий результат:

     ls -ltr /tmp/
    prwx------ 1 azureuser azureuser    0 May 12 13:29 clr-debug-pipe-14801-259046-out
    prwx------ 1 azureuser azureuser    0 May 12 13:29 clr-debug-pipe-14801-259046-in
    d--------- 0 root      root         0 May 12 13:29 test_dir4
    drwx------ 3 azureuser azureuser 4096 May 12 13:29 tmpjrb2tx8g
    -rw------- 1 azureuser azureuser  364 May 12 13:29 tmp5w_ikt6j
    drwx------ 2 azureuser azureuser 4096 May 12 13:29 pyright-14886-W3YT3PTdzoIO
 

Но вот в чем моя проблема: смонтированная папка смонтирована пользователем root. Я не могу получить к нему доступ — ни из ноутбука, ни из оболочки. ls выдает типичные ошибки path not found или permission denied .

Комментарии:

1. невероятно написанный вопрос-особенно для первого таймера, поздравляю! Можете ли вы поделиться тем, как вы пытаетесь прочитать смонтированное хранилище файлов?

Ответ №1:

Ты почти на месте! Это dataset.mount(mounted_path) немного беспокоит, но на самом деле возвращает вам контекст монтирования, который вам нужно запустить впоследствии, чтобы он работал следующим образом:

 # mount dataset onto the mounted_path of a Linux-based compute
mount_context = dataset.mount(mounted_path)

mount_context.start()
 

После этого вы можете проверить с помощью следующего кода, действительно ли у вас есть доступ к файлам:

 import os
print(os.listdir(mounted_path))