Управление версиями

Вы когда-нибудь задавались вопросом, насколько велика и сложна наша операционная система или наша поисковая система? Согласно данным, Windows XP состоит из 40 миллионов строк кода, Facebook состоит из 62 миллионов строк кода, а Google состоит из 2 миллиардов строк кода [1]. Эти цифры огромны, и вы можете задаться вопросом: «Как их инженеры могут сотрудничать, чтобы поддерживать эти коды и следить за тем, чтобы каждый инженер в этих компаниях имел один и тот же код с одной и той же версией в одно и то же время?». Если говорить о количестве их разработчиков, то в этих крупных компаниях тысячи инженеров обслуживают эти огромные системы. Ответ заключается в том, что нам нужно использовать программное обеспечение для контроля версий.

Использование Git

В настоящее время у нас есть очень стабильное и зрелое программное обеспечение для контроля версий, такое как Git. Есть другое программное обеспечение с той же целью, такое как SVN и Mercurial. Но в этой статье я расскажу только о Git из-за его популярности. Использовать Git в вашей локальной сети очень просто, вы можете начать контролировать версию своих кодов после выполнения нескольких шагов инициализации и изучения нескольких синтаксисов. Но интересно то, что у Git есть несколько провайдеров для размещения вашего кода в облаке, таких как Github, Gitlab и Bitbucket. Они позволяют вам свободно создавать резервные копии вашего кода и их истории версий в их облачном сервисе, и вы можете пригласить других для совместной работы над вашим проектом. Судя по изображению выше, рабочий процесс Git очень прост. На локальном компьютере вы можете добавить свой код в git, а затем зафиксировать его. После внесения всех изменений вы можете отправить их на удаленный сервер (в данном случае на сервер Github), а другие инженеры могут получить их и начать совместную работу [2]. Я дам вам небольшое руководство, чтобы начать свое путешествие по git.

Установка Git

Сначала вы можете скачать git по этой ссылке (https://git-scm.com/downloads). После процесса установки вы можете использовать эту команду, чтобы проверить, установлен ли git уже на вашем компьютере.

$ git --version

Иногда, прежде чем начать использовать Git, вам также необходимо определить свое имя пользователя и адрес электронной почты git.

$ git config --global user.email ["[email protected]](mailto:%[email protected])"
$ git config --global [user.name](<http://user.name/>) "Your Name"

Создайте новую папку для вашего репозитория (репозиторий — это место для вашего исходного кода) и инициализируйте контроль версий внутри вашего репозитория.

$ mkdir your_repository
$ cd your_repository
$ git init

Создайте свой первый коммит

После инициализации вы можете создать новый файл (например, файл python), добавить его в git и зафиксировать. После этого вы можете просмотреть логи через команду log.

$ touch hello_world.py
$ git add .
$ git commit -m "My first commit"
$ git log

Поднимите свой уровень

Git очень полезен и в настоящее время считается основным инструментом для инженеров по машинному обучению, разработчиков программного обеспечения и специалистов по данным. Но если мы хотим углубиться в Git, у него есть несколько ограничений, и одно из них — обработка больших файлов. Git был разработан для работы с файлами исходного кода, и их размер обычно не превышает 1 МБ. В случае проекта машинного обучения наши наборы данных будут иметь больший размер, и Git довольно сложно с этим справиться. В настоящее время в Git есть служба под названием Git LFS для обработки файлов большого размера, но я познакомлю вас с другим решением, которое называется DVC (Контроль версий данных).

Использование DVC (Контроля версий данных)

DVC или Data Version Control — это Git-подобное программное обеспечение или библиотека для контроля версий, которая использует git в качестве основы для создания версий наборов данных [3]. На изображении выше мы можем увидеть рабочий процесс DVC. Во-первых, нам нужно добавить файлы в DVC, а затем DVC создаст метаданные для этих файлов. Эти метаданные будут переданы в git и будут использоваться для управления версиями данных. Интересная особенность DVC заключается в том, что мы можем использовать облачных провайдеров, таких как S3, Azure, Google Cloud и даже Google Drive, в качестве нашего хранилища данных (в реализации у нас будет наш исходный код в Github и наши большие данные в Google Drive). Как и Git, я дам вам очень простое руководство по началу работы с вашим локальным DVC.

Установка ДВК

Скачать DVC можно по этой ссылке (https://dvc.org). Если вы являетесь пользователем macOS или Linux, вы можете установить его через brew или apt. После завершения установки убедитесь, что он работает, используя приведенную ниже команду. После завершения установки мы хотим использовать наш репозиторий your_repository для этого руководства. Вам нужно изменить каталог на папку ваш_репозиторий из руководства по использованию Git, а затем инициализировать DVC.

$ brew install dvc
$ dvc --version

После завершения установки мы хотим использовать наш репозиторий your_repository для этого руководства. Вам нужно изменить каталог на папку «ваш_репозиторий» из руководства по использованию Git, а затем инициализировать DVC.

$ dvc init

После этого вы можете зафиксировать изменения с помощью git.

$ git status
Changes to be committed:
        new file:   .dvc/.gitignore
        new file:   .dvc/config
        ...
$ git add .
$ git commit -m "Initialize DVC"

Следующим шагом будет создание или копирование файлов больших наборов данных в папку «ваш_репозиторий». (В этом примере я создам пустой файл CSV)

$ touch dataset.csv
$ dvm add dataset.csv
$ git add .
$ git commit -m "Add dataset"

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

Добавить удаленное облачное хранилище

Это неудобно, если мы храним только версию нашего набора данных на локальном компьютере. Наш проект будет становиться все больше и больше, поэтому нам нужно поделиться нашим набором данных с другими инженерами. Мы добавим удаленное облачное хранилище, чтобы сохранять наши данные в облаке, чтобы другие могли получить к ним доступ и извлечь их. Прежде всего, вы можете создать новую папку на своем Google Диске, а затем скопировать идентификатор папки из URL-адреса.

$ dvc remote add -f --default myremote gdrive://<your folder id>                                                                                             
$ git add .dvc/config
$ git commit -m "Configure remote storage"

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

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

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

использованная литература

[1]: https://www.informationisbeautiful.net/visualizations/million-lines-of-code

[2]: https://git-scm.com/doc

[3]: https://dvc.org