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

Мы начинаем использовать dvc с git для управления версиями проектов машинного обучения. Для удаленного хранения dvc мы используем облачное хранилище Google.

Наш набор данных представляет собой набор данных OCR с более чем 100 000 небольших изображений, общий размер которых составляет около 200 МБ. Используя dvc для отслеживания этого набора данных, мы столкнулись со следующими проблемами:

  1. Добавление набора данных для отслеживания заняло много времени.
  2. Очень медленная загрузка.
  3. Очень медленная загрузка.
  4. Обновление/удаление/добавление только одного изображения в наборе данных приводит к тому, что dvc пересчитывает множество вещей: хэши и т. д....

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

Цель состоит в том, чтобы иметь контроль версий для набора данных с большим количеством файлов со следующей функциональностью.

  1. Отслеживание каждого отдельного файла.
  2. Фиксация только изменений, а не всего набора данных.
  3. Быстрая проверка/вытягивание

Любое предложение по лучшему решению приемлемо.


person user10333    schedule 08.05.2019    source источник
comment
Вы пробовали SVN?   -  person ElpieKay    schedule 08.05.2019
comment
Нет, но, насколько я знаю, управление версиями не создано для таких задач. Это потому, что мы используем dvc внутри git.   -  person user10333    schedule 08.05.2019
comment
Привет @ user10333 (я один из создателей DVC). Печально слышать, что производительность не оптимальна в таком простом случае. Какую версию DVC вы используете? Сколько времени нужно, чтобы добавить 200 МБ в вашем случае? загрузка/загрузка - это S3 или что-то другое?   -  person Shcheklein    schedule 08.05.2019
comment
@user10333 user10333 Я создал заявку, чтобы исследовать и улучшить производительность — не могли бы вы дать нам более подробную информацию? github.com/iterative/dvc/issues/1970   -  person Shcheklein    schedule 08.05.2019
comment
Привет, Щеклеин, для добавления dvc и нажатия dvc требуется около 2 часов со скоростью загрузки 30 МБ.   -  person user10333    schedule 09.05.2019
comment
@ user10333 это странно и похоже на ошибку. Не могли бы вы предоставить немного больше деталей в созданном мной билете? Нам нужно как минимум - облачный провайдер, который вы используете, количество файлов (в наборе 30mb).   -  person Shcheklein    schedule 10.05.2019
comment
Привет Щеклеин, если я правильно вас понял. Мы используем облачное хранилище Google в качестве удаленного для dvc. В хранилище мы используем 1 ведро. Общее количество файлов превышает 100000, общий размер на диске 229 МБ, средний размер файла около 1,3 КБ. Наша скорость загрузки 30мб и скорость скачивания тоже 30мб. Я проверил загрузку нашего набора данных в аналогичное хранилище Google без dvc, и это заняло около 25 минут.   -  person user10333    schedule 12.05.2019
comment
Сопровождающий DVC здесь. Для протокола: мы внесли множество оптимизаций в 1.0, которые значительно улучшают работу. Мы поделились некоторыми диаграммами на dvc.org/blog/dvc-1-0-release. . Пожалуйста, попробуйте :)   -  person Ruslan Kuprieiev    schedule 26.08.2020


Ответы (1)


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

ZIP-файл — правильный подход, в сочетании с Git LFS для хранения многих версий этого zip файл.

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

person VonC    schedule 08.05.2019
comment
Стоит знать. Github ограничивает размер файлов LFS: docs.github.com/en/github/managing-large-files/. - person Philippe Remy; 29.01.2021
comment
@PhilippeRemy Я согласен. Это не сработает для любого большого объема данных... если только вы не купите пакет данных: docs.github.com/en/github/ - person VonC; 29.01.2021