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

Введение в контроль версий данных

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

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

DVC в основном состоит из набора инструментов и процессов, которые отслеживают изменяющиеся версии данных и коллекции предыдущих данных (другими словами, больше не нужно копаться в файлах с именами вроде «old2-v2.html»). Репозитории в DVC обычно относятся к файлам или каталогам, которые находятся под влиянием системы контроля версий. Классифицированное состояние сохраняется для каждого изменения, зафиксированного в файле (например, добавление, удаление, перемещение или изменение).

Краткая история DVC

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

Планирование выпуска DVC (который позиционирует себя как «Git для проектов машинного обучения») со стабилизированными командами и форматами файлов заняло почти три года. Обновленная форма DVC находится в стадии активной разработки, что еще больше улучшит уровни управления данными, чтобы сделать его менее сложным историческим инструментом ML.

Доступ и сохранение больших наборов данных до DVC

Управление крупномасштабными данными без DVC или подобного инструмента сегодня почти немыслимо. До появления этих инструментов статистика машинного обучения обрабатывалась вручную с помощью старых добрых CTRL-C, CTRL-V и обычных файловых деревьев. Вот несколько тактик, используемых для управления громоздкими большими файлами данных:

  • Выделите больше памяти. Один из способов заключался в использовании инструмента для увеличения доступной памяти для ваших библиотек машинного обучения.
  • Меньшие образцы: DVC позволяет отслеживать большие файлы данных (от 10 ГБ до 100 ГБ). Однако до DVC отслеживание таких больших файлов было невозможно, поэтому инженерам приходилось работать с переносимыми выборками из тысяч или сотен тысяч строк одновременно.
  • Выделить больше оборудования. Для запуска алгоритмов использовались отдельные вычислительные машины или облачные сервисы, чтобы избежать сбоев.
  • Изменить формат данных. Другой подход заключался в изменении формата данных с CSV на двоичный, чтобы сохранять большие данные в более компактной форме.
  • Реляционные базы данных. Они использовались для хранения и извлечения больших наборов данных с меньшими затратами.

Влияние DVC на рабочие процессы

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

  • Сравнение моделей может быть дорогостоящим, если модели не будут доработаны во время обучения. DVC может помочь управлять сложностью конвейеров машинного обучения, чтобы вы могли обучать одну и ту же модель снова и снова.
  • При обучении большого количества моделей командам сложно запомнить или отследить, какая модель была обучена с тем или иным типом данных. DVC помогает командам поддерживать файлы версий и легко ссылаться на модели машинного обучения и их результаты.
  • В ML, поскольку к данным обращается огромная аудитория, это может вызвать путаницу среди членов команды, если наборы данных не помечены должным образом в соответствии с надлежащими соглашениями. Однако DVC облегчает правильную маркировку, позволяющую проводить более широкие эксперименты.
  • DVC помогает командам ответить на такие вопросы, как «Как была построена модель X?» поскольку он предлагает воспроизводимость и возможность обмена результатами между проектами.
  • Распределенный характер DVC позволяет пользователям работать на настольных компьютерах с графическими процессорами, ноутбуках и облачных ресурсах, если им требуется больше памяти.
  • DVC стремится исключить необходимость в электронных таблицах, инструментах и ​​​​специальных сценариях для обмена документами для общения. Работа над проектами машинного обучения требует от вас проведения множества экспериментов и обмена их результатами с коллегами, что становится беспокойным, когда вы забываете отслеживать, что вы делали вчера или неделю назад.

Инструменты и платформы DVC

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

ДВК

  • Плюсы: легкие конвейеры, поддержка облачного хранилища.
  • Минусы: тесная связь, избыточность
  • Открытый исходный код? Да
  • Простота в использовании? Да
  • Поддерживает облако? Да

ДОЛТ

  • Плюсы: интерфейс SQL, малый вес.
  • Минусы: не поддерживает изображения и произвольный текст, все еще развивается.
  • Открытый исходный код? Да
  • Прост в использовании? Нет
  • Поддерживает облако? Нет

Толстокожий

  • Плюсы:портативный, надежный и предлагает варианты масштабирования.
  • Минусы: сложная интеграция с существующей структурой.
  • Открытый исходный код? Да
  • Прост в использовании? Нет
  • Поддерживает облако? Да

Дельта озера

  • Плюсы: эффективен для обработки данных, допускает ACID-транзакции.
  • Минусы: менее гибкие, созданы для Spark и больших данных.
  • Открытый исходный код? Да
  • Прост в использовании? Нет
  • Поддерживает облако? Да

Git LFS

  • Плюсы: плавная интеграция, те же разрешения, что и для репозитория Git.
  • Минусы: не масштабируемые серверы.
  • Открытый исходный код? Да
  • Простота в использовании? Да
  • Поддерживает облако? Нет

DVC на Git

DVC использует преимущества Git и работает поверх него. Он использует удаленный репозиторий, такой как Google Cloud, Azure или S3, для хранения больших файлов. Можно сказать, что Git поддерживает контроль версий для кода, но DVC предоставляет его для данных. Проще говоря, вы можете сказать, что DVC = «Machine Learning Git».

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

Преимущества ДВК

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

1. Делитесь моделями через облачное хранилище

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

Серверами в этом случае могут быть любые типы облачных серверов (Microsoft Azure, Amazon S3, Google SSH и т. д.). Поскольку мы делаем git checkout для нашего кода, мы можем сделать то же самое для наших моделей данных в DVC, потому что это инициирует быстрое переключение и скорость восстановления рабочего пространства для всех пользователей для совместного использования моделей через облако.

2. Отслеживайте и визуализируйте модели машинного обучения

Версии функций обработки данных в DVC хранятся в репозиториях данных. Управление версиями достигается с помощью обычных рабочих процессов Git, таких как запросы на вытягивание. Для хранения всех артефактов машинного обучения DVC использует встроенный кэш, который дополнительно синхронизируется с удаленным облачным хранилищем. Таким образом, DVC позволяет отслеживать данные и модели для дальнейшего управления версиями. Основным шагом для создания артефактов путем отслеживания моделей машинного обучения является написание файла dvc.yaml.

3. Воспроизводимость

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

4. Организованные данные машинного обучения

Данные являются основным активом для инженеров машинного обучения, поэтому для эффективного обучения моделей необходима правильная организация данных. DVC использует концепцию конвейера данных для управления версиями данных с помощью Git. Эти конвейеры легкие и позволяют вам организовывать и воспроизводить ваши рабочие процессы. Управление версиями наборов данных способствует автоматизации, воспроизводимости и CI/CD для машинного обучения.

5. Увеличьте темпы науки о данных

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

Представьте себе переход от файла размером 100 ГБ с помощью простой команды git checkout и использование git clone для визуализации больших метафайлов и моделей за считанные секунды или использование наборов подобных команд для обучения систем за более короткое время и получения более быстрых результатов.

Недостатки

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

1. Избыточность

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

2. Риск неправильной конфигурации

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

3. Низкая производительность в неряшливой архитектуре

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

Примечание. DVC не помогает при проектировании всей системы и не контролирует недетерминированное поведение вашей модели.

Тематическое исследование

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

Работа без DVC

  • Чтобы объединить ветвь функций с мастером, каждый раз, когда новая версия обученной модели публиковалась в пакете (Gemfury) в CI.
  • Этот пакет Gemfury разрешал только одну версию модели за раз, чтобы предотвратить конфликт. Загрузка той же версии привела к ошибке. Приходилось вручную увеличивать файл версии.
  • Пакет содержал текстовый файл с эталонным URL-адресом, на котором размещался набор обучающих данных. До DVC это был простой URL-адрес Kaggle вместо AWS или S3.
  • Без облачных инструментов было сложно централизованно обмениваться результатами между командами.

Работа с DVC

Изменения, которые он внес в свой рабочий процесс, перечислены ниже:

  • Учетные данные AWS были добавлены с помощью DVC. Облачные инструменты сделали возможным совместное использование ресурсов.
  • Сценарий извлечения Kaggle был заменен на получение dvc.
  • Репродукция DVC train.dvc эффективно используется для обучения конвейеров вместо сценариев .py.
  • Функция управления версиями DVC позволила Кристоферу связать теги с файлами моделей и выходными данными, чтобы отслеживать все.
  • DVC улучшил тестирование наборов данных и устранил необходимость отслеживать их по опубликованному пакету.
  • DVC предлагала аккуратно хранящиеся и доступные модели и обеспечивала долгосрочные улучшения.

Вывод

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

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

Первоначально опубликовано в блоге Crowdbotics 2 декабря 2020 г.