Как внедрить ML-модель в production

автор рубрика
Как внедрить ML-модель в production

Сегодня мы поговорим о проблемах внедрения Machine learning модели в production, а также о том, как быть к ним готовым. Читайте у нас об основных аспектах внедрения ML-моделей: хранение и извлечение данных, фреймворки и инструменты, обратная связь и непрерывная интеграция (continuous integration).

Что не так с Data Science

Data scientist’ы хороши, когда дело касается анализа и визуализации данных, построения моделей, но они не всегда стремятся довести свои результаты в источник доходов. Это связано с тем, что развертывание моделей Machine Learning в production требует больше знаний по разработке ПО и DevOps. Согласно данным Venturebeat 87% проектов Data Science не становятся частью рынка услуг [1], в время как Redapt повышает эти цифры до 90% [2].

Цель машинного обучения — решать проблемы. Но они могут быть решены, когда машинное обучение активно применяется в реальных системах, а клиенты довольны результатами. В вышеупомянутой статье от Redapt говорится о пропасти IT и Data Science. А чтобы ML-модели приносили прибыль и результаты, необходимо эту пропасть преодолеть.

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

Многие Data scientist’ы полагают, что внедрением в производство должны заниматься разработчики. Но с учётом развития инструментов Data Science, это становиться уже не так очевидно. Например, TFX (TensorFlow Extended), Mlflow, Kubeflow могут упростить весь процесс развертывания модели. Знающие об этих инструментах специалисты могут стать более конкурентоспособными на рынке труда.

Тем не менее, назревает вопрос «Как наиболее эффективно внедрить модели машинного обучения в production?».

Из модели в production

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

При составлении плана стоит рассмотреть 3 основных аспекта:

  1. Хранение и извлечение данных
  2. Фреймворки и инструменты
  3. Обратная связь и непрерывная интеграция

Хранение и извлечение данных

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

  • Как хранятся тренировочные данные?
  • Какие размеры данных?
  • Каким образом будет осуществляться извлечение данных для обучения?
  • Каким образом будет осуществляться извлечение данных для прогнозирования?

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

Данные могут храниться локально, в облачном хранилище или в гибридном виде. Имеет смысл хранить данные там, где будет происходить обучение модели. В качестве облачных хранилищ можно использовать GCS (Google Cloud Storage), AWS S3 (Amazon Web Service) или Azure.

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

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

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

  • Данные будут исходить из веб-страниц?
  • Извлекаться посредством API?
  • Какой режим извлечения используется: пакетный или в реальном времени?

Если данные исходят из веб-страниц, то какого типа данные? Данные от пользователей на веб-страницах могут быть структурированными (CSV, JSON) или неструктурированными данными (изображения, видео, звук), а механизм вывода должен быть достаточно надёжным, чтобы извлекать, обрабатывать и делать прогнозы. Данные могут быть очень важны для пользователей, поэтому необходимо принимать во внимание конфиденциальность. Здесь можно рассмотреть федеративное обучение (Federated learning).

Качество данных тоже важно. Новые данные могут отличаться от тренировочных. Может их нужно как-то предобработать с помощью настроенных автоматизированных средств.

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

Фреймворки и инструменты

Фреймворки, инструменты, программное и аппаратное обеспечение необходимы для эффективно развертывания модели Machine Learning в production. Это могут быть такие фреймворки и/или библиотеки, как Tensorflow, Pytorch и Scikit-Learn; а также облачные среды, такие как AWS, GCP и Azure. Не стоит думать, что нужно придерживаться одних и тех же технологий, их можно комбинировать.

При выборе фреймворков стоит задуматься над вопросами:

  • Какой фреймворк лучше всего подходит для поставленной задачи?
  • Он с открытым или закрытым исходным кодом?
  • Какие технологии/платформы использует клиент?

Мы уже рассматривали о различии Pytorch и TensorFlow здесь. А также писали о причинах перехода на Pytorch компании Lyft тут. Pytorch и TensorFlow — фреймворки с открытым исходным кодом имеют хорошую поддержку, а также позволяют выводить ML-модели в production.

Ещё один вопрос, на который нужно ответить: сколько платформ/технологий поддерживает фреймворк? Поддерживает ли выбранный фреймворк десктопную или мобильную среды? Работает с Windows, GNU/Linux или MacOS? Легко ли настроить или реализовать в этой целевой среде? Эти вопросы важны, поскольку может быть много инструментов для исследования и экспериментов над проектом, но мало инструментов, которые адекватно поддерживают вашу модель в реальном времени.

Обратная связь и непрерывная интеграция

Проекты Data Science никогда не стоят на месте. Эту часть проектирования необходимо учитывать с самого начала. Здесь имеет место ответить на такие вопросы:

  • Каким образом исходит обратная связь от ML-модели в реальном времени?
  • Как настроить непрерывную интеграцию?

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

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

 

 

Есть ещё масса проблем при развёртывания в production моделей Machine Learning. В этой статье мы затронули основные. В следующей статье на основе вышесказанного рассмотрим пример развёртывания модели. А о том как создавать, обучать, тестировать и внедрять в производство модели машинного обучения на реальных примерах Data Science, вы узнаете на наших курсах в лицензированном учебном центре обучения и повышения квалификации IT-специалистов в Москве.

Источники
  1. https://venturebeat.com/2019/07/19/why-do-87-of-data-science-projects-never-make-it-into-production/
  2. https://www.redapt.com/blog/why-90-of-models-never-make-it-to-production
Комментировать

Ваш адрес email не будет опубликован. Обязательные поля помечены *