Ознакомьтесь с управлением версиями данных так же, как с управлением версиями кода.

Как специалисты по данным, мы экспериментируем с различными версиями кода, моделей и данных. Кроме того, мы даже используем систему контроля версий, такую ​​как Git, чтобы управлять нашим кодом, отслеживать версии, перемещаться вперед и назад во времени и делиться нашим кодом с нашими командами.

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

Поэтому крайне важно версионировать ваши модели, а также данные. Но опытные инженеры-программисты знают, что использование Git для хранения больших файлов — большая ошибка.

Git не только неэффективен при работе с большими файлами, но и не является стандартизированной средой для хранения больших файлов данных. Большая часть данных хранится в корзинах AWS S3, Google Cloud Storage или любом другом удаленном сервере хранения данных.

Итак, как мы версионируем данные? Введите ДВК.

Представляем ДВК

DVC — это система контроля версий данных, которая работает рука об руку с Git для отслеживания наших файлов данных. У него даже синтаксис похож на Git, поэтому его довольно легко освоить.

В этой статье мы рассмотрим некоторые из замечательных функций управления версиями данных в DVC. Но сначала давайте создадим новую папку проекта и виртуальную среду и установим ее как пакет Python:

$ pip install "dvc[all]"

или если вы используете Pipenv:

$ pipenv shell
$ pipenv install "dvc[all]"

Вы должны увидеть такой вывод:

Теперь давайте инициализируем репозиторий git. Вы должны увидеть следующий вывод:

Идеальный! Теперь мы можем перейти к добавлению наших данных в DVC.

Добавление + фиксация данных в DVC

У меня есть один файл данных в папке данных моего проекта, например:

Чтобы запустить проверку размера из терминала, используйте:

$ ls -lh data

Вы увидите следующий вывод, так как файл данных отображается как 5,2 МБ.

Теперь мы можем добавить этот файл данных в DVC. Бегать:

$ dvc add data/train_shakespeare.txt

Вы увидите следующий вывод, предлагающий нам запустить команду git add:

Теперь мы запустим команду git add:

$ git add data/train_shakespeare.txt.dvc data/.gitignore

Теперь, когда мы добавили наш новый файл .dvc в наше отслеживание git, мы можем продолжить и зафиксировать его в нашем git:

$ git commit -m "added data."

Настройка удаленного хранилища для наших данных

Мы можем просто использовать Google Диск для хранения наших наборов данных с версиями, и в этом руководстве мы собираемся сделать именно это.

Давайте создадим новую папку на нашем Google диске и посмотрим на ее URL:

https://drive.google.com/drive/u/0/folders/cVtFRMoZKxe5iNMd-K_T50Ie

Жирным шрифтом выделен идентификатор папки, которую мы хотим скопировать на наш терминал, чтобы DVC мог отслеживать наши данные в этой вновь созданной папке на Диске.

Давайте сделаем это:

$ dvc remote add -d storage gdrive://cVtFRMoZKxe5iNMd-K_T50Ie

Время зафиксировать наши изменения в git:

$ git commit .dvc/config -m "Configured remote storage."

Идеальный! Теперь мы можем отправить наши данные в наше удаленное хранилище.

$ dvc push 

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

Получение удаленных данных

Если вы или ваши коллеги хотите получить доступ к удаленно сохраненным данным, это можно сделать с помощью команды pull.

Но сначала давайте удалим данные и их кеш, хранящиеся локально, чтобы мы могли получить их удаленно:

$ rm -f data/train_shakespeare.txt
$ rm -rf .dvc/cache

Теперь потяните:

$ dvc pull

Вы увидите следующий вывод при извлечении файла:

Как видите, когда dvc отслеживает ваш файл данных, извлечь его из удаленного хранилища не составляет труда.

Отслеживание другой версии данных

Представьте, если мы хотим отслеживать новую версию того же файла данных, мы можем легко добавить его в dvc, а затем снова в git:

$ dvc add data/train_shakespeare.txt
$ git add data/train_shakespeare.txt.dvc

Теперь вы увидите, что новая версия файла .dvc готова к фиксации в нашем git:

Зафиксируйте файл.

Теперь мы можем отправить наш последний набор данных в удаленное хранилище:

$ dvc push

Глядя на наш диск Google, мы видим, что у нас хранятся две версии наших данных:

Возврат к другой версии набора данных

С DVC стало легко вернуться в прошлое к более старой версии набора данных.

Если мы посмотрим на журнал git нашего проекта, мы увидим, что мы передали две версии файла .dvc в git:

Поэтому мы должны вернуться к нашей предыдущей версии файла .dvc, так как именно его отслеживает git.

Во-первых, просто выполните Git checkout для более старой фиксации, например:

$ git checkout HEAT^1 data/train_shakespeare.txt.dvc 

Во-вторых, сделайте проверку dvc:

$ dvc checkout

Вы увидите следующий вывод. Теперь мы восстановили наш файл данных до его предыдущей версии!

Кроме того, если вы хотите сохранить эти изменения набора данных, просто снова зафиксируйте их в git:

$ git commit data/train_shakespeare.txt.dvc -m "reverted data changes."

Идеальный! До сих пор вы изучили большинство основных функций управления версиями данных в DVC. Отличная работа!

Заключительные слова…

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

Попрактикуйтесь в некоторых примерах проектов и изучите документацию по DVC, чтобы улучшить свои навыки с помощью этого замечательного инструмента.

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

Вы также можете связаться со мной в LinkedIn и Twitter.

Еще пара статей от меня, которые, возможно, вам будет интересно прочитать: