Работа с архивами
Данные на NFS могут храниться в виде архива. Упаковывайте файлы в архив, если их более 100 000.
Работа с архивами имеет ряд особенностей, которые обусловлены ограничениями архитектуры NFS на количество файлов и длину их имен. Ограничения могут приводить к ошибке со стороны файловой системы при попытке распаковать архив: «Cannot open. File too large». Ошибка возникает, когда в процессе распаковки в одном каталоге одновременно появляется много файлов с длинными именами.
Для корректной работы с архивами рекомендуется:
Реорганизовать структуру данных. По возможности сгруппировать файлы и переместить их в подкаталоги.
Выбрать оптимальную длину имени файла. Эксперименты показали, что максимальное количество файлов, после которого проявляется ограничение файловой системы, линейно зависит от средней длины имени файла. Например, для создания в одного каталога 1 млн файлов средняя длина имени файла должна составлять не более 80–85 символов.
По возможности использовать данные в архивах без предварительной разархивации. Таким образом, устраняется ограничение файловой системы на количество файлов, а также повышается ее производительность. Увеличение производительности особенно заметно на медленных файловых системах, к которым относятся сетевые FS, в частности, NFS. В PyTorch это реализуется с помощью собственного класса для загрузки датасета, унаследованного от класса
torch.utils.data.Dataset
. Пример кода такого класса для датасета можно посмотреть в реализации класса torchvision.dataset.folder.DatasetFolder.