Введение
Работа в области науки о данных может быть особенно сложной при использовании кодов машинного обучения (ML) на реальных производственных линиях или, скажем, когда дело доходит до развертывания. Специалисты по данным обычно хорошо разбираются в создании или выборе наилучшей модели для решения конкретной задачи машинного обучения.
Тем не менее, упаковка, развертывание и поддержка этих моделей для работы с производственной командой — это совершенно другая игра. Решение этой проблемы приходит в виде операций машинного обучения (MLOPs).
MLOps — это инженерная практика, основанная на принципах DevOps для повышения эффективности рабочих процессов. Можно рассматривать MLOps как сборочную линию для машинного обучения (ML). Таким образом, MLOps создает связь между специалистами по данным и производственной командой.
В этой статье будут затронуты следующие темы: Что такое MLOps, его эволюция и необходимость; сравнение MLOps и DevOps; рабочий процесс машинного обучения; и что такое MLflow, его компоненты и как помогает.
Что такое MLOps?
Вкратце MLOps можно определить как «способность применять принципы DevOps к приложениям машинного обучения» или набор лучших практик, используемых для автоматизации сквозного жизненного цикла машинного обучения, что приводит к непрерывной интеграции и непрерывной доставке (CI/ CD). Это концепция, которая относится к слиянию давно зарекомендовавших себя методов DevOps с растущей наукой машинного обучения.
MLOps включает в себя разработку моделей, управление данными, генерацию кода, обучение и переобучение моделей, развертывание и мониторинг моделей. Интегрируя принципы DevOps в проект машинного обучения, MLOps предлагает более разумный жизненный цикл разработки и гибкость для адаптации к постоянно меняющимся потребностям бизнеса.
В то время как DevOps является проверенной практикой для разработки программного обеспечения, для MLOps несколько бизнес-подразделений сотрудничают с группами по анализу данных, чтобы гарантировать, что все находятся на одной странице в отношении того, как создавать, развертывать и поддерживать производственные модели машинного обучения, как и DevOps.
Эволюция MLOps
Эволюцию MLOps можно разделить на следующие этапы:
Доисторическая версия (с открытым исходным кодом):
До появления инструментов с открытым исходным кодом предприятия, использующие машинное обучение, использовали для моделирования проприетарные инструменты, такие как SAS, SPSS и FICO.
Каменный век (Расцвет открытого исходного кода)
В начале 2000-х мы увидели появление инструментов для обработки данных с открытым исходным кодом, таких как Python с использованием стека SciPy, scitkit-learn, TensorFlow и т. д., а также R с использованием dplyr ggplot2 и т. д.
Бронзовый век (с открытым исходным кодом)
С 2015 по 2018 год (бронзовый век) развертывание модели с открытым исходным кодом заключало в себе предыдущий подход, упрощая его масштабирование.
Золотой век (ML как платформа)
Компании теперь знают, что зарабатывать деньги на новом обучении машинному обучению сложно, поскольку тысячи людей обслуживают это предложение, и большинство учебных заведений выполняют такую работу и бесплатно раздают результаты, но создают «платформу», которая:
· Докеризованные стеки машинного обучения с открытым исходным кодом
· Развернул их локально или в облаке через Kubernetes.
Сводка временной шкалы развития MLOps представлена на рисунке 1.
Потребность в MLOps
Большая часть времени специалистов по обработке и анализу данных тратится только на развертывание моделей машинного обучения, в то время как с помощью MLOps это делается очень просто. MLOps создают долгосрочную ценность, в то же время снижая риск, связанный с проектами ML.
MLOps помогает организациям оптимизировать процесс. Автоматизация с помощью MLOps сокращает время выхода на рынок и снижает затраты. Короче говоря, нам нужны MLOps, поскольку они обеспечивают:
а. Долгосрочная ценность
б. Снижает стоимость
в. Оптимизирует процесс
Сравнение MLOps и DevOps
Прививая MLOps вышеперечисленными преимуществами, такая концепция потребует огромного количества ресурсов. К счастью, интерфейсы прикладных программ (API), такие как MLflow, помогают нам в этом.
Что такое MLflow?
MLflow — один из таких API, который интегрирует принципы MLOps в проект с минимальными изменениями в уже существующем коде. Философия MLflow заключается в том, чтобы применять к существующим рабочим процессам как можно меньше ограничений.
Хотя он предназначен для работы с любой библиотекой машинного обучения, он направлен на то, чтобы сделать кодовые базы воспроизводимыми и пригодными для повторного использования разными специалистами по данным.
Основная философия MLflow заключается в том, чтобы наложить как можно меньше ограничений на ваш рабочий процесс: он создан для работы с каждой библиотекой машинного обучения, определяет большинство вещей в коде по соглашению и требует незначительных изменений для интеграции в текущую кодовую базу.
В то же время MLflow намерен взять любую кодовую базу, написанную в его формате, и сделать ее пригодной для повторного использования многими специалистами по данным.
Рабочий процесс машинного обучения и его помощь
Проекты машинного обучения требуют, чтобы специалисты по обработке и анализу данных экспериментировали с широким спектром наборов данных и алгоритмов для создания моделей, которые максимизируют конкретный целевой набор.
Тем не менее, как только ученые построили модель, им также необходимо развернуть ее в производственных условиях, отслеживать производительность модели в течение определенного периода времени и повторно обучать ее, если наблюдается какое-либо ухудшение. Таким образом, работа с ML может быть сложной по следующим причинам:
Отслеживание. При работе с персональными настройками бывает сложно отслеживать и комментировать, какие данные и какие параметры были введены для получения определенного результата.
Воспроизводимость.Разным группам специалистов по данным, работающим над проектом, может быть сложно воспроизвести код, который сработал на вашем ноутбуке в первый раз. Та же проблема может возникнуть при запуске одного и того же кода в большем масштабе на другой платформе.
Упаковка модели. Разные команды используют разные подходы к упаковке модели, что может вызвать проблемы при совместной работе.
Управление версиями моделей. В течение жизненного цикла проекта машинного обучения создается несколько моделей. Не хватает центрального места для управления версиями моделей.
Вышеупомянутые проблемы можно решить с помощью отдельных или нескольких библиотек ML. MLflow позволяет пользователю обучать, развертывать и повторно использовать модели ML с несколькими библиотеками, а другие ученые могут позже использовать эту модель в качестве «черного ящика».
Платформа помогает решить эти проблемы, используя свои компоненты, которые обсуждаются ниже.
Компоненты MLflow
MLflow предлагает четыре компонента для управления рабочим процессом машинного обучения. Эти четыре компонента можно визуализировать, как показано на рис. 2.
Отслеживание MLflow
MLflow Tracking — это пользовательский интерфейс, позволяющий ученым регистрировать параметры, метрики, версии кода и другие аспекты при работе над проектами машинного обучения. Отслеживание можно использовать в любой среде для регистрации результатов. Например, вся команда может использовать его для сравнения результатов от разных пользователей.
Компонент работает на основе концепции прогонов (выполнение кода обработки данных). Каждый запуск записывает следующую информацию:
Проект MLflow
Проекты MLflow — это стандартный формат для упаковки кода обработки данных, который можно использовать повторно. Эти пакеты представляют собой каталог с репозиторием Git или кодом.
Каждый проект использует файл дескриптора, чтобы узнать, как запустить проект (т. е. проект может содержать файл conda.yaml для указания среды Conda). Проект может указывать свойства как:
MLflow Project хорошо работает с отслеживанием MLflow; MLflow автоматически определит версию проекта и другие параметры при совместном использовании. Таким образом, можно запускать существующие проекты MLflow из GitHub и комбинировать их в своем рабочем процессе.
Модель MLflow
Модели можно рассматривать как формат, отражающий особенности модели, которая должна быть развернута в различных средах. Модели сохраняются в каталоге, включая дескриптор и произвольный файл, в котором перечислены все «варианты», в которых модель может быть развернута.
Если оставить поле «вкусы» в стороне, формат YAML модели MLflow может содержать:
Реестр моделей MLflow
Реестр моделей MLflow представляет собой централизованное хранилище моделей, API и пользовательских интерфейсов для управления полным жизненным циклом модели ML. Реестр моделей представляет концепции, которые определяют и помогают в течение всего жизненного цикла модели MLflow.
Подводя итог, мы обсудили жизненный цикл проекта модели машинного обучения и потенциальные проблемы, которые могут возникнуть на разных этапах проекта. Как философия MLOps может помочь нам решить такие проблемы и как MLflow как инструмент может быть полезен для нас.
Ведущие компании, занимающиеся цифровой трансформацией, часто нанимают экспертов MLOps, имеющих опыт в понимании и управлении жизненным циклом MLflow, а также в том, как с легкостью создавать и запускать модели, а также отслеживать и кодировать среды и т. д.
Биография автора:
Хассан Шервани — руководитель отдела аналитики данных и науки о данных в Royal Cyber. Он имеет докторскую степень в области информационных технологий и анализа данных и приобрел десятилетний опыт работы в ИТ-индустрии, стартапах и научных кругах. Хассан также получает практический опыт машинного (глубокого) обучения для энергетики, розничной торговли, банковского дела, права, телекоммуникаций и автомобилестроения в рамках своих усилий по профессиональному развитию.