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

‍Что такое воспроизводимость машинного обучения?

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

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

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

Данные. В современных условиях данные постоянно меняются. Если данные меняются, мы влияем на результат. Добавление новых наборов данных, изменение распределения данных и изменение размера выборки — все это влияет на выходные данные модели. Чтобы сохранить воспроизводимость, управление версиями и отслеживание наборов данных должно быть тщательно задокументировано.

Рекомендуемая литература: Важность контроля версий в ML

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

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

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

Теперь давайте посмотрим, почему воспроизводимость важна в нашем путешествии по машинному обучению.

Почему воспроизводимость важна в машинном обучении?

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

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

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

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

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

Как добиться воспроизводимости машинного обучения?

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

Версии

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

DVC. Управление версиями данных (DVC) создает метафайлы как указатели на сохраненные наборы данных и модели, сохраняя их локально или в облаке, что позволяет управлять версиями данных и моделей.

MLflow. Инструмент MLflow с открытым исходным кодом используется для управления жизненным циклом машинного обучения. Его различные функции облегчают работу ученым и разработчикам данных. Его можно использовать с различными библиотеками и инструментами машинного обучения.

Рекомендуемая литература: MLflow против DVC

WandB: Weights & Biases (WandB) – это платформа, которая помогает отслеживать эксперименты, управлять наборами данных и моделями. WandB упрощает отслеживание, сравнение и управление версиями экспериментов по машинному обучению и глубокому обучению.

Дрифт / Непрерывное обучение

Дрейф — частая проблема серийных моделей. Незначительное изменение среды или данных повлияет на результат модели. Есть два распространенных способа уменьшить дрейф в производственных моделях — постоянный мониторинг и непрерывная подготовка новых данных. Это несколько распространенных инструментов, используемых для мониторинга системы машинного обучения.

Amazon Sagemaker: Amazon SageMaker Model Monitor помогает поддерживать высокое качество моделей, автоматически распознавая ошибочные прогнозы моделей, развернутых в рабочей среде, и предупреждая об этом. SageMaker подходит для бизнеса корпоративного уровня.

Очевидно: явно помогает в оценке и мониторинге моделей машинного обучения во время проверки и производства. Он предоставляет множество функций визуализации для легкого обнаружения проблемы.

Отслеживание и регистрация экспериментов

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

DVC: DVC отслеживает каждую метрику, связанную с проектом, и содержит список метрик, в котором хранятся значения метрик для отслеживания прогресса.

Отслеживание MLflow. Функция отслеживания в MLflow позволяет автоматически отслеживать и регистрировать параметры, показатели и версии кода для каждого запуска и развертывания модели.

Реестр моделей

Реестр моделей — это шаг в MLOps (жизненный цикл машинного обучения). Это сервис, который отслеживает и контролирует модели на различных этапах жизненного цикла машинного обучения. Вот несколько инструментов, которые могут помочь вам с реестром моделей.

Реестр моделей MLflow. Функция реестра в MLflow позволяет отслеживать все, начиная с проверки концепции и заканчивая производством.

Машинное обучение Azure. Машинное обучение Azure — это облачное решение для обучения, развертывания и мониторинга приложений машинного обучения. Вы можете использовать пользовательский интерфейс или API для создания и регистрации модели в Azure.

Сотрудничество и общение

Создание моделей или проведение исследований требует командной работы от специалиста по данным до исследователя. Отсутствие связи в процессе строительства может быстро привести к проблемам. Есть несколько инструментов и платформ, которые могут помочь вам в совместной работе более эффективно.

Pachyderm: позволяет пользователям совместно работать над проектами и рабочими процессами машинного обучения.

WandB: упрощает совместную работу, позволяя приглашать других пользователей для редактирования и комментирования вашего проекта.

Comet: позволяет вам сотрудничать и делиться творениями с другими.

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

Git и Git LFS

Git — самая популярная система контроля версий. Git хранит записи об изменениях ваших файлов, чтобы вы могли видеть, что вы сделали, и при необходимости вернуться к предыдущим версиям. Git также упрощает совместную работу, позволяя объединять изменения нескольких людей в один источник. Мы все слышали о Git, но что такое Git LFS и как он работает?

Что такое Git LFS?

Хранилище больших файлов Git работает с большими файлами, такими как аудиосэмплы, фильмы и большие наборы данных, которые заменяются текстовыми указателями и сохраняются на удаленном сервере, например GitHub или Enterprise, с помощью Git. Он позволяет создавать версии крупных файлов, а большее пространство репозитория позволяет быстрее клонировать и извлекать.

Как использовать Git LFS?

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

Установка Git LFS

  • Настройте учетную запись Git и выберите типы файлов, которыми должен управлять Git LFS в каждом репозитории Git.

Отслеживание Git LFS "*.psd/csv"

  • Третьего шага нет. Просто зафиксируйте и отправьте на GitHub, как обычно; например, если ваша текущая ветка называется main:

Git добавить файл.psd

Git commit -m «Добавить файл дизайна»

Git push origin main

Ограничения Git-LFS

  • GIT-LFS сложна для новых пользователей.
  • Принятие или удаление Git LFS из репозитория — это постоянное действие, которое требует перезаписи истории и удаления исходных SHA фиксации.
  • Отсутствие управления конфигурацией, как это известно в настоящее время.
  • Ему нужен сервер LFS, который не предоставляется каждой службой хостинга Git.
  • Он не подходит для наборов данных машинного обучения, так как хранилище Git-LFS имеет некоторые ограничения.
  • Данные обучения хранятся на удаленном сервере и должны быть получены через Интернет, что создает проблемы с пропускной способностью при использовании размещенного решения Git-LFS.
  • Существуют проблемы с простотой загрузки файлов данных в систему облачного хранилища, поскольку ключевые продукты Git-LFS от трех крупнейших поставщиков Git позволяют хранить файлы LFS на их сервере.

Что такое ДВК?

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

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

Почему ДВК лучше?

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

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

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

Организованные данные

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

Обмен моделями через облачное хранилище

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

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

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

Увеличение производительности

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

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

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

Заключение

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

Первоначально опубликовано на — https://censius.ai/blogs/dvc-vs-git-and-git-lfs-in-machine-learning-reproducibility