Что лучше между несколькими маленькими файлами h5 или одним огромным? - PullRequest
0 голосов
/ 04 июля 2019

Я работаю с огромными спутниковыми данными, которые разбиваю на маленькие плитки, чтобы подать модель глубокого обучения.Я использую pytorch, что означает, что загрузчик данных может работать с несколькими потоками.[settings: python, Ubuntu 18.04]

Я не могу найти ни одного ответа, который является лучшим с точки зрения доступа к данным и их хранения между:

  1. регистрация всех данных в одномОгромный файл HDF5 (более 20Go)
  2. , разбив его на несколько (более 16 000) маленьких файлов HDF5 (около 1,4Mo).

Существует ли проблема множественного доступа к одному файлупо многопоточности?а в другом случае есть влияние наличия такого количества файлов?

1 Ответ

2 голосов
/ 04 июля 2019

Я бы пошел на несколько файлов на вашем месте (но прочитал бы до конца).

Интуитивно, вы могли бы загрузить хотя бы несколько файлов в память, немного ускоряя процесс (маловероятно, что выВы можете сделать это с 20 ГБ, если хотите, чем определенно, так как доступ к ОЗУ намного быстрее)(скажем, в list или другой более эффективной для памяти структуре данных с лучшей локальностью кэша, предпочтительно) вместо чтения с диска (аналогично подходу в tf.data.Dataset объекте Tensorflow и его методе cache).

С другой стороны, этот подход более громоздок и труден для правильной реализации, хотя, если вы только читаете файл с несколькими потоками, у вас все должно быть в порядке, и не должно быть никаких блокировок в этой операции..

Не забудьте измерить свой подход с помощью профилировщика pytorch (torch.utils.bottleneck), чтобы точно определить проблемумс и проверить решения.

...