Практическое руководство по внедрению MLOps для работы ИИ

Зачем нужны MLOps

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

Благодаря тщательному исследованию алгоритмов машинного обучения в последние годы, ИИ и машинное обучение продемонстрировали большой потенциал для организаций с точки зрения создания новых возможностей для бизнеса, улучшения качества обслуживания клиентов, повышения операционной эффективности и т. д. Однако существует огромный технический разрыв между обучением модели машинного обучения в Jupyter Notebook и развертыванием модели машинного обучения в производственной системе. Как следствие, многие компании не понимают, как достичь своих целей ML/AI, и обращаются за помощью к MLOps, надеясь, что с помощью MLOps они смогут заставить ИИ работать в реальной производственной среде, чтобы по-настоящему воспользоваться преимуществами. решений на основе ИИ и машинного обучения

Поэтому я считаю, что было бы весьма полезно разработать серию практических руководств, объясняющих, как реализовать практики MLOps. Эти руководства будут включать объяснения ключевых компонентов MLOps, рекомендации по проектированию, а также примеры кодов для реализации.

Если мы рассматриваем MLOps исключительно с точки зрения разработки и реализации, любое комплексное решение MLOps состоит из трех основных частей:

  • Первая часть — Конвейер проектирования данных и функций.
  • Вторая часть — Конвейер обучения и переобучения модели ML
  • Третья часть — Вывод модели машинного обучения и конвейер обслуживания

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

Ключевые строительные блоки внедрения решений MLOps

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

Конвейеры проектирования данных и функций

Я начну с пайплайнов проектирования данных и функций, так как данные — это ядро ​​любой системы машинного обучения. Вообще говоря, конвейеры данных относятся к конвейерам извлечения, преобразования и загрузки (ETL), с помощью которых инженеры данных получают необработанные данные из исходных систем, затем очищают и преобразуют данные в надежную и высококачественную информацию для последующих потребителей данных. Если вам интересно понять, как создавать конвейеры данных, у меня есть отдельная статья об этом. Изучите основы инженерии данных — построение конвейеров данных. Пожалуйста, не стесняйтесь читать.

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

Существуют различные методы разработки признаков, включая вменение, обработку выбросов, биннинг, логарифмическое преобразование, горячее кодирование и т. д. Если вы хотите узнать о них больше, я уверен, что вы можете поискать в Google, и в магазинах функций будет много блогов. Однако здесь я хочу подчеркнуть, что, как правило, для проекта машинного обучения (ML) специалисты по данным тратят значительное количество времени и усилий на разработку функций, чтобы получить достойную производительность в своих моделях машинного обучения. Поэтому ценно и необходимо хранить эти функции для обнаружения и повторного использования.Поэтому была разработана концепция «хранилищ функций», и их довольно много — как открытых, так и открытых. -исходные и коммерческие предложения — в магазинах функций. Однако хранилища функций предназначены не только для повторного использования функций.Хранилище функций – это уровень управления данными для машинного обучения, который позволяет вам делиться функциями и находить их, а также создавать более эффективные конвейеры машинного обучения. Хранилища функций можно использовать в двух наиболее важных частях любого решения MLOps — обучении моделей и обслуживании моделей. Таким образом, хранилище функций предоставляет следующие функции и преимущества:

  • Обнаружение и повторное использование функций
  • Последовательная разработка функций для обучения и обслуживания моделей
  • Мониторинг дрейфа данных и признаков
  • Воспроизводимость обучающих наборов данных

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

Конвейеры обучения и переобучения моделей машинного обучения

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

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

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

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

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

Конвейер выведения/обслуживания модели машинного обучения

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

  • Автономный пакетный вывод — вызывается модель машинного обучения для прогнозов с определенной частотой. Частота может быть такой же высокой, как ежедневно, еженедельно или даже дольше, но также может быть такой низкой, как каждую минуту. Когда частота очень низкая (очень часто), вы можете интегрировать потоковые конвейеры данных с выводами модели ML. Когда объем данных для пакетных выводов очень велик, потребуется структура распределенных вычислений. Например, вы можете загрузить модель как пользовательскую функцию Spark (UDF) и применить ее в масштабе, используя распределенные вычисления для параллельных выводов.
  • Вывод в режиме онлайн в режиме реального времени. Модель машинного обучения упакована как конечная точка REST API. Для интерактивных выводов в реальном времени упакованная модель машинного обучения обычно встраивается в приложение, где прогнозирование модели генерируется по запросу. Если объем запросов велик, модель можно упаковать в образ контейнера и развернуть в среде Kubernetes для автоматического масштабирования, чтобы отвечать на большой объем прогнозируемых запросов.

Как объяснялось чуть ранее, данные определяют производительность модели. В реальном мире данные всегда меняются, и производительность модели неизбежно будет меняться, часто ухудшаясь. Поэтому наличие решения для мониторинга, позволяющего отслеживать изменения производственных моделей, а также данных/функций, используемых для их подачи, очень необходимо. После выявления существенных изменений Решение для мониторинга должно иметь возможность либо запускать переобучение модели, либо отправлять уведомления соответствующим командам, чтобы исправления можно было внести немедленно. Это особенно необходимо для критически важных бизнес-приложений, основанных на машинном обучении. Обычно мониторинг модели ML включает следующие 4 категории:

  • Прогнозирование дрифта
  • Дрейф данных/функций
  • Дрейфующая цель
  • Качество данных

Существуют как открытые, так и коммерческие предложения по мониторингу решений ML. Например, Evididently AI — это библиотека Python с открытым исходным кодом для оценки, тестирования и мониторинга производительности модели ML от проверки до производства.

До сих пор мы рассмотрели 3 ключевых конвейера полного решения MLOps — конвейер разработки данных и функций, конвейер обучения и переобучения моделей ML и конвейеры вывода моделей ML, а также мониторинг моделей ML.

Масштабный спектр решения MLOps

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

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

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

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

Если вы хотите получать больше руководств, подробных сведений и идей о современном и эффективном стеке данных и ИИ, подпишитесь на мою бесплатную рассылку — Эффективные данные и стек ИИ. , Спасибо!

Примечание: Если вы еще не стали участником Medium и хотите получить неограниченный доступ к Medium, вы можете зарегистрироваться по моей реферальной ссылке! Я получу небольшую комиссию бесплатно для вас. Большое спасибо за вашу поддержку!