3
3
Back-end
MLTools
Models,
Services
Интеграционные сервисы
платформы
User
Go\Py
Front-end
RecSys Studio Web \ Airflow
Channels
Client
Data user
DS SDK
Sber ReсSys Platform
Slide 4
Slide 4 text
Цель митапа
Познакомить python разработчиков с ml online
Рассмотреть инструментарий для сервинга моделей
Узнать получше проблематику задачи ml online
Показать MLOps\DS специалистам как можно улучшить их
сценарии
Slide 5
Slide 5 text
1
Пререквизиты
Проблема и задача от которой отталкиваемся
Slide 6
Slide 6 text
Результат разработки ML решения
Метрика 1 Метрика 2 Метрика 3 Метрика 4
Эксперимент 1 4,5 2,3 1,7 5
Эксперимент 2 3,2 5,1 4,4 3
Эксперимент 3 2,1 1,7 2,5 2,8
Эксперимент 4 4,5 2,2 1,7 7
Slide 7
Slide 7 text
Как заработать на результате труда
DS?
Slide 8
Slide 8 text
Offline режиме
Slide 9
Slide 9 text
Очень хочется основываясь на действиях
пользователя в наших продуктах, сразу ему
давать персональные предложения:
• Кредитные продукты
• Фильмы
• Ecom
• Музыка
• …
Постановка задачи
Slide 10
Slide 10 text
1
Первые шаги
Slide 11
Slide 11 text
Случайно узнаем про MLOps
Slide 12
Slide 12 text
• Saving and Serving Models
• Tracking
• Experiment Management
• Reproducibility
• Deployment Consistency
• Model Management
• Library Agnosticism
12
ML Platform
Slide 13
Slide 13 text
Open-Format Vendor File Extension License
ML Tools &
Platforms
Support
Human-
readable
Compression
"almagination" − − − − − − ✓
PMML ✓ DMG .pmml AGPL R, Python, Spark ✓ (XML) ✘
PFA ✓ DMG JSON
PFA-enabled
runtime
✓ (JSON) ✘
ONNX ✓
SIG
LFAI .onnx
TF, CNTK, Core
ML, MXNet,
ML.NET
− ✓
TF Serving Format ✓ Google .pf Tensor Flow ✘ g-zip
Pickle Format ✓ .pkl scikit-learn ✘ g-zip
JAR/ POJO ✓ .jar H2O ✘ ✓
HDF ✓ .h5 Keras ✘ ✓
MLEAP ✓ .jar/ .zip
Spark, TF, scikit-
learn
✘ g-zip
Torch Script ✘ .pt PyTorch ✘ ✓
Apple .mlmodel ✘ Apple .mlmodel
TensorFlow,
scikit-learn, Core
ML
− ✓
Как хранить модели? И где?
Slide 14
Slide 14 text
Model Registry
• Saving and Serving Models
• Tracking
• Experiment Management
• Reproducibility
• Deployment Consistency
• Model Management
• Library Agnosticism
Slide 15
Slide 15 text
Прямое решение
@asynccontextmanager
async def lifespan(app: FastAPI):
app.state.model = load_model(...)
yield
app = FastAPI(lifespan=lifespan)
@app.post("/v1/model/predict")
def predict(x: List[List[float]]):
outputs = app.state.model.predict(x)
return outputs
• Обучаем модель на исторических
данных
• Валидируем
• Делаем pickle
• Кладем модель в S3
• Или собираем модель сразу с
сервисом
• Пишем простой fastapi cервис
• Кидаем все
deployment/docker/systemd
• Рассказываем всем формат
входных данных
Slide 16
Slide 16 text
Ретроспектива решения
• Быстро
• Просто
• Дешево
• Что с метриками?
• Что с масштабированием
нагрузки
• Что с auth?
• Что с cloud native?
• Framework agnostic?
• Стандартизация?
• GPU support
• Бизнес правила
• Поддержка стриминга
Slide 17
Slide 17 text
1
Начинается MLOps
Slide 18
Slide 18 text
Добавим терминов
Serving\Inference Platform
• Advanced deployment
• Serverless
• Графы моделей
• Cloud native
Inference server
• REST / gRPC server
• Model serving
• Metrics
• Inference Protocol
32
Спасибо за внимание
Не успели поговорить:
• Security
• Multi tenant
• Feature store
• Streaming
• Adaptive batching
• GPU
• Public cloud platforms
@arsengumin
[email protected]