Машинное обучение (как и «глубокое обучение») становятся все более популярными и широко используемыми. К наиболее частым ситуациям использования машинного обучения, способным быть внедренными практически во всех коммерческих отраслях, относятся следующие: рекомендации, классификация пользователей, подбор релевантного контента. Но ML и DL обычно помогают решению вышеперечисленных ситуаций путем анализа данных определенным алгоритмом обучения, что приводит к вопросу о том, а как ML и DL могут быть интегрированы в приложение?
Рассмотрим процесс прохождения информации через приложение, при котором возможно эффективное использование ML. В качестве примера возьмем систему автоматического общения (чат-бот), которая на основании геолокации, подписок, интересов пользователя и пользовательского запроса способна выдать наиболее релевантный и подходящий ответ.
Рис. 1. Схема обработки пользовательских данных алгоритмами обучения с построением рекомендации
Чтобы добавить ML в приложение, необходимо реализовать две основные функции:
– обучение (также известное как разработка или создание модели). Учебный конвейер («training pipeline») анализирует данные с использованием выбранного вами алгоритма ML и создает модель с выделенными паттернами, использующимися на следующем шаге.
– вывод (также известный как выбор модели, прогнозирование или иногда подсчет очков, ранжирование). Это то, где входные данные из приложения (контент приложения) пропускаются через модель («prediction function»), способную генерировать желаемую рекомендацию.
Главным модулем ML для интеграции является функция вывода. Ввод — это специфические для контекста параметры (информация о пользователе, геолокация, подписчики), а вывод — рекомендация.
Чтобы не отставать от меняющихся тенденций, возможно, потребуется повторная переподготовка модели. Частота переподготовка моделей в связи с динамичностью данных может быть высокой.
Результаты модуля обучения (то есть новые модели) должны быть предоставлены модулю вывода.
Микросервисы — это шаблон архитектуры проектирования и развертывания, в котором приложение состоит из набора функциональных сервисов, а не реализуется как монолитный объект. Микросервисы приносят пользу сложным приложениям, позволяя каждую независимую функцию разрабатывать, внедрять, масштабировать, обновлять и т. д. в качестве своего собственного сервиса.
К основным характеристикам микросервисной архитектуры можно отнести следующие: функциональная декомпозиция, четко определенные интерфейсы, явно публикуемый интерфейс, принцип единственной обязанности и потенциальная многоязычность (использование различных языков программирования для различных сервисов). Каждый сервис полностью автономный и полностековый. Как результат, изменение реализации одного сервиса никак не влияет на работоспособность остальных, а обмен информацией происходит через четко определенные интерфейсы (чаще всего используется HTTP протокол).
Рис. 2. Схема микросервисной архитектуры
На основании вышеупомянутых характеристик микросервисной архитектуры можно сделать вывод о том, что данный тип архитектуры дает значительное преимущество в использовании машинного обучения, т. к. выполнение операций машинного обучения происходит в отдельном от основного приложения сервисе. Данный подход имеет ряд и других преимуществ:
– выполнение обучения и вывода рекомендации может управляться независимо от вызывающего приложения;
– ML алгоритмы и стратегии могут быть изменены без влияния на основное приложение. Например, первичная модель может быть заменена альтернативной моделью или ансамблем без необходимости выпуска обновления в основное приложение;
– управление ресурсами может стать более гибким. В зависимости от используемых алгоритмов ML для эффективного обучения и / или вывода могут потребоваться значительные ресурсы ЦП или специальное оборудование, такое как графические процессоры. Они могут быть развернуты без изменения конфигурации ресурсов основного приложения и могут использоваться совместно несколькими приложениями;
– модели могут использоваться совместно (и моделировать тренировки за счет использования нескольких приложений).
Рис. 3. Результирующая схема применения микросервисной архитектуры для машинного обучения
Все вышеупомянутые качества системы позволяют выполнять тяжеловесные и ресурсоемкие задачи более оперативно, а задачи по переобучению и выдаче рекомендаций пользователям более гибкими в управлении и простыми при разработке.
Литература:
- Chris Richardson. Microservices patterns: With examples in Java / Chris Richardson. — Shelter Island: Manning Publications, 2018. — 520 с.
- Sam Newman. Building Microservices: Designing Fine-Grained Systems / Sam Newman. — Sebastopol: O'Reilly Media, 2018. — 280 с.
- John Carnell. Spring Microservices in action / John Carnell. — Shelter Island: Manning Publications, 2017. — 384 с.
- Morgan Bruce, Paulo A. Pereira. Microservices in Action / Morgan Bruce, Paulo A. Pereira. — Shelter Island: Manning Publications, 2018. — 392 с.
- Nisha Talagala. Why your ML should be deployed as a Micro-service / Nisha Talagala [Электронный ресурс]. — 2017. — Режим доступа: — https://www.parallelm.com/ml-deployed-micro-service/. — Дата доступа: 20.11.2018