- Что такое система контроля версий? 5 систем управления версиями с открытым исходным кодом
- Почему так важны системы контроля версий?
- 5 систем контроля версий с открытым исходным кодом
- Mercurial
- Bazaar
- Актуальные инструменты контроля версий данных в 2020 году
- Проблемы управления данными
- Пространство хранилища
- Управление версиями данных
- Многопользовательская среда
- Обзор лучших альтернатив в управлении версиями данных
- Преимущества
- Недостатки
- Delta Lake
- Преимущества
- Недостатки
- Git LFS
- Преимущества
- Недостатки
- Pachyderm
- Преимущества
- Недостатки
- Преимущества
- Недостатки
- LakeFS
- Преимущества
- Недостатки
- Вам Действительно нужно управление версиями данных?
- Итоги
Что такое система контроля версий? 5 систем управления версиями с открытым исходным кодом
Система контроля версий относится к процессу, касающемуся систематизации версий, объединяемых при редактировании и совместной работе. Хотя контроль версий как термин рассматривается в контексте разработки программного обеспечения, на самом деле, он необходим для профессионалов разных отраслей.
Для крупных проектов по разработке программного обеспечения системы контроля версий отслеживают множество изменений в исходном коде.
Почему так важны системы контроля версий?
Все системы контроля версий обладают следующими возможностями:
- позволяют команде программистов одновременно работать над одним и тем же проектом;
- минимизируют конфликты между разработчиками, которые работают над одним проектом;
- автоматически создают архив каждой версии, включающий в себя все изменения проекта.
Существуют разные системы управления версиями, но какие отличительные черты делают их уникальными? Перечислим три их главные группы:
- в соответствии с расположением репозитория: централизованные и распределенные;
- в соответствии с методами проверки слияния и передачи кода: блокирующие, использующие слияние до фиксации и выполняющие фиксацию до слияния;
- системы управления версиями могут выполнять небольшие операции или операции с файлами.
5 систем контроля версий с открытым исходным кодом
CVS является самой популярной и широко применяемой системой контроля версий на сегодняшний день. После выпуска в 1986 году она быстро стала общепринятым стандартом. CVS приобрела популярность благодаря простой системе поддержки файлов и ревизий в актуальном состоянии.
Существует ряд IDE для CVS , включая Xcode ( Mac ), Eclipse , NetBeans и Emacs .
- Это проверенная временем система, которая используется более трех десятилетий;
- Существует много IDE , которые используют CVS .
- Перемещение или переименование файлов не включается в обновление версии;
- Предоставление символических ссылок на файлы связано с некоторыми рисками безопасности;
- Отсутствие поддержки атомарных операций может привести к повреждению исходного кода;
- Медленные операции установления меток и ветвления;
- Слабая поддержка двоичных файлов.
Еще одна распространенная система управления версиями. Большинство проектов с открытым исходным кодом и крупные платформы, такие как Ruby , Python Apache , используют SVN . Из-за огромной популярности существует множество версий и доступных IDE .
Достоинства системы контроля версий SVN
- Новая и значительно улучшенная система, основанная на CVS ;
- Допускает атомарные операции;
- Операции в ветке проекта малозатратны;
- Доступны различные плагины IDE .
- Выдает ошибки при переименовании файлов и каталогов;
- Недостаточно команд для управления репозиторием;
- SVN работает медленнее по сравнению с другими системами управления версиями.
Благодаря распределенной форме управления без необходимости использования оригинального программного обеспечения многие проекты с открытым исходным кодом предпочитают Git .
- Почти все отрицательные черты CVS/SVN устранены;
- Высокая скорость работы распределенной системы контроля версий;
- Легкость проведения различных операций с ветками проекта;
- Пользователи могут получить доступ к полному дереву истории в режиме офлайн;
- Предлагает высоко распределенную одноранговую модель.
- Высокий порог вхождения для пользователей SVN ;
- Ограниченная поддержка Windows по сравнению с Linux .
Mercurial
Считается эффективной для крупных проектов, в которых участвует много разработчиков и проектировщиков. Mercurial – это высокопроизводительная система, предлагающая оптимальную скорость. Она также известна своей простотой и подробной документацией.
Достоинства Mercurial системы контроля версий
- Низкий порог вхождения по сравнению с Git ;
- Подробная документация;
- Распределенная модель;
- Высокопроизводительная система с отличной скоростью.
- Нельзя объединить две родительские ветки;
- Основана на расширениях, а не сценариях;
- Недостаточно гибкая, чтобы выполнять операции по умолчанию.
Bazaar
Уникальна тем, что может использоваться с распределенной и централизованной базой кода. Это делает ее универсальной системой контроля версий. Кроме этого Bazaar позволяет использовать детальный уровень управления. Ее можно легко развернуть в самых разных сценариях, что делает ее адаптивной и гибкой для всевозможных проектов.
- Идеально подходит для разнообразных проектов;
- Предоставляет гораздо более продвинутый набор команд и поддержку IDE ;
- Включает в себя настраиваемый набор функций, который подходит для разнообразных проектов.
- Является новой и недостаточно проработанной системой управления версиями;
- Отсутствует поддержка IDE .
Что касается популярности, порога вхождения, производительности и адаптивности, рассмотренные в этой статье системы контроля версий существенно превосходят другие.
Актуальные инструменты контроля версий данных в 2020 году
Все мы знаем и любим Git. И, конечно же, были придуманы его аналоги для управления версиями данных, чтобы эксперименты с данными были воспроизводимыми, а действия команд — согласованными. Сегодня, в преддверии старта нового потока курса по Data Science, делимся с вами материалом о сравнении нескольких систем контроля версий. Подробности сравнения — как обычно, под катом.
Используете вы логистическую регрессию или нейронную сеть, в любом случае все модели требуют данных для обучения, тестирования и развертывания. Создание используемых моделями наборов данных и управление ими требуют много времени и пространства, а кроме прочего, могут быстро запутаться из-за того, что несколько пользователей изменяют и обновляют данные. Это, в свою очередь, приводит к неожиданным результатам, поскольку дата-сайентисты продолжают выпускать новые версии моделей, но тестируют их на разных наборах данных.
Но множество дата-сайентистов могли бы заниматься подготовкой и разработкой моделей на основе одних тех же наборов учебных данных. Это приведёт к большому количеству тонких изменений в наборе данных, которые, в свою очередь, после развёртывания моделей могут привести к неожиданным результатам. В этом посте обсуждаются проблемы, приходящие с управлением данными, и даётся обзор топовых инструментов для машинного обучения и управления версиями данных.
Проблемы управления данными
Управление наборами данных и таблицами для Data Science и моделей машинного обучения требует от дата-сайентистов и инженеров значительных временных затрат. Всё, начиная с управления хранилищем, версиями данных и заканчивая доступом, требует большого ручного труда.
Пространство хранилища
Обучающие данные могут занимать значительное место в репозиториях git. Это связано с тем, что git разработан для отслеживания изменений в текстовых, но в небольших бинарных файлах. Поэтому, когда наборы тренировочных данных содержат большие аудио- или видео-файлы, в дальнейшем это приносит много проблем. Каждое изменение в наборе обучающих данных приводит к дублированию набора данных в истории репозиториев. Такое дублирование не только делает репозиторий большим, но и значительно замедляет его клонирование и перебазирование (git rebase).
Управление версиями данных
В попытке управлять версиями (будь то код или пользовательский интерфейс) даже среди технарей широко распространена тенденция «управлять версиями», добавляя номер версии или слово в конец имени файла.
В контексте данных это означает, что проект может содержать файлы data.csv, data_v1.csv, data_v2.csv, data_v3_finalversion.csv и т.д. Эта плохая привычка — не просто клише: с плохих привычек версионирования на самом деле начинают большинство разработчиков, дата-сайентистов и экспертов пользовательского интерфейса.
Многопользовательская среда
При работе в производственной среде одна из самых больших проблем — работа с другими дата-сайентистами. Если вы не используете какую-то форму управления версиями в среде совместной работы, файлы удаляются, изменяются и перемещаются, а вы не знаете, кто и что сделал. Кроме того, сложно вернуть данные в исходное состояние. Когда речь заходит об управлении моделями и наборами данных, это одна из самых больших проблем.
Обзор лучших альтернатив в управлении версиями данных
Версионирование данных — один из ключей к автоматизации разработки модели машинного обучения в разрезе команды. Очень сложно разработать собственную систему для управления процессом, но, к счастью, в этом нет необходимости. Давайте посмотрим на 6 великолепных инструментов с открытым исходным кодом, которые ваша команда может применять, чтобы упростить управления данными и версионирование.
DVC, или Data Version Control, — это один из многих доступных инструментов с открытым исходным кодом, упрощающих работу с проектами Data Science и ML.
Используется подход Git’а в том смысле, что дает интерфейс командной строки, который настраивается в несколько простых шагов. DVC, как предполагает его название, фокусируется не только на версионировании данных. Инструмент помогает командам управлять конвейерами и моделями машинного обучения. В конце концов, DVC способствует согласованности вашей команды и воспроизводимости ваших моделей.
Преимущества
Недостатки
Delta Lake
Delta Lake — это слой хранилища с открытым исходным кодом, помогающий улучшить состояние озёр данных. Это делается предоставлением транзакций ACID, версионированием данных, управлением метаданными и управлением версиями данных. Инструмент находится ближе к слою абстракции озёр данных, заполняя пробелы там, где большинство озёр данных ограничены.
Преимущества
Недостатки
Git LFS
Git LFS — разработанное рядом разработчиков расширение Git’а с открытым исходным кодом. Это ПО предназначено для устранения больших файлов, которые могут быть добавлены в ваше хранилище (например фотографий и наборов данных) с помощью указателей. Указатели легче, они указывают на хранилище LFS. Таким образом, когда вы отправляете изменения из вашего репозитория в основной, обновление не занимает много времени или места. Это очень легковесный вариант для управления данными.
Преимущества
Недостатки
Pachyderm
Pachyderm — одна из немногих платформ для сбора данных в этом списке. Цель Pachyderm — создать платформу, позволяющую легко воспроизводить результаты моделей ML, управляя всем рабочим процессом обработки данных. В этом отношении Pachyderm — Docker для данных.
Pachyderm использует контейнеры Docker для упаковки вашей среды выполнения. Это позволяет легко воспроизвести результат. Сочетание версионирования данных и Docker дает специалистам Data Science и командам DevOps легко развёртывать модели и обеспечивать их согласованность. Компания Pachyderm взяла на себя обязательства по Биллю о правах в Data Science, в котором изложены основные цели продукта: воспроизводимость, знание истории данных, сотрудничество, инкрементальность и автономия, а также абстрагирование инфраструктуры. Эти принципы определяют многие из особенностей продукта и позволяют командам воспользоваться преимуществ инструмента в полной мере.
Преимущества
Недостатки
Dolt — уникальное решение для версионирования данных. В отличие от некоторых других представленных вариантов, которые просто содержат данные о версии, Dolt — это база данных SQL с версиями в стиле Git. Но в отличие от Git’а, где в центре файлы, у Dolt в центре — таблицы. Это означает, что вы можете обновлять и изменять данные, не беспокоясь о потере изменений. Приложение ещё новое, в ближайшем будущем планируется сделать его на 100 % совместимым с Git и MySQL.
Преимущества
Недостатки
LakeFS
LakeFS позволяет командам строить повторяющиеся, атомарные и версионированные операции с данными об озёрах. На сцене LakeFS новичок, но он наносит удар. Предоставляется Git-подобная модель ветвления и управления версиями, предназначенная для работы с вашим озером данных, и она масштабируется до петабайт данных.
Подобно Delta Lake, LakeFS обеспечивает соответствие ACID в ваших озёрах данных. Однако LakeFS поддерживает как AWS S3, так и Google Cloud Storage в качестве бэкендов, а это означает, что для использования всех преимуществ не требуется использовать Spark.
Преимущества
Недостатки
Вам Действительно нужно управление версиями данных?
При всех преимуществах версионирования данных не всегда нужно вкладывать огромные усилия в управление ими. Например, большая часть версий данных предназначена, чтобы помочь отслеживать наборы данных, которые сильно меняются с течением времени.
К некоторым данным, таким как веб-трафик, другие данные только добавляются. Это означает, что данные добавляются, но редко изменяются. То есть версии данных, необходимых для создания воспроизводимых результатов, — это даты начала и окончания. Важно это отметить, поскольку в таких случаях, возможно, вам удастся избежать установки упомянутых выше инструментов. Вам всё равно нужно будет управлять датами начала и окончания, чтобы убедиться, что вы тестируете систему и модели на одних и тех же данных. Однако в таких случаях не обязательно фиксировать все данные в системе версионирования.
Итоги
Управление версиями данных — необходимый шаг для команд дата-сайентистов, позволяющий избежать несоответствий выходных данных. Используете ли вы Git-LFS, DVC или другой обсуждаемый инструмент, потребуется некоторая версионность данных. Эти инструменты версионирования данных могут помочь сократить объем памяти, необходимый для управления наборами данных, а также помочь отслеживать вносимые членами команды изменения. Без инструментов для версионирования данных ваш дежурный специалист может отлаживать модель в 3 часа ночи из-за проблемы, возникшей по причине несовпадения результатов моделирования. Однако всего этого можно избежать, если ваши команды специалистов по работе с данными внедрили процесс управления версиями данных.
На тот случай если вы задумали сменить сферу или повысить свою квалификацию — промокод HABR даст вам дополнительные 10% к скидке указанной на баннере.