← Журнал · · Разбор

Inference serving platform: в начале было Слово

Начнем серию постов про инференс платформы. Знаю, вы ждали это!

А начнем мы с пролога - поэтому «В начале было Слово»

Что такое инференс?

Обратимся к кембриджскому словарю и определим значение слова Inference.

a *guess* that you make or an opinion that you form based on the *information that you have*
------------
*предположение*, которое вы делаете, или мнение, которое вы формируете на основе *имеющейся у вас информации*

Предсказание модели — это предположение, основанное на входных данных и той информации, которая она уже имеет (веса модели).

результат = model.predict(data)

То есть с точки зрения определения - Инференс это результат работы операции predict на основе переданных данных.

Инференс-сервис - это API эндпоинт до метода model.predict(data).

А где держать бизнес-логику? - В этой статье Nvidia как раз разбирают кейсы миграции с монолита в отдельный инференс-сервис.

Зачем отделять бизнес-логику?

Здесь важно понять отличие от веб-сервиса с бизнес-логикой. У нас появляется новая сущность - модель. Некий черный ящик со своим жизненным циклом. Отделение модели в отдельную сущность позволяет решить проблему масштабирования, особенно когда требуются такие дорогие ресурсы как GPU.

Пре/пост-процессинг может жить рядом с инференсом, чтобы уменьшить latency. Но нужен механизм удобного масштабирования реплик каждой сущности отдельно (ведь для них может и не нужен GPU, когда для модели - нужен). Использовать пре/пост-процессинг для реализации бизнес-логики не порождает отдельный сервис, но накладывает ограничения на поддержку и масштабирование.

Чтобы избавиться от головной боли оркетрирования и масштабирования ресурсов используются Inference serving platform.

Движок, сервис, платформа - в чем разница?

Инференс-сервис - конечный enpoint до модели с автоскейлингом, сервис мешем и полным фаршем. Пользователь взаимодействует именно с ним. Связка движка и платформы.

Инференс-движок (рантайм) - сервер-обертка нашей модели. Выдает endpoint к вашей модели (onnx, torch, llm). Например - vllm, triton, ml-server, onnx-runtime

Инференс-платформа - оркестратор ваших инференсов. Включает service-mesh, скейлинг ресурсов, оркестрирование создаваемых инференсов. Примеры таких платформ я категоризую на две группы:

K8S-oriented платформы - предоставляют CRD для создания инференсов из манифестов. Оркестрируют на уровне куба.
- Kserve
- Seldon

Dev-oriented платформы - некие кубернетесы внутри кубернетеса. Для создания инференсов создается "inference" cluster, по сути повторяющий работ k8s. Но интерфейс больше ориентирован на разработчиков.
- Yatai (BentoML)
- KubeRay (Ray Serve)

Также рекомендую посмотреть эту статью - как обзор инференс-платформ. Пока не теряет актуальности.

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

Оригинал в Telegram ↗

↑↓ выбор · Enter открыть · Esc закрыть