SlideShare ist ein Scribd-Unternehmen logo
1 von 34
“SERVING” ML
МОДЕЛЕЙ В
МИКРОСЕРВИСНОЙ
АРХИТЕКТУРЕ
• Разговор о моделях в микросервисах, не о моделях
• только бэкенд, только много запросов и жирные
модели
• Это не про машин лерниниг
На входе много
сырых данных
Как получить ML модель
Математическая
модель, которая
могёт!
ETL
Train
Validation
ML модель
• Модели бывают разные и предназначение у них совершенно
разное
• По сути своей каждая модель - программа, которая оптимально
решает заданную задачу.
Serving модели
• использовать модель, до нее надо “достучаться”. Вы можете:
1. внедрить в свой микросервис.
2. создать новый микросервис, который будет обслуживать
только эту модель.
Внедрить в свою программу
• Работает внутри программы - меньше накладных расходов
• Вы получаете из коробки CI - версионирование и менеджмент
• Вы получаете из коробки CD - запуск и остановка
• microservice обвязка уже есть: Service discovery, Health
checking, load balancing, circuit breaking, metrics, logs, central
configuration
Очевидные плюсы
Внедрить в свою программу
CI/CD не всегда сработает - разные жизненные циклы
Очень не видные минусы
• Скорее всего модель будут разрабатывать
data scientist (а вот они наменяют)
• Модели могут обновляться раз в 30 минут
(можно положить в базу и динамически
подтаскивать)
Внедрить в свою программу
Разные требования к железу
плюсы превращаются… превращаются
плюсы…
• Для fastText не проблема занимать на жестком диске > 2GB
• tensoflow в некоторых случаях эффективнее работает на
GPU
• Модели могут занимать много места в памяти
• Модель может быть требовательна к CPU и отъедать его у
других задач
Внедрить в свою программу
Много фреймворков написанных на разных языках
и вообще, внедрить не получится
• Переписывать сервис на новый язык, если вдруг DS применил
новую библиотеку - НЕТ (а он применит)
• Реализовывать алгоритм работы модели на своем языке - НЕТ
(пусть DS сами пишут)
• Некоторые библиотеки плохо работают без batch (например
спарк)
Внедрить в свою программу
Очень редко когда модель используется изолированно
модели бегают толпами
Все предыдущие проблемы можно смело умножать на 2.5
Внедрить в свою программу
• Работает внутри программы - меньше накладных расходов
• Вы получаете из коробки CI - версионирование и менеджмент
• Вы получаете из коробки CD - запуск и остановка
• microservice обвязка уже есть: Service discovery, Health
checking, load balancing, circuit breaking, metrics, logs,
central configuration
Очевидные плюсы
Отдельный микросервис
• Работает отдельно и никого не трогает (можно
запускать на любом железе)
• Отдельный цикл
разработки/тестирования/развертывания
Отдельный микросервис
• Можно делать любой pipeline
• Или даже DAG
Отдельный микросервис
Много фреймворков написанных на разных языках никто не
отменял. Писать для каждого microservice обвязку - НЕТ!
все круто, НО есть нюанс
Что делать? Как быть?
• Если модель одна, маленькая и никогда не
меняется - встраивайте
• Если вы уверены, что сможете сделать обвязку для
всех моделей, которые придумают DS - значит у вас
есть лишнее время и ресурсы - пишите.
• А что делать тому у кого много DS, много моделей и
они появляются как грибы?
Искать готовое решение
oryx.io - Отличный serving, но к сожалению
только Spark
- Нет возможности делать Pipeline
Поддерживает любую модель, но не
масштабируется и нет там обвязки микросервисов
есть tensorflow-serving, но это только tensorflow
Сделать своё!
globula
hydro-serving
Мы у мамы программисты
Что мы сделали?
Выбрали писать свой сервис для каждой модели, но
хитро - с использованием Sidecar Pattern
Что такое sidecar? и как это
работает?
Sidecar - отдельный процесс, который берет на себя всю работу с
инфраструктурой, оставляя основному сервису только его логику
Что нам дает Sidecar?
• Отделяем логику сервиса
от инфраструктуры
• Proxy до других сервисов
• Логгирование
• Трассирование сообщений
• Метрики
• Resilient inter-service
communication
Плюсы от использования
Sidecar
• 1 имплементация, чтобы править всеми
моделями
• Код для сервинга модели очень простой - надо
просто поднять HTTP сервер
• Интеграция с уже существующей
инфраструктурой
• Гибкие возможности по управлению трафиком
между моделями
Implementations
• Prana [Netflix] - java. Archived.
• go-micro
[https://github.com/micro/micro/tree/master/car] - go
• linkerd [https://github.com/linkerd/linkerd] - java
• envoy [https://github.com/lyft/envoy] - C++
• Istio [Google, IBM and Lyft] - go and C++
Мы выбрали Envoy и используем
следующий функционал
• Метрики - (мы дописали интеграцию с Prometheus)
• Tracing - используется Zipkin (можно подключить
любой OpenTracing)
• Service Discover
• Outlier detection
• Client Load Balancing
• Circuit Breaker
• Connection pooling
• Shadowing
Что мы делаем?Первое: собираем и версионируем микросервисы из моделей, достаем
метаинформацию по структуре данных - избавляем DS от этой головной боли
Что мы делаем?Второе: запускаем это всё в кластере ECS/Kubernetes/Swarm -
помогаем OpsTeam
• Запускаем собранные
микросервисы на
существующем кластере
• Используем родные
абстракции кластеров
• Прячем это все от DS
Что мы делаем?
Третье: управляем взаимосвязью моделей в кластере через Sidecar
Что мы делаем?
Четвертое: интегрируемая с текущими системами мониторинга
Что мы можем?Blue-green deployment, canary - легко, спасибо sidecar за это, не
надо никаких дополнительных Load Balancer
Что мы можем?
Blue-green deployment, canary - легко, спасибо sidecar за это, не
надо никаких дополнительных Load Balancer
Roadmap
• Поддержка Kubernetes
• Переход на Istio - как средство управления mesh
• Переход на GRPC для взаимодействия
• Реактивные пайплайны
• DAG
Имена! Пароли! Явки!
hydrosphere.io
://github.com/Hydrospheredata/hydro-se
???
Eduard Dautov (Provectus): СКОРИНГ ML МОДЕЛЕЙ В МИКРОСЕРВИСНОЙ АРХИТЕКТУРЕ
Eduard Dautov (Provectus): СКОРИНГ ML МОДЕЛЕЙ В МИКРОСЕРВИСНОЙ АРХИТЕКТУРЕ

Weitere ähnliche Inhalte

Was ist angesagt?

Денис Чистяков: Workflow. Работа над проектом в Яндексе
Денис Чистяков: Workflow. Работа над проектом в ЯндексеДенис Чистяков: Workflow. Работа над проектом в Яндексе
Денис Чистяков: Workflow. Работа над проектом в ЯндексеYandex
 
Самодиагностика сервисов на базе платформы .NET
Самодиагностика сервисов на базе платформы .NETСамодиагностика сервисов на базе платформы .NET
Самодиагностика сервисов на базе платформы .NETAndrew Gubskiy
 
Типовая сборка и деплой продуктов в Positive Technologies
Типовая сборка и деплой продуктов в Positive TechnologiesТиповая сборка и деплой продуктов в Positive Technologies
Типовая сборка и деплой продуктов в Positive TechnologiesPositive Hack Days
 
Пакетный менеджер CrossPM: упрощаем сложные зависимости | Александр Ковалев
Пакетный менеджер CrossPM: упрощаем сложные зависимости | Александр КовалевПакетный менеджер CrossPM: упрощаем сложные зависимости | Александр Ковалев
Пакетный менеджер CrossPM: упрощаем сложные зависимости | Александр КовалевPositive Hack Days
 
Алексей Кабанов
Алексей КабановАлексей Кабанов
Алексей КабановSQALab
 
Agile Java Development компания JazzTeam - Техническая презентация Xml2Selenium
Agile Java Development компания JazzTeam - Техническая презентация Xml2SeleniumAgile Java Development компания JazzTeam - Техническая презентация Xml2Selenium
Agile Java Development компания JazzTeam - Техническая презентация Xml2Seleniumjazzteam
 
Rambler.iOS #5: TDD и VIPER
Rambler.iOS #5: TDD и VIPERRambler.iOS #5: TDD и VIPER
Rambler.iOS #5: TDD и VIPERRAMBLER&Co
 
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Инженерны...
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Инженерны...20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Инженерны...
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Инженерны...IT-Portfolio
 
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...SECON
 
Winium — это как Selenium, только под Windows
Winium — это как Selenium, только под WindowsWinium — это как Selenium, только под Windows
Winium — это как Selenium, только под WindowsSQALab
 
Rambler.iOS #5: VIPER a la Rambler
Rambler.iOS #5: VIPER a la RamblerRambler.iOS #5: VIPER a la Rambler
Rambler.iOS #5: VIPER a la RamblerRAMBLER&Co
 
Развитие сообщества Open DevOps Community
Развитие сообщества Open DevOps CommunityРазвитие сообщества Open DevOps Community
Развитие сообщества Open DevOps CommunityPositive Hack Days
 
Symfony в архитектуре Upwork Enterprise
Symfony в архитектуре Upwork EnterpriseSymfony в архитектуре Upwork Enterprise
Symfony в архитектуре Upwork EnterpriseDmitry Semenov
 
Как мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows DockerКак мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows DockerPositive Hack Days
 
Расширяемая платформа для создания и управления автоматизированными тестами н...
Расширяемая платформа для создания и управления автоматизированными тестами н...Расширяемая платформа для создания и управления автоматизированными тестами н...
Расширяемая платформа для создания и управления автоматизированными тестами н...jazzteam
 
Аналитика в проектах: TFS + Qlik
Аналитика в проектах: TFS + QlikАналитика в проектах: TFS + Qlik
Аналитика в проектах: TFS + QlikPositive Hack Days
 
Куда движется управление инфраструктурой
Куда движется управление инфраструктуройКуда движется управление инфраструктурой
Куда движется управление инфраструктуройIvan Evtukhovich
 
Непрерывная интеграция и автотесты. Сравнительный анализ инструментов
Непрерывная интеграция и автотесты. Сравнительный анализ инструментовНепрерывная интеграция и автотесты. Сравнительный анализ инструментов
Непрерывная интеграция и автотесты. Сравнительный анализ инструментовSQALab
 
Инструмент ChangelogBuilder для автоматической подготовки Release Notes
Инструмент ChangelogBuilder для автоматической подготовки Release NotesИнструмент ChangelogBuilder для автоматической подготовки Release Notes
Инструмент ChangelogBuilder для автоматической подготовки Release NotesPositive Hack Days
 

Was ist angesagt? (20)

A.pleshkov
A.pleshkovA.pleshkov
A.pleshkov
 
Денис Чистяков: Workflow. Работа над проектом в Яндексе
Денис Чистяков: Workflow. Работа над проектом в ЯндексеДенис Чистяков: Workflow. Работа над проектом в Яндексе
Денис Чистяков: Workflow. Работа над проектом в Яндексе
 
Самодиагностика сервисов на базе платформы .NET
Самодиагностика сервисов на базе платформы .NETСамодиагностика сервисов на базе платформы .NET
Самодиагностика сервисов на базе платформы .NET
 
Типовая сборка и деплой продуктов в Positive Technologies
Типовая сборка и деплой продуктов в Positive TechnologiesТиповая сборка и деплой продуктов в Positive Technologies
Типовая сборка и деплой продуктов в Positive Technologies
 
Пакетный менеджер CrossPM: упрощаем сложные зависимости | Александр Ковалев
Пакетный менеджер CrossPM: упрощаем сложные зависимости | Александр КовалевПакетный менеджер CrossPM: упрощаем сложные зависимости | Александр Ковалев
Пакетный менеджер CrossPM: упрощаем сложные зависимости | Александр Ковалев
 
Алексей Кабанов
Алексей КабановАлексей Кабанов
Алексей Кабанов
 
Agile Java Development компания JazzTeam - Техническая презентация Xml2Selenium
Agile Java Development компания JazzTeam - Техническая презентация Xml2SeleniumAgile Java Development компания JazzTeam - Техническая презентация Xml2Selenium
Agile Java Development компания JazzTeam - Техническая презентация Xml2Selenium
 
Rambler.iOS #5: TDD и VIPER
Rambler.iOS #5: TDD и VIPERRambler.iOS #5: TDD и VIPER
Rambler.iOS #5: TDD и VIPER
 
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Инженерны...
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Инженерны...20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Инженерны...
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Инженерны...
 
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
 
Winium — это как Selenium, только под Windows
Winium — это как Selenium, только под WindowsWinium — это как Selenium, только под Windows
Winium — это как Selenium, только под Windows
 
Rambler.iOS #5: VIPER a la Rambler
Rambler.iOS #5: VIPER a la RamblerRambler.iOS #5: VIPER a la Rambler
Rambler.iOS #5: VIPER a la Rambler
 
Развитие сообщества Open DevOps Community
Развитие сообщества Open DevOps CommunityРазвитие сообщества Open DevOps Community
Развитие сообщества Open DevOps Community
 
Symfony в архитектуре Upwork Enterprise
Symfony в архитектуре Upwork EnterpriseSymfony в архитектуре Upwork Enterprise
Symfony в архитектуре Upwork Enterprise
 
Как мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows DockerКак мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows Docker
 
Расширяемая платформа для создания и управления автоматизированными тестами н...
Расширяемая платформа для создания и управления автоматизированными тестами н...Расширяемая платформа для создания и управления автоматизированными тестами н...
Расширяемая платформа для создания и управления автоматизированными тестами н...
 
Аналитика в проектах: TFS + Qlik
Аналитика в проектах: TFS + QlikАналитика в проектах: TFS + Qlik
Аналитика в проектах: TFS + Qlik
 
Куда движется управление инфраструктурой
Куда движется управление инфраструктуройКуда движется управление инфраструктурой
Куда движется управление инфраструктурой
 
Непрерывная интеграция и автотесты. Сравнительный анализ инструментов
Непрерывная интеграция и автотесты. Сравнительный анализ инструментовНепрерывная интеграция и автотесты. Сравнительный анализ инструментов
Непрерывная интеграция и автотесты. Сравнительный анализ инструментов
 
Инструмент ChangelogBuilder для автоматической подготовки Release Notes
Инструмент ChangelogBuilder для автоматической подготовки Release NotesИнструмент ChangelogBuilder для автоматической подготовки Release Notes
Инструмент ChangelogBuilder для автоматической подготовки Release Notes
 

Ähnlich wie Eduard Dautov (Provectus): СКОРИНГ ML МОДЕЛЕЙ В МИКРОСЕРВИСНОЙ АРХИТЕКТУРЕ

Виктор Стрелков - Jabber как инструмент разработчика
Виктор Стрелков - Jabber как инструмент разработчикаВиктор Стрелков - Jabber как инструмент разработчика
Виктор Стрелков - Jabber как инструмент разработчикаPositive Hack Days
 
Automation from the trenches
Automation from the trenchesAutomation from the trenches
Automation from the trenchesGleb Rybalko
 
Чему мы научились, разрабатывая микросервисы / Вадим Мадисон (RuTube)
Чему мы научились, разрабатывая микросервисы / Вадим Мадисон (RuTube)Чему мы научились, разрабатывая микросервисы / Вадим Мадисон (RuTube)
Чему мы научились, разрабатывая микросервисы / Вадим Мадисон (RuTube)Ontico
 
Чему мы научились разрабатывая микросервисы?
Чему мы научились разрабатывая микросервисы?Чему мы научились разрабатывая микросервисы?
Чему мы научились разрабатывая микросервисы?Vadim Madison
 
Mva stf module 1 - rus
Mva stf module 1 - rusMva stf module 1 - rus
Mva stf module 1 - rusMaxim Shaptala
 
Workflow: работа над проектом в Яндексе
Workflow: работа над проектом в ЯндексеWorkflow: работа над проектом в Яндексе
Workflow: работа над проектом в ЯндексеDenis Chistyakov
 
Devops: от заката до рассвета
Devops: от заката до рассветаDevops: от заката до рассвета
Devops: от заката до рассветаAlexander Titov
 
Test Driven Development in .NET Applications
Test Driven Development in .NET ApplicationsTest Driven Development in .NET Applications
Test Driven Development in .NET ApplicationsAnton Vidishchev
 
Организация эффективной работы команды при разработке и поддержке сложной инф...
Организация эффективной работы команды при разработке и поддержке сложной инф...Организация эффективной работы команды при разработке и поддержке сложной инф...
Организация эффективной работы команды при разработке и поддержке сложной инф...tabtabus
 
Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Yandex
 
Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Yandex
 
"Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно..."Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно...it-people
 
Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group)
Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group)Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group)
Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group)Ontico
 
Powershell, Graphs and more. Or how to find dependencies in your systems
Powershell, Graphs and more. Or how to find dependencies in your systemsPowershell, Graphs and more. Or how to find dependencies in your systems
Powershell, Graphs and more. Or how to find dependencies in your systemsAndrey Vernigora
 
Андрей Завадский "Бессерверная архитектура"
 Андрей Завадский "Бессерверная архитектура" Андрей Завадский "Бессерверная архитектура"
Андрей Завадский "Бессерверная архитектура"Fwdays
 
Преимущества и недостатки микросервисной архитектуры в HeadHunter / Антон Ива...
Преимущества и недостатки микросервисной архитектуры в HeadHunter / Антон Ива...Преимущества и недостатки микросервисной архитектуры в HeadHunter / Антон Ива...
Преимущества и недостатки микросервисной архитектуры в HeadHunter / Антон Ива...Ontico
 

Ähnlich wie Eduard Dautov (Provectus): СКОРИНГ ML МОДЕЛЕЙ В МИКРОСЕРВИСНОЙ АРХИТЕКТУРЕ (20)

Виктор Стрелков - Jabber как инструмент разработчика
Виктор Стрелков - Jabber как инструмент разработчикаВиктор Стрелков - Jabber как инструмент разработчика
Виктор Стрелков - Jabber как инструмент разработчика
 
Automation from the trenches
Automation from the trenchesAutomation from the trenches
Automation from the trenches
 
Automation from the trenches
Automation from the trenchesAutomation from the trenches
Automation from the trenches
 
Sivko
SivkoSivko
Sivko
 
Чему мы научились, разрабатывая микросервисы / Вадим Мадисон (RuTube)
Чему мы научились, разрабатывая микросервисы / Вадим Мадисон (RuTube)Чему мы научились, разрабатывая микросервисы / Вадим Мадисон (RuTube)
Чему мы научились, разрабатывая микросервисы / Вадим Мадисон (RuTube)
 
Чему мы научились разрабатывая микросервисы?
Чему мы научились разрабатывая микросервисы?Чему мы научились разрабатывая микросервисы?
Чему мы научились разрабатывая микросервисы?
 
Mva stf module 1 - rus
Mva stf module 1 - rusMva stf module 1 - rus
Mva stf module 1 - rus
 
Workflow: работа над проектом в Яндексе
Workflow: работа над проектом в ЯндексеWorkflow: работа над проектом в Яндексе
Workflow: работа над проектом в Яндексе
 
Devops: от заката до рассвета
Devops: от заката до рассветаDevops: от заката до рассвета
Devops: от заката до рассвета
 
Test Driven Development in .NET Applications
Test Driven Development in .NET ApplicationsTest Driven Development in .NET Applications
Test Driven Development in .NET Applications
 
Организация эффективной работы команды при разработке и поддержке сложной инф...
Организация эффективной работы команды при разработке и поддержке сложной инф...Организация эффективной работы команды при разработке и поддержке сложной инф...
Организация эффективной работы команды при разработке и поддержке сложной инф...
 
Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"
 
Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»
 
"Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно..."Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно...
 
Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group)
Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group)Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group)
Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group)
 
Powershell, Graphs and more. Or how to find dependencies in your systems
Powershell, Graphs and more. Or how to find dependencies in your systemsPowershell, Graphs and more. Or how to find dependencies in your systems
Powershell, Graphs and more. Or how to find dependencies in your systems
 
Chef @DevWeb
Chef @DevWebChef @DevWeb
Chef @DevWeb
 
Team workflow
Team workflowTeam workflow
Team workflow
 
Андрей Завадский "Бессерверная архитектура"
 Андрей Завадский "Бессерверная архитектура" Андрей Завадский "Бессерверная архитектура"
Андрей Завадский "Бессерверная архитектура"
 
Преимущества и недостатки микросервисной архитектуры в HeadHunter / Антон Ива...
Преимущества и недостатки микросервисной архитектуры в HeadHunter / Антон Ива...Преимущества и недостатки микросервисной архитектуры в HeadHunter / Антон Ива...
Преимущества и недостатки микросервисной архитектуры в HeadHunter / Антон Ива...
 

Mehr von Provectus

Choosing the right IDP Solution
Choosing the right IDP SolutionChoosing the right IDP Solution
Choosing the right IDP SolutionProvectus
 
Intelligent Document Processing in Healthcare. Choosing the Right Solutions.
Intelligent Document Processing in Healthcare. Choosing the Right Solutions.Intelligent Document Processing in Healthcare. Choosing the Right Solutions.
Intelligent Document Processing in Healthcare. Choosing the Right Solutions.Provectus
 
Choosing the Right Document Processing Solution for Healthcare Organizations
Choosing the Right Document Processing Solution for Healthcare OrganizationsChoosing the Right Document Processing Solution for Healthcare Organizations
Choosing the Right Document Processing Solution for Healthcare OrganizationsProvectus
 
MLOps and Data Quality: Deploying Reliable ML Models in Production
MLOps and Data Quality: Deploying Reliable ML Models in ProductionMLOps and Data Quality: Deploying Reliable ML Models in Production
MLOps and Data Quality: Deploying Reliable ML Models in ProductionProvectus
 
AI Stack on AWS: Amazon SageMaker and Beyond
AI Stack on AWS: Amazon SageMaker and BeyondAI Stack on AWS: Amazon SageMaker and Beyond
AI Stack on AWS: Amazon SageMaker and BeyondProvectus
 
Feature Store as a Data Foundation for Machine Learning
Feature Store as a Data Foundation for Machine LearningFeature Store as a Data Foundation for Machine Learning
Feature Store as a Data Foundation for Machine LearningProvectus
 
MLOps and Reproducible ML on AWS with Kubeflow and SageMaker
MLOps and Reproducible ML on AWS with Kubeflow and SageMakerMLOps and Reproducible ML on AWS with Kubeflow and SageMaker
MLOps and Reproducible ML on AWS with Kubeflow and SageMakerProvectus
 
Cost Optimization for Apache Hadoop/Spark Workloads with Amazon EMR
Cost Optimization for Apache Hadoop/Spark Workloads with Amazon EMRCost Optimization for Apache Hadoop/Spark Workloads with Amazon EMR
Cost Optimization for Apache Hadoop/Spark Workloads with Amazon EMRProvectus
 
ODSC webinar "Kubeflow, MLFlow and Beyond — augmenting ML delivery" Stepan Pu...
ODSC webinar "Kubeflow, MLFlow and Beyond — augmenting ML delivery" Stepan Pu...ODSC webinar "Kubeflow, MLFlow and Beyond — augmenting ML delivery" Stepan Pu...
ODSC webinar "Kubeflow, MLFlow and Beyond — augmenting ML delivery" Stepan Pu...Provectus
 
"Building a Modern Data platform in the Cloud", Alex Casalboni, AWS Dev Day K...
"Building a Modern Data platform in the Cloud", Alex Casalboni, AWS Dev Day K..."Building a Modern Data platform in the Cloud", Alex Casalboni, AWS Dev Day K...
"Building a Modern Data platform in the Cloud", Alex Casalboni, AWS Dev Day K...Provectus
 
"How to build a global serverless service", Alex Casalboni, AWS Dev Day Kyiv ...
"How to build a global serverless service", Alex Casalboni, AWS Dev Day Kyiv ..."How to build a global serverless service", Alex Casalboni, AWS Dev Day Kyiv ...
"How to build a global serverless service", Alex Casalboni, AWS Dev Day Kyiv ...Provectus
 
"Automating AWS Infrastructure with PowerShell", Martin Beeby, AWS Dev Day Ky...
"Automating AWS Infrastructure with PowerShell", Martin Beeby, AWS Dev Day Ky..."Automating AWS Infrastructure with PowerShell", Martin Beeby, AWS Dev Day Ky...
"Automating AWS Infrastructure with PowerShell", Martin Beeby, AWS Dev Day Ky...Provectus
 
"Analyzing your web and application logs", Javier Ramirez, AWS Dev Day Kyiv 2...
"Analyzing your web and application logs", Javier Ramirez, AWS Dev Day Kyiv 2..."Analyzing your web and application logs", Javier Ramirez, AWS Dev Day Kyiv 2...
"Analyzing your web and application logs", Javier Ramirez, AWS Dev Day Kyiv 2...Provectus
 
"Resiliency and Availability Design Patterns for the Cloud", Sebastien Storma...
"Resiliency and Availability Design Patterns for the Cloud", Sebastien Storma..."Resiliency and Availability Design Patterns for the Cloud", Sebastien Storma...
"Resiliency and Availability Design Patterns for the Cloud", Sebastien Storma...Provectus
 
"Architecting SaaS solutions on AWS", Oleksandr Mykhalchuk, AWS Dev Day Kyiv ...
"Architecting SaaS solutions on AWS", Oleksandr Mykhalchuk, AWS Dev Day Kyiv ..."Architecting SaaS solutions on AWS", Oleksandr Mykhalchuk, AWS Dev Day Kyiv ...
"Architecting SaaS solutions on AWS", Oleksandr Mykhalchuk, AWS Dev Day Kyiv ...Provectus
 
"Developing with .NET Core on AWS", Martin Beeby, AWS Dev Day Kyiv 2019
"Developing with .NET Core on AWS", Martin Beeby, AWS Dev Day Kyiv 2019"Developing with .NET Core on AWS", Martin Beeby, AWS Dev Day Kyiv 2019
"Developing with .NET Core on AWS", Martin Beeby, AWS Dev Day Kyiv 2019Provectus
 
"How to build real-time backends", Martin Beeby, AWS Dev Day Kyiv 2019
"How to build real-time backends", Martin Beeby, AWS Dev Day Kyiv 2019"How to build real-time backends", Martin Beeby, AWS Dev Day Kyiv 2019
"How to build real-time backends", Martin Beeby, AWS Dev Day Kyiv 2019Provectus
 
"Integrate your front end apps with serverless backend in the cloud", Sebasti...
"Integrate your front end apps with serverless backend in the cloud", Sebasti..."Integrate your front end apps with serverless backend in the cloud", Sebasti...
"Integrate your front end apps with serverless backend in the cloud", Sebasti...Provectus
 
"Scaling ML from 0 to millions of users", Julien Simon, AWS Dev Day Kyiv 2019
"Scaling ML from 0 to millions of users", Julien Simon, AWS Dev Day Kyiv 2019"Scaling ML from 0 to millions of users", Julien Simon, AWS Dev Day Kyiv 2019
"Scaling ML from 0 to millions of users", Julien Simon, AWS Dev Day Kyiv 2019Provectus
 
How to implement authorization in your backend with AWS IAM
How to implement authorization in your backend with AWS IAMHow to implement authorization in your backend with AWS IAM
How to implement authorization in your backend with AWS IAMProvectus
 

Mehr von Provectus (20)

Choosing the right IDP Solution
Choosing the right IDP SolutionChoosing the right IDP Solution
Choosing the right IDP Solution
 
Intelligent Document Processing in Healthcare. Choosing the Right Solutions.
Intelligent Document Processing in Healthcare. Choosing the Right Solutions.Intelligent Document Processing in Healthcare. Choosing the Right Solutions.
Intelligent Document Processing in Healthcare. Choosing the Right Solutions.
 
Choosing the Right Document Processing Solution for Healthcare Organizations
Choosing the Right Document Processing Solution for Healthcare OrganizationsChoosing the Right Document Processing Solution for Healthcare Organizations
Choosing the Right Document Processing Solution for Healthcare Organizations
 
MLOps and Data Quality: Deploying Reliable ML Models in Production
MLOps and Data Quality: Deploying Reliable ML Models in ProductionMLOps and Data Quality: Deploying Reliable ML Models in Production
MLOps and Data Quality: Deploying Reliable ML Models in Production
 
AI Stack on AWS: Amazon SageMaker and Beyond
AI Stack on AWS: Amazon SageMaker and BeyondAI Stack on AWS: Amazon SageMaker and Beyond
AI Stack on AWS: Amazon SageMaker and Beyond
 
Feature Store as a Data Foundation for Machine Learning
Feature Store as a Data Foundation for Machine LearningFeature Store as a Data Foundation for Machine Learning
Feature Store as a Data Foundation for Machine Learning
 
MLOps and Reproducible ML on AWS with Kubeflow and SageMaker
MLOps and Reproducible ML on AWS with Kubeflow and SageMakerMLOps and Reproducible ML on AWS with Kubeflow and SageMaker
MLOps and Reproducible ML on AWS with Kubeflow and SageMaker
 
Cost Optimization for Apache Hadoop/Spark Workloads with Amazon EMR
Cost Optimization for Apache Hadoop/Spark Workloads with Amazon EMRCost Optimization for Apache Hadoop/Spark Workloads with Amazon EMR
Cost Optimization for Apache Hadoop/Spark Workloads with Amazon EMR
 
ODSC webinar "Kubeflow, MLFlow and Beyond — augmenting ML delivery" Stepan Pu...
ODSC webinar "Kubeflow, MLFlow and Beyond — augmenting ML delivery" Stepan Pu...ODSC webinar "Kubeflow, MLFlow and Beyond — augmenting ML delivery" Stepan Pu...
ODSC webinar "Kubeflow, MLFlow and Beyond — augmenting ML delivery" Stepan Pu...
 
"Building a Modern Data platform in the Cloud", Alex Casalboni, AWS Dev Day K...
"Building a Modern Data platform in the Cloud", Alex Casalboni, AWS Dev Day K..."Building a Modern Data platform in the Cloud", Alex Casalboni, AWS Dev Day K...
"Building a Modern Data platform in the Cloud", Alex Casalboni, AWS Dev Day K...
 
"How to build a global serverless service", Alex Casalboni, AWS Dev Day Kyiv ...
"How to build a global serverless service", Alex Casalboni, AWS Dev Day Kyiv ..."How to build a global serverless service", Alex Casalboni, AWS Dev Day Kyiv ...
"How to build a global serverless service", Alex Casalboni, AWS Dev Day Kyiv ...
 
"Automating AWS Infrastructure with PowerShell", Martin Beeby, AWS Dev Day Ky...
"Automating AWS Infrastructure with PowerShell", Martin Beeby, AWS Dev Day Ky..."Automating AWS Infrastructure with PowerShell", Martin Beeby, AWS Dev Day Ky...
"Automating AWS Infrastructure with PowerShell", Martin Beeby, AWS Dev Day Ky...
 
"Analyzing your web and application logs", Javier Ramirez, AWS Dev Day Kyiv 2...
"Analyzing your web and application logs", Javier Ramirez, AWS Dev Day Kyiv 2..."Analyzing your web and application logs", Javier Ramirez, AWS Dev Day Kyiv 2...
"Analyzing your web and application logs", Javier Ramirez, AWS Dev Day Kyiv 2...
 
"Resiliency and Availability Design Patterns for the Cloud", Sebastien Storma...
"Resiliency and Availability Design Patterns for the Cloud", Sebastien Storma..."Resiliency and Availability Design Patterns for the Cloud", Sebastien Storma...
"Resiliency and Availability Design Patterns for the Cloud", Sebastien Storma...
 
"Architecting SaaS solutions on AWS", Oleksandr Mykhalchuk, AWS Dev Day Kyiv ...
"Architecting SaaS solutions on AWS", Oleksandr Mykhalchuk, AWS Dev Day Kyiv ..."Architecting SaaS solutions on AWS", Oleksandr Mykhalchuk, AWS Dev Day Kyiv ...
"Architecting SaaS solutions on AWS", Oleksandr Mykhalchuk, AWS Dev Day Kyiv ...
 
"Developing with .NET Core on AWS", Martin Beeby, AWS Dev Day Kyiv 2019
"Developing with .NET Core on AWS", Martin Beeby, AWS Dev Day Kyiv 2019"Developing with .NET Core on AWS", Martin Beeby, AWS Dev Day Kyiv 2019
"Developing with .NET Core on AWS", Martin Beeby, AWS Dev Day Kyiv 2019
 
"How to build real-time backends", Martin Beeby, AWS Dev Day Kyiv 2019
"How to build real-time backends", Martin Beeby, AWS Dev Day Kyiv 2019"How to build real-time backends", Martin Beeby, AWS Dev Day Kyiv 2019
"How to build real-time backends", Martin Beeby, AWS Dev Day Kyiv 2019
 
"Integrate your front end apps with serverless backend in the cloud", Sebasti...
"Integrate your front end apps with serverless backend in the cloud", Sebasti..."Integrate your front end apps with serverless backend in the cloud", Sebasti...
"Integrate your front end apps with serverless backend in the cloud", Sebasti...
 
"Scaling ML from 0 to millions of users", Julien Simon, AWS Dev Day Kyiv 2019
"Scaling ML from 0 to millions of users", Julien Simon, AWS Dev Day Kyiv 2019"Scaling ML from 0 to millions of users", Julien Simon, AWS Dev Day Kyiv 2019
"Scaling ML from 0 to millions of users", Julien Simon, AWS Dev Day Kyiv 2019
 
How to implement authorization in your backend with AWS IAM
How to implement authorization in your backend with AWS IAMHow to implement authorization in your backend with AWS IAM
How to implement authorization in your backend with AWS IAM
 

Eduard Dautov (Provectus): СКОРИНГ ML МОДЕЛЕЙ В МИКРОСЕРВИСНОЙ АРХИТЕКТУРЕ

  • 2. • Разговор о моделях в микросервисах, не о моделях • только бэкенд, только много запросов и жирные модели • Это не про машин лерниниг
  • 3. На входе много сырых данных Как получить ML модель Математическая модель, которая могёт! ETL Train Validation
  • 4. ML модель • Модели бывают разные и предназначение у них совершенно разное • По сути своей каждая модель - программа, которая оптимально решает заданную задачу.
  • 5. Serving модели • использовать модель, до нее надо “достучаться”. Вы можете: 1. внедрить в свой микросервис. 2. создать новый микросервис, который будет обслуживать только эту модель.
  • 6. Внедрить в свою программу • Работает внутри программы - меньше накладных расходов • Вы получаете из коробки CI - версионирование и менеджмент • Вы получаете из коробки CD - запуск и остановка • microservice обвязка уже есть: Service discovery, Health checking, load balancing, circuit breaking, metrics, logs, central configuration Очевидные плюсы
  • 7. Внедрить в свою программу CI/CD не всегда сработает - разные жизненные циклы Очень не видные минусы • Скорее всего модель будут разрабатывать data scientist (а вот они наменяют) • Модели могут обновляться раз в 30 минут (можно положить в базу и динамически подтаскивать)
  • 8. Внедрить в свою программу Разные требования к железу плюсы превращаются… превращаются плюсы… • Для fastText не проблема занимать на жестком диске > 2GB • tensoflow в некоторых случаях эффективнее работает на GPU • Модели могут занимать много места в памяти • Модель может быть требовательна к CPU и отъедать его у других задач
  • 9. Внедрить в свою программу Много фреймворков написанных на разных языках и вообще, внедрить не получится • Переписывать сервис на новый язык, если вдруг DS применил новую библиотеку - НЕТ (а он применит) • Реализовывать алгоритм работы модели на своем языке - НЕТ (пусть DS сами пишут) • Некоторые библиотеки плохо работают без batch (например спарк)
  • 10. Внедрить в свою программу Очень редко когда модель используется изолированно модели бегают толпами Все предыдущие проблемы можно смело умножать на 2.5
  • 11. Внедрить в свою программу • Работает внутри программы - меньше накладных расходов • Вы получаете из коробки CI - версионирование и менеджмент • Вы получаете из коробки CD - запуск и остановка • microservice обвязка уже есть: Service discovery, Health checking, load balancing, circuit breaking, metrics, logs, central configuration Очевидные плюсы
  • 12. Отдельный микросервис • Работает отдельно и никого не трогает (можно запускать на любом железе) • Отдельный цикл разработки/тестирования/развертывания
  • 13. Отдельный микросервис • Можно делать любой pipeline • Или даже DAG
  • 14. Отдельный микросервис Много фреймворков написанных на разных языках никто не отменял. Писать для каждого microservice обвязку - НЕТ! все круто, НО есть нюанс
  • 15. Что делать? Как быть? • Если модель одна, маленькая и никогда не меняется - встраивайте • Если вы уверены, что сможете сделать обвязку для всех моделей, которые придумают DS - значит у вас есть лишнее время и ресурсы - пишите. • А что делать тому у кого много DS, много моделей и они появляются как грибы?
  • 16. Искать готовое решение oryx.io - Отличный serving, но к сожалению только Spark - Нет возможности делать Pipeline Поддерживает любую модель, но не масштабируется и нет там обвязки микросервисов есть tensorflow-serving, но это только tensorflow
  • 17. Сделать своё! globula hydro-serving Мы у мамы программисты
  • 18. Что мы сделали? Выбрали писать свой сервис для каждой модели, но хитро - с использованием Sidecar Pattern
  • 19. Что такое sidecar? и как это работает? Sidecar - отдельный процесс, который берет на себя всю работу с инфраструктурой, оставляя основному сервису только его логику
  • 20. Что нам дает Sidecar? • Отделяем логику сервиса от инфраструктуры • Proxy до других сервисов • Логгирование • Трассирование сообщений • Метрики • Resilient inter-service communication
  • 21. Плюсы от использования Sidecar • 1 имплементация, чтобы править всеми моделями • Код для сервинга модели очень простой - надо просто поднять HTTP сервер • Интеграция с уже существующей инфраструктурой • Гибкие возможности по управлению трафиком между моделями
  • 22. Implementations • Prana [Netflix] - java. Archived. • go-micro [https://github.com/micro/micro/tree/master/car] - go • linkerd [https://github.com/linkerd/linkerd] - java • envoy [https://github.com/lyft/envoy] - C++ • Istio [Google, IBM and Lyft] - go and C++
  • 23. Мы выбрали Envoy и используем следующий функционал • Метрики - (мы дописали интеграцию с Prometheus) • Tracing - используется Zipkin (можно подключить любой OpenTracing) • Service Discover • Outlier detection • Client Load Balancing • Circuit Breaker • Connection pooling • Shadowing
  • 24. Что мы делаем?Первое: собираем и версионируем микросервисы из моделей, достаем метаинформацию по структуре данных - избавляем DS от этой головной боли
  • 25. Что мы делаем?Второе: запускаем это всё в кластере ECS/Kubernetes/Swarm - помогаем OpsTeam • Запускаем собранные микросервисы на существующем кластере • Используем родные абстракции кластеров • Прячем это все от DS
  • 26. Что мы делаем? Третье: управляем взаимосвязью моделей в кластере через Sidecar
  • 27. Что мы делаем? Четвертое: интегрируемая с текущими системами мониторинга
  • 28. Что мы можем?Blue-green deployment, canary - легко, спасибо sidecar за это, не надо никаких дополнительных Load Balancer
  • 29. Что мы можем? Blue-green deployment, canary - легко, спасибо sidecar за это, не надо никаких дополнительных Load Balancer
  • 30. Roadmap • Поддержка Kubernetes • Переход на Istio - как средство управления mesh • Переход на GRPC для взаимодействия • Реактивные пайплайны • DAG
  • 32. ???