Медленная передача данных из хранилища BLOB-объектов Azure для вычисления цели - PullRequest
0 голосов
/ 04 октября 2019

Загрузка набора данных объемом 48 ГБ с 90000 файлами занимает 1 час. Я тренирую модель сегментации изображений на конвейере Azure ML, используя цель вычисления p100-nc6s-v2. В моем сценарии я обращаюсь к хранилищу BLOB-объектов Azure с помощью функции as_download () DataReference. Хранилище больших двоичных объектов находится в том же месте, что и рабочее пространство (с использованием get_default_datastore).

Примечание: Я могу загрузить полный набор данных на локальную рабочую станцию ​​в течение нескольких минут, используя az copy.

Когда я пытался использовать as_mount (), первая эпоха была очень медленной (4700 секунд против 772 секунд для последующих эпох).

Это ожидаемое поведение? Если нет, что можно сделать, чтобы улучшить скорость загрузки набора данных?

Ответы [ 2 ]

1 голос
/ 05 октября 2019

as_download() загружает данные в текущий рабочий каталог, который является общей папкой (или большим двоичным объектом, если вы делаете то, что предложил @reznikov). К сожалению, для небольших файлов ни blob, ни общий файловый ресурс не очень производительны (хотя blob намного лучше) - посмотрите этот ответ для некоторых измерений: Дисковый ввод / вывод очень медленный на P100-NC6s-V2

Когда вы монтируете, причина того, что первая эпоха настолько медленная, заключается в том, что предохранитель blob (который используется для монтирования BLOB-объектов) кэширует локальный SSD, поэтому после первой эпохи всена вашем SSD, и вы получаете полную производительность.

Что касается того, почему первая эпоха занимает гораздо больше времени, чем az copy, я подозреваю, что средство чтения данных используемой вами платформы не передает данные по чтению. Что вы используете?

Вы можете попробовать одну из 2 вещей:

  1. Монтировать, но в начале работы скопируйте данные из пути монтирования в / tmp и используйтеэто оттуда.
  2. Если # 1 значительно медленнее, чем az copy, не монтируйте. Вместо этого, в начале работы, скопируйте данные в / tmp, используя az copy.
1 голос
/ 04 октября 2019

Рабочая папка запуска - это смонтированное облачное хранилище, которое по умолчанию может быть сохранено в вашем рабочем пространстве. Можете ли вы попробовать вместо этого установить хранилище данных blob и посмотреть, улучшится ли perf?

run_config.source_directory_data_store = 'workspaceblobstore'
...