Переход от ADLS2 к Compute Target очень медленное машинное обучение Azure

Во время обучающего скрипта, выполняемого на целевой вычислительной машине, мы пытаемся загрузить зарегистрированный набор данных из хранилища данных ADLS2. Проблема в том, что для загрузки ~ 1,5 ГБ (разбитых на ~ 8500 файлов) в целевой объект вычислений с помощью следующего метода требуется часов:

from azureml.core import Datastore, Dataset, Run, Workspace

# Retrieve the run context to get Workspace
RUN = Run.get_context(allow_offline=True)

# Retrieve the workspace
ws = RUN.experiment.workspace

# Creating the Dataset object based on a registered Dataset
dataset = Dataset.get_by_name(ws, name='my_dataset_registered')

# Download the Dataset locally
dataset.download(target_path='/tmp/data', overwrite=False)

Важное примечание: набор данных регистрируется по пути в Datalake, который содержит множество подпапок (а также подпапок, ..), содержащих небольшие файлы размером около 170 КБ.

Примечание. Я могу загрузить полный набор данных на локальный компьютер в течение нескольких минут с помощью az copy или Storage Explorer. Кроме того, набор данных определяется на этапе папки с подстановочным знаком ** для сканирования вложенных папок: datalake/relative/path/to/folder/**

Это известная проблема? Как я могу улучшить скорость передачи?

Спасибо !


comment
Из ответа @Monica Kei, но она не может прокомментировать: не могли бы вы указать, какие версии SDK azureml-core и azureml-dataprep вы установили на свой вычислительный экземпляр? А какой размер ВМ? Я пробую сценарий, аналогичный тому, что вы описываете. При загрузке с локального ноутбука требуется около 10 минут для загрузки 10 000 небольших файлов. Но на вычислительном экземпляре это заняло около 1,5 часов, а затем произошла ошибка. Пытаемся выяснить, какова ваша установка, и сузить проблему.   -  person dan1st    schedule 11.03.2020


Ответы (2)


Отредактировано, чтобы быть более похожим на ответ:

Было бы полезно указать: какие версии SDK azureml-core и azureml-dataprep вы используете, какой тип виртуальной машины вы используете в качестве вычислительного экземпляра и какие типы файлов (например, jpg? Txt?) Содержит ваш набор данных. с использованием. Кроме того, чего вы пытаетесь достичь, загружая полный набор данных на свой компьютер?

В настоящее время образ вычислительного экземпляра поставляется с предустановленными azureml-core 1.0.83 и azureml-dataprep 1.1.35, возраст которых составляет 1-2 месяца. Возможно, вы используете даже более старые версии. Вы можете попробовать выполнить обновление, запустив в своем ноутбуке:

%pip install -U azureml-sdk

Если вы не видите никаких улучшений в своем сценарии, вы можете сообщить о проблеме на официальной странице документации, чтобы попросить кого-нибудь помочь отладить вашу проблему, например на странице справки для FileDataset.

(отредактировано 9 июня 2020 г., чтобы удалить упоминание об экспериментальной версии, поскольку этого больше не происходит)

person Monica Kei    schedule 11.03.2020
comment
Я добавил это как комментарий для вас :) - person dan1st; 11.03.2020
comment
Спасибо за совет :) - person Monica Kei; 11.03.2020
comment
Привет @MonicaKei, большое спасибо за совет (возвращаюсь немного поздно). Обновление azureml-core с 1.6.0 до 1.7.0 определенно очень помогло с точки зрения поведения и скорости загрузки! Чтобы ответить на ваши вопросы: я загружаю файлы .parquet из ADLS2, чтобы специалисты по данным могли выполнять некоторые EDA в интерактивном режиме. Есть ли у вас лучший образец для интерактивного EDA? :-) - person dernat71; 08.06.2020
comment
Привет, @Nethim, на самом деле за последние несколько месяцев было больше открытий о проблемах с производительностью при загрузке / монтировании наборов данных, состоящих из большого количества небольших файлов. Была (и все еще) работа над улучшением этого! Для интерактивного EDA изучали ли вы Студию машинного обучения Azure? - person Monica Kei; 10.06.2020

DataTransferStep создает шаг конвейера машинного обучения Azure, который передает данные между ними.

Следуйте инструкциям ниже для класса DataTransferStep. https://docs.microsoft.com/en-us/python/api/azureml-pipeline-steps/azureml.pipeline.steps.data_transfer_step.datatransferstep?view=azure-ml-py

person Ram-msft    schedule 11.03.2020
comment
Речь идет об использовании данных для обучения, а не для перемещения ч / б мест хранения данных. - person Anders Swanson; 07.06.2020