Версионирование с DVC, которое упорядочит работу с данными и ml экпериментами
DVC - это продукт эволюции машинного обучения и предназначен для упрощения работы дата аналитика. В частности, он помогает создавать версии данных и моделей (большие файлы) и тем самым упорядочит ваш проект так, что его станет проще запускать коллегам, извлекать нужные версии и сравнивать результаты разных подходов. Многие принципы DVC заимствовал у Git-а, который делает то же, но для кода и небольших файлов.
Сначала расскажу в целом о командах для версионирования данных, а потом рассмотрю их на практическом примере.
Для начала работы с DVC требуется вызвать команду:
dvc init
После появится папка .dvc для хранения информации о конфигурации, например, файл config, в котором хранится информация о настройках.
Затем следует добавить путь к удаленному хранилищу данных, там и будут фактически хранится версионированные данные:
dvc remote add -d название путь
Ключ -d сообщает dvc, что это удаленное хранилище по умолчанию, в целом можно добавлять несколько хранилищ.
Для начала слежения за файлом с данными используется команда:
dvc add путь
В это случае файл одновременно добавляется в контролируемую область и кэш DVC, создается dvc файл, хранящий служебную информацию и в файл .gitignore добавляется путь к данным.
Отмена слежения происходит командой:
dvc remove путь.dvc
Чтобы загрузить файлы из кэша в удаленное хранилище, используется команда:
dvc push
В последующем для фиксации изменений в отслеживаемых dvc файлах используется команда:
dvc commit
Альтернативно можно делать dvc add с указанием пути к каждому файлу.
Это обеспечит занесение изменений в кэш DVC (чтобы направить их на сервер опять же следует воспользоваться dvc push)
Для восстановления состояния данных перемещаемся в соответствующий commit с git и делаем:
dvc fetch dvc checkout
dvc pull
В первом случае сначала изменения поступают в кэш DVC, а потом в рабочую директорию, во втором - все сразу.
Теперь продемонстрируем работу на примере. Создадим тестовый репозиторий, в котором в папке data будет размещен файл 1.csv, плюс еще один файл ipynb для модификации данных.
Инициализируем git репозиторий и dvc:
git init git add demo_dvs.ipynb
dvc init
Теперь зададим удаленное хранилище в папке arch:
dvc remote add -d remote_data arch
dvc add data/1.csv
Видим, что в папке с данными созданы файл .gitignore и файл dvc, которые следует отслеживать с git-ом.
dvc push
git add data/1.csv.dvc data/.gitignore git commit -am first_step
Теперь изменим файлы в ноутбуке:
Закоммитим изменения в данных и отправим их в хранилище:
dvc commit dvc push
git commit -am second_step
Попробуем получить первичный вид данных:
git log -2 git checkout
dvc pull
После этой команды содержимое файла примет первоначальный вид: