Что такое контроль версий?

Компонент управления конфигурацией программного обеспечения, контроль версий, также известный как контроль версий или контроль версий, [1] - это управление об изменениях документов, компьютерных программ, крупных веб-сайтов и других сборников информации. Изменения обычно обозначаются числовым или буквенным кодом, называемым номером ревизии, уровнем ревизии или просто ревизией. Например, начальный набор файлов - версия 1. Когда сделано первое изменение, результирующим набором будет версия 2 и так далее. Каждая ревизия связана с отметкой времени и лицом, вносящим изменение. Редакции можно сравнивать, восстанавливать и объединять с файлами некоторых типов.

Почему контроль версий?

Важный вопрос: Зачем нам нужен контроль версий? Я выполняю задачу на своем локальном компьютере / облаке и развертываю ее на своем сервере, как только модель будет готова, и только если я закончил ее тестирование. Так зачем мне нужен контроль версий?

Теперь давайте посмотрим на сценарий: я работаю в такой компании, как Botsupply, и у меня есть клиенты. Я парень AI. Я произвел поиск ответов на вопросы по модели на основе TF-IDF. Я развернул его на своем сервере. На следующем этапе я внес в него некоторые изменения, и на моих фиктивных данных моя точность увеличилась. Развернул на сервере. Теперь из-за сложности тестовых данных производительность снижается. Теперь я хочу вернуться к предыдущей версии.

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

Как сделать контроль версий?

  1. Один из самых популярных способов контроля версий - Git. Очень популярен, и практически все знают, как им пользоваться сегодня. (По крайней мере, каждый программист и специалист по данным).
    Теперь Git - это действительно круто, но для специалиста по данным синхронизировать все папки в Git - непростая задача. Контрольные точки моделей и размер данных занимают все ненужное пространство. Итак, один из способов - хранить весь набор данных на облачном сервере, таком как Amazon S3, и все воспроизводимые коды в Git и генерировать модели на лету. Кажется хорошим выбором, но использование нескольких наборов данных в одном коде вызовет путаницу и может привести к смешиванию наборов данных в долгосрочной перспективе, если не задокументировано должным образом.
    Кроме того, если данные изменяются / обновляются и все фиксации не задокументированы должным образом, модель может потерять контекст.

Результаты без контекстов смертоноснее яда - Джованни Тоски, Botsupply

Если файлы не могут быть воспроизведены на лету, можно использовать git-application.



2. Второй вариант - сделать все в среде песочницы, посмотреть результаты и, если не удастся, не фиксировать изменения в рабочей среде. Блокнот Ipython (Jupyter Notebook) - хороший способ сделать это. Код можно разбить на более мелкие сегменты в разных ячейках, и тогда результаты будут видны на каждом этапе, что делает Ipython одним из лучших редакторов для машинного обучения.



3. Лучшим вариантом (на мой взгляд) является Контроль версий данных или DVC. DVC во многом похож на Git (например, структура команд), но он также обеспечивает отслеживание шагов, зависимостей между шагами, зависимостей между кодом и файлами данных и всеми аргументами запуска кода, поэтому он объединяет контроль версий для кода и для базы данных.



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

Что такое DVC и 5 веских причин его использовать?

DVC делает проекты в области науки о данных воспроизводимыми за счет автоматического построения графа зависимостей данных (DAG). Ваш код и зависимости могут легко совместно использоваться Git, а данные - через облачное хранилище (AWS S3, GCP) в единой среде DVC.

  1. Это полностью открытый исходный код, и его можно установить с помощью простых команд с помощью pip:
pip install dvc #pip3 for python3

2. Команда аналогична git:

dvc run python train_model.py data/train_matrix.p data/model.p

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

4. DVC может не только упростить вашу работу в единой воспроизводимой среде, но и упростить совместное использование этой среды с помощью Git, включая зависимости (DAG) - захватывающая функция совместной работы, которая дает возможность воспроизвести результаты исследования на разных компьютерах.

5. Файлы данных могут быть совместно использованы любыми облачными службами обмена файлами, такими как AWS S3 или GCP Storage, поскольку DVC не отправляет файлы данных в репозитории Git.

Чтобы узнать больше об установке и использовании DVC, ознакомьтесь со следующей записью в блоге:



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