6 советов по ускорению и упрощению MLOps

MLOps (операции машинного обучения) - это ключ к повышению производительности бизнеса за счет внедрения науки о данных в производство. Следовательно, это важно для любой компании, которая хочет получить конкурентное преимущество с помощью ИИ. В этом посте я расскажу о шести советах и ​​передовых методах, которые помогут ускорить и упростить ваш путь к производству, основываясь на моем опыте работы с предприятиями по всему миру. Это обзор моего выступления на последней конференции NVIDIA GTC, которую вы можете просмотреть здесь. Надеюсь, вы сочтете это полезным!

Вызов №1: долгий и трудный путь к производству

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

  • Упаковка кода, скриптов, зависимостей и конфигурации в контейнеры
  • Сбор и подготовка данных из оперативных и онлайн-источников в большом масштабе
  • Обучение моделей с крупномасштабными данными, различными алгоритмами и параметрами
  • Внедрение моделей в интерактивные конвейеры реального времени, которые питаются из оперативных данных
  • Мониторинг точности модели и создание автоматизированных рабочих процессов переобучения
  • Добавление инструментов, отслеживания, управления версиями и безопасности на каждом этапе
  • Рефакторинг кода для повышения производительности в соответствии с SLA для приложений
  • Создание конвейеров непрерывной разработки и доставки (CI / CD)

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

Решение: внедрение автоматизации и бессерверный подход

Автоматизация производственного процесса может сократить его с месяцев до недель. Это можно сделать с помощью бессерверных фреймворков, которые автоматически преобразуют простой код или Notebook в управляемые и эластичные микросервисы. В этом могут помочь инструменты с открытым исходным кодом, такие как MLRun, среда оркестровки MLOps с открытым исходным кодом. (Полное раскрытие: моя команда и я поддерживаем это). MLRun автоматически преобразует код в мощные бессерверные функции и позволяет просто объединять несколько функций в пакетную обработку, CI / CD или конвейеры в реальном времени.

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

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

MLRun поддерживает несколько бессерверных механизмов выполнения (job, dask, spark, MPI / Horovod, Nuclio ...) для решения различных рабочих нагрузок в любом масштабе (аналитика данных, машинное обучение, глубокое обучение, потоковая передача, API, обслуживание…). Он поддерживает несколько механизмов конвейера / CI для запуска рабочих процессов машинного обучения, включая конвейеры Kubeflow, действия Github, GitLab CI / CD и т. Д.

Функции также могут использоваться для создания производственных конвейеров в реальном времени, обработки потоковой обработки, обогащения данных, обслуживания моделей, ансамблей, мониторинга и многого другого. Конвейеры реального времени MLRun построены на основе популярного высокопроизводительного бессерверного фреймворка с открытым исходным кодом Nuclio (который мы с моей командой поддерживаем также).

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

Проблема № 2: неэффективность из-за дублирования усилий и разрозненной работы

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

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

Решение: консолидируйте платформы и процессы для науки о данных, инженерии данных и DevOps.

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

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

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

Проблема № 3: недостаточно используемые ресурсы и ограниченное масштабирование

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

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

Решение: используйте общий и эластичный пул ресурсов.

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

Вот один из таких примеров:

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

Задача №4: обработка данных и функций отнимает 80% времени вашей команды.

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

Решение: используйте хранилища функций, чтобы упростить разработку функций.

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

Решением этой проблемы является магазин функций. Хранилище функций - это центральное место для построения конвейера для автоматического создания функций для обучения и производства. Технологические гиганты, такие как Uber, Twitter и Spotify, создали свои собственные магазины функций, а для магазинов функций есть несколько инструментов с открытым исходным кодом и коммерческих инструментов. Выбирая свой, убедитесь, что он соответствует вашим потребностям. Например, если вы планируете принимать потоковые данные, проверьте, может ли хранилище функций выполнять вычисления на лету и выполнять объединения, агрегаты и т. Д., И насколько хорошо он может быть интегрирован с другими компонентами MLOps.

Проблема № 5: неточные модели и ограниченная видимость

Модели останутся точными только в том случае, если у нас останутся те же данные, предположения и поведение. Но это случается редко, поскольку эти изменения все время приводят к дрейфу и неточности модели.

Например, Covid-19 значительно изменил поведение потребителей - от покупки большего количества продуктов до меньшего количества рейсов. Если бы ваши модели не были изменены соответствующим образом, они дали бы неверные и неточные результаты.

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

Решение: убедитесь, что мониторинг и повторное обучение модели встроены в ваш конвейер MLOps.

Включите систему обратной связи и учета дрейфа в свой [1] конвейер MLOps, чтобы измерить разницу между прогнозируемыми и фактическими результатами. Системы должны запускать предупреждения, чтобы вы могли отреагировать на изменение, например, переобучить модель, переключить ее и т. Д.

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

При использовании MLRun действия модели отслеживаются в базах данных и визуализируются с помощью панелей мониторинга Grafana или MLRun. Вот несколько снимков приборной панели:

Задача № 6: постоянно развивающийся набор инструментов и крутая кривая обучения

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

Решение: придерживайтесь «открытого, но управляемого» состояния ума.

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

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