Как стать автором
Обновить
481.28
Рейтинг
SkillFactory
Школа Computer Science. Скидка 10% по коду HABR

Актуальные инструменты контроля версий данных в 2020 году

SkillFactoryGitСистемы управления версиямиBig DataData Engineering
Перевод
Автор оригинала: Guy Smoilovsky
Все мы знаем и любим Git. И, конечно же, были придуманы его аналоги для управления версиями данных, чтобы эксперименты с данными были воспроизводимыми, а действия команд — согласованными. Сегодня, в преддверии старта нового потока курса по Data Science, делимся с вами материалом о сравнении нескольких систем контроля версий. Подробности сравнения — как обычно, под катом.



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

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

Проблемы управления данными


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

Пространство хранилища


Обучающие данные могут занимать значительное место в репозиториях git. Это связано с тем, что git разработан для отслеживания изменений в текстовых, но в небольших бинарных файлах. Поэтому, когда наборы тренировочных данных содержат большие аудио- или видео-файлы, в дальнейшем это приносит много проблем. Каждое изменение в наборе обучающих данных приводит к дублированию набора данных в истории репозиториев. Такое дублирование не только делает репозиторий большим, но и значительно замедляет его клонирование и перебазирование (git rebase).

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


В попытке управлять версиями (будь то код или пользовательский интерфейс) даже среди технарей широко распространена тенденция «управлять версиями», добавляя номер версии или слово в конец имени файла.

В контексте данных это означает, что проект может содержать файлы data.csv, data_v1.csv, data_v2.csv, data_v3_finalversion.csv и т.д. Эта плохая привычка — не просто клише: с плохих привычек версионирования на самом деле начинают большинство разработчиков, дата-сайентистов и экспертов пользовательского интерфейса.

Photo by Steve Johnson/Unsplash

Многопользовательская среда


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

Обзор лучших альтернатив в управлении версиями данных


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

DVC


DVC, или Data Version Control, — это один из многих доступных инструментов с открытым исходным кодом, упрощающих работу с проектами Data Science и ML.

Используется подход Git'а в том смысле, что дает интерфейс командной строки, который настраивается в несколько простых шагов. DVC, как предполагает его название, фокусируется не только на версионировании данных. Инструмент помогает командам управлять конвейерами и моделями машинного обучения. В конце концов, DVC способствует согласованности вашей команды и воспроизводимости ваших моделей.

Преимущества


  • Лёгкий, исходники открыты, подходит для всех основных облачных платформ и типов хранилищ данных.
  • Гибкий, независимый от формата и фреймворка, лёгкий в применении.

Недостатки


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



Delta Lake


Delta Lake — это слой хранилища с открытым исходным кодом, помогающий улучшить состояние озёр данных. Это делается предоставлением транзакций ACID, версионированием данных, управлением метаданными и управлением версиями данных. Инструмент находится ближе к слою абстракции озёр данных, заполняя пробелы там, где большинство озёр данных ограничены.

Преимущества


  • Предлагает множество функций, которые могут не входить в вашу систему хранения данных, например ACID-транзакции или эффективное управление метаданными.
  • Снижает необходимость в ручном управлении версиями данных и ручном решении других связанных с данными вопросов, позволяя разработчикам сосредоточиться на построении продуктов поверх озёр данных.

Недостатки


  • Delta Lake часто бывает перегибом для большинства проектов: инструмент был разработан для работы со Spark на больших данных.
  • Требуется специальный формат данных, а это означает, что инструмент теряет в гибкости и зависим в отношении текущих форматов.
  • Основная задача инструмента — действовать в качестве скорее уровня абстракции данных, а это может быть не тем, что нужно вашей команде, и также может игнорировать разработчиков, которым нужно решение легче.



Git LFS


Git LFS — разработанное рядом разработчиков расширение Git'а с открытым исходным кодом. Это ПО предназначено для устранения больших файлов, которые могут быть добавлены в ваше хранилище (например фотографий и наборов данных) с помощью указателей. Указатели легче, они указывают на хранилище LFS. Таким образом, когда вы отправляете изменения из вашего репозитория в основной, обновление не занимает много времени или места. Это очень легковесный вариант для управления данными.

Преимущества


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

Недостатки


  • Git LFS для хранения ваших данных требует выделенных серверов. Это, в свою очередь, в конечном счёте приводит к тому, что ваши группы дата-сайентистов оказываются заблокированными, а также к увеличению объема инженерной работы.
  • Серверы Git LFS не предназначены для масштабирования в отличие от DVC, который хранит данные в более общем и легко масштабируемом хранилище объектов, например S3.
    Очень специфичен и может потребовать использования ряда других инструментов для иных этапов рабочего процесса в Data Science.



Pachyderm


Pachyderm — одна из немногих платформ для сбора данных в этом списке. Цель Pachyderm — создать платформу, позволяющую легко воспроизводить результаты моделей ML, управляя всем рабочим процессом обработки данных. В этом отношении Pachyderm — Docker для данных.

Pachyderm использует контейнеры Docker для упаковки вашей среды выполнения. Это позволяет легко воспроизвести результат. Сочетание версионирования данных и Docker дает специалистам Data Science и командам DevOps легко развёртывать модели и обеспечивать их согласованность. Компания Pachyderm взяла на себя обязательства по Биллю о правах в Data Science, в котором изложены основные цели продукта: воспроизводимость, знание истории данных, сотрудничество, инкрементальность и автономия, а также абстрагирование инфраструктуры. Эти принципы определяют многие из особенностей продукта и позволяют командам воспользоваться преимуществ инструмента в полной мере.

Преимущества


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

Недостатки


  • Кривая обучения круче из-за большого количества подвижных частей, таких как сервер Kubernetes, необходимый для управления бесплатной версией Pachyderm.
  • При наличии различных технических компонентов сложно будет интегрировать Pachyderm в уже существующую инфраструктуру.



Dolt


Dolt — уникальное решение для версионирования данных. В отличие от некоторых других представленных вариантов, которые просто содержат данные о версии, Dolt — это база данных SQL с версиями в стиле Git. Но в отличие от Git'а, где в центре файлы, у Dolt в центре  — таблицы. Это означает, что вы можете обновлять и изменять данные, не беспокоясь о потере изменений. Приложение ещё новое, в ближайшем будущем планируется сделать его на 100 % совместимым с Git и MySQL.

Преимущества


  • Инструмент лёгкий, и его код частично открыт.
  • SQL-интерфейс делает его доступнее для аналитиков данных в сравнении с более непонятными вариантами.

Недостатки


  • По сравнению с другими версиями баз данных Dolt — еще не зрелый продукт.
  • Dolt — это база данных, то есть вы должны перенести свои данные в Dolt, чтобы получить его преимущества.
  • Dolt создан для версионирования таблиц. Это означает, что он не охватывает другие типы данных (например изображения или текст в свободной форме).



LakeFS


LakeFS позволяет командам строить повторяющиеся, атомарные и версионированные операции с данными об озёрах. На сцене LakeFS новичок, но он наносит удар. Предоставляется Git-подобная модель ветвления и управления версиями, предназначенная для работы с вашим озером данных, и она масштабируется до петабайт данных.

Подобно Delta Lake, LakeFS обеспечивает соответствие ACID в ваших озёрах данных. Однако LakeFS поддерживает как AWS S3, так и Google Cloud Storage в качестве бэкендов, а это означает, что для использования всех преимуществ не требуется использовать Spark.

Преимущества


  • Предоставляет расширенные возможности, такие как ACID транзакции, для лёгкости использования облачного хранения данных (например S3 и GCS), и всё это вне зависимости от формата.
  • Легко масштабируется, поддерживая очень большие озёра данных. Способен предоставить контроль версий как для среды разработки, так и для производственной среды.

Недостатки


  • LakeFS — относительно новый продукт, поэтому по сравнению с другими решениями функции и документация могут меняться быстрее.
  • Ориентирован на версионирование данных, а это означает, что вам потребуется использовать ряд иных инструментов для других этапов рабочего процесса Data Science.



Вам Действительно нужно управление версиями данных?


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



К некоторым данным, таким как веб-трафик, другие данные только добавляются. Это означает, что данные добавляются, но редко изменяются. То есть версии данных, необходимых для создания воспроизводимых результатов, — это даты начала и окончания. Важно это отметить, поскольку в таких случаях, возможно, вам удастся избежать установки упомянутых выше инструментов. Вам всё равно нужно будет управлять датами начала и окончания, чтобы убедиться, что вы тестируете систему и модели на одних и тех же данных. Однако в таких случаях не обязательно фиксировать все данные в системе версионирования.

Итоги


Управление версиями данных — необходимый шаг для команд дата-сайентистов, позволяющий избежать несоответствий выходных данных. Используете ли вы Git-LFS, DVC или другой обсуждаемый инструмент, потребуется некоторая версионность данных. Эти инструменты версионирования данных могут помочь сократить объем памяти, необходимый для управления наборами данных, а также помочь отслеживать вносимые членами команды изменения. Без инструментов для версионирования данных ваш дежурный специалист может отлаживать модель в 3 часа ночи из-за проблемы, возникшей по причине несовпадения результатов моделирования. Однако всего этого можно избежать, если ваши команды специалистов по работе с данными внедрили процесс управления версиями данных.

На тот случай если вы задумали сменить сферу или повысить свою квалификацию — промокод HABR даст вам дополнительные 10% к скидке указанной на баннере.

image



Рекомендуемые статьи


Теги:skillfactorygitdata scienceсистема управления версиямиbig data
Хабы: SkillFactory Git Системы управления версиями Big Data Data Engineering
Всего голосов 15: ↑13 и ↓2 +11
Просмотры4.7K

Похожие публикации

Лучшие публикации за сутки

Информация

Дата основания
Местоположение
Россия
Сайт
www.skillfactory.ru
Численность
201–500 человек
Дата регистрации
Представитель
Skillfactory School

Блог на Хабре