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

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

В сегодняшнем блоге я хотел бы сделать один шаг назад, чтобы объяснить:

  • Почему MLOps необходим и необходим?
  • Что еще более важно, какие проблемы пытается решить MLOps?
  • Какие компоненты инфраструктуры машинного обучения необходимы для решения задачи?

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

Я хотел бы начать с объяснения того, чем система на основе машинного обучения уникальна и почему эта уникальность требует решения MLOps.

Чем уникальна система, управляемая машинным обучением

Чтобы понять, почему MLOps необходимы, и оценить, какие возможности вашей организации необходимо создать в отношении MLOps, нам нужно сначала понять, чем уникальна система, управляемая ML. Я резюмировал «уникальность» системы, управляемой ML, в следующих 4 аспектах:

  • Ориентированность на данные. Ориентация на данные означает не только то, что успех решения на основе машинного обучения зависит от качества и количества данных, но и внутренние характеристики самих данных определяют, какие возможности MLOps требуются.
  • Сотрудничество между несколькими командами и несколькими наборами навыков. В большинстве организаций создание и эксплуатация системы на основе машинного обучения обычно требует усилий нескольких команд, включая специалистов по данным, инженеров по данным, инженеров по машинному обучению, инженеров DevOps и т. д. Я кратко объясню, как структура команды может повлиять на разработку рабочего процесса и процесса MLOps.
  • Динамическая экосистема. Существует чрезвычайно богатая и быстрорастущая экосистема машинного обучения и искусственного интеллекта. Например, существует немало библиотек с открытым исходным кодом для алгоритмов машинного обучения и глубокого обучения (ГО), таких как Scikit Learn, Tensorflow, Keras, PyTorch, Fast.ai и Hugging Face. Кроме того, существуют различные приложения искусственного интеллекта, которые могут быть созданы на основе машинного обучения, включая контролируемое, частично контролируемое, самоконтролируемое, неконтролируемое, обучение с подкреплением и так далее. В зависимости от того, какие алгоритмы и приложения создают ваши системы машинного обучения, требуемые возможности MLOps также различаются.
  • Непрерывное изменение: системы, основанные на машинном обучении, строятся и изучаются на основе данных. Когда базовые данные изменяются, модель и алгоритм машинного обучения также необходимо обновлять соответствующим образом. Системы, основанные на машинном обучении, всегда находятся в состоянии непрерывного изменения, и на самом деле этому нет конца. Поэтому мониторинг как изменений данных, так и изменений производительности модели становится очень необходимым. Чем быстрее меняется бизнес-среда и данные, тем более необходимо «переобучение» и «переобучение» модели машинного обучения. Таким образом, вам действительно нужно понять свои бизнес-требования и изменение ландшафта данных, а затем определить, насколько важно создать решение для мониторинга в вашем рабочем процессе MLops.

Давайте углубимся в то, как каждый из этих 4 аспектов влияет на ваш выбор для общего решения MLOps.

Ориентирован на данные

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

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

Выше приведены последствия, которые влечет за собой тот факт, что «ML ориентирован на данные». Эти последствия требуют решения различных компонентов вашей инфраструктуры машинного обучения, таких как мониторинг данных и моделей, а также хранилища функций.

Сотрудничество в нескольких командах и с несколькими наборами навыков

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

  • Конвейеры разработки данных и функций, которые обычно разрабатываются командой разработчиков данных.
  • Конвейеры обучения и переобучения моделей машинного обучения, которые обычно разрабатываются и принадлежат группе специалистов по обработке и анализу данных.
  • ML Model Inference/Serving Pipeline, которые обычно разрабатываются и принадлежат инженерам ML или группе инженеров-технологов.

Чтобы надежно автоматизировать эти 3 конвейера, необходимы и другие ключевые компоненты — непрерывная интеграция/непрерывное обучение/непрерывное развертывание (CI/CT/CD) и инфраструктура как код (IaC). Эти компоненты обычно принадлежат команде инфраструктуры или команде DevOps.

Как правило, эти команды используют очень разные сервисы и наборы инструментов. Например, специалисты по данным в основном используют блокнот Jupyter для обучения и экспериментов с моделями машинного обучения, инженеры данных используют Python, SQL и Spark для разработки конвейеров данных, в то время как инженеры машинного обучения должны не только понимать, как работает модель машинного обучения, чтобы преобразовать блокнот специалистов по данным в модульные и тестируемые коды, они также должны знать базовую инфраструктуру (например, Container, Kubernetes и DevOps) и конвейеры DevOps (например, действия Github и конвейеры Azure DevOps).

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

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

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

Динамическая экосистема

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

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

  • Алгоритмы модели машинного обучения — Scikit Learn, Tensorflow, Keras, Pytorch, fastai, Hugging Face Transformers, XGboost
  • ML Распределенное обучение — Ray, Horovod, Dask
  • Мониторинг данных и моделей — Очевидно, возникают, почему лаборатории, Deepchecks,
  • Жизненный цикл машинного обучения / Управление конвейером — mlflow, ZenML
  • Абстракция инфраструктуры машинного обучения — Metaflow, kubeflow
  • Веб-приложения для обмена данными и результатами машинного обучения — Streamlit, Gradio
  • Оркестровка рабочего процесса — Metaflow, kubeflow, ZenML, Argo, Luigi, Dagster, Prefect
  • Варианты использования — компьютерное зрение (классификация изображений, сегментация изображений, обнаружение объектов), обработка естественного языка (разговорная, классификация текста, ответы на вопросы, обобщение), аудио (классификация аудио, обнаружение речи), табличное (классификация, регрессия), обучение с подкреплением и робототехника

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

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

Непрерывное изменение состояния

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

  • Мониторинг Вообще говоря, мониторинг машинного обучения включает мониторинг данных, мониторинг функций и мониторинг моделей. Мониторинг данных относится к пониманию того, изменились ли сводная статистика, распределение и тенденции данных. Подобно мониторингу данных, мониторинг функций позволяет понять, как функции, используемые для обучения моделей, изменились с течением времени. Мониторинг моделей фокусируется на ухудшении производительности ключевых показателей и выявлении неизвестных проблем до того, как они нанесут реальный ущерб вашим продуктам и бизнесу. Если мы возьмем модель классификации в качестве примера, эти ключевые показатели будут включать точность классификации, точность, полноту, F1 и матрицу путаницы. Для систем, основанных на машинном обучении, которые потенциально могут генерировать предвзятость и несправедливость по отношению к определенной группе, также важно получить представление о том, как модели достигают результатов в определенных когортах. Искорените и смягчите влияние потенциальной предвзятости модели на маргинализированные группы с помощью многомерных сравнений.
  • Автоматизация Поскольку итерации систем на основе машинного обучения могут быть очень быстрыми, нереально просить кого-либо вручную реагировать на изменения путем повторной разработки новых функций, переобучения моделей машинного обучения и повторного развертывания моделей. , особенно если у вас запущены сотни моделей машинного обучения. Во-первых, этот ручной подход очень трудоемкий, и вы должны постоянно расширять свою команду по науке о данных и машинному обучению, чтобы реагировать на изменения. Во-вторых, такой подход невозможно протестировать, и если системы, основанные на машинном обучении, не пройдут достаточное тестирование и проверку, может возникнуть больше ошибок. В-третьих, этот ручной подход может занять несколько дней и никогда не будет достаточно быстрым, чтобы обработать изменения и развернуть новую обновленную версию моделей машинного обучения. Поэтому необходимо автоматизировать процесс переобучения и повторного развертывания этой модели. Надежный мониторинг плюс интенсивная непрерывная интеграция / непрерывное обучение / непрерывное развертывание (CI / CT / CD) могут обеспечить эту автоматизацию. Вот почему MLOps очень необходим, особенно для организаций, которые используют много моделей машинного обучения или имеют очень сложные и критически важные системы, использующие модели машинного обучения как неотъемлемую часть.

Краткое содержание

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

Надеюсь, вам понравилось читать этот блог. Пожалуйста, не стесняйтесь подписываться на меня на Medium, если вы хотите получать уведомления о публикации новых блогов. Обычно я публикую 1 или 2 статьи о данных и ИИ каждую неделю.

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

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