Model serving (сервинг модели) — это слой ML-инфраструктуры, который делает обученную модель доступной для инференса как сервис: локально, по API или внутри Kubernetes. Если упростить, serving принимает запрос, проверяет готовность, передаёт данные в модель и возвращает ответ; обзорная работа Desiderata for next generation of ML model serving прямо относит инференс к значимой части программной инфраструктуры ML.
Это не обучение и не дообучение модели. Model serving относится к эксплуатационной стороне: как загрузить модель, как понять, что она готова, по какому протоколу к ней обращаться и как держать её доступной под реальной нагрузкой.
Английский термин: model serving. В официальных документах рядом часто встречаются inference и inference server: это близкие, но не одинаковые термины. Inference — сам процесс вывода, а inference server — конкретный серверный компонент, например NVIDIA Triton или MLServer.
Простыми словами
Грубо говоря, model serving — это «окно выдачи» для модели. Модель уже обучена и лежит где-то на диске или в контейнере, а serving делает так, чтобы ваше приложение могло отправить запрос и получить ответ без знания внутренних деталей.
Аналогия неточная, но полезная: обучение модели похоже на приготовление блюда, а serving — на работу линии выдачи. Пользователю не нужен рецепт; ему важны доступность, время ожидания и то, принимает ли система заказ прямо сейчас.
Как это работает
На базовом уровне схема выглядит так:
Клиент или приложение
│
│ HTTP / REST / gRPC запрос
▼
Слой model serving / inference server
│
├─ проверка готовности
├─ выбор загруженной модели
├─ передача данных в инференс
└─ формирование ответа
▼
Модель
│
▼
Ответ клиенту
Последовательность обычно такая:
- Сервер serving запускается и загружает модель или набор моделей.
- Проверяется готовность принимать трафик. В quickstart NVIDIA Triton это делается через
curl -v localhost:8000/v2/health/ready; система считается готовой, когда endpoint возвращаетHTTP 200, а модели имеют статусREADY. - Клиент отправляет запрос по сетевому интерфейсу. У MLServer официально заявлены
RESTиgRPCс совместимостью с протоколомV2. - Сервер передаёт запрос в модель и возвращает результат приложению.
- В более развитых конфигурациях сервер может держать несколько моделей одновременно. Для MLServer в документации отдельно указаны multi-model serving и adaptive batching; KServe и Seldon Core добавляют Kubernetes-уровень вокруг такого инференса.
Практический смысл этой схемы в том, что serving отделяет код приложения от деталей выполнения модели. Поэтому одна и та же прикладная логика может обращаться к локальному сервису BentoML, к Triton или к Kubernetes-обвязке вроде KServe — если протокол и контракт вызова совпадают.
Где применяется
- Локальная разработка и отладка API. В документации BentoML указано, что
bentoml serveподнимает локальный model server, а endpoint по умолчанию —http://localhost:3000/. Это удобно, когда вы сначала хотите проверить контракт запроса и ответа на своей машине. - Kubernetes-native инференс. KServe выступает как входная точка для inference services в Kubernetes. При этом quickstart прямо помечен как вариант только для экспериментов и требует Kubernetes
1.32или выше. - Выделенный inference server. Triton — это отдельный inference server; quickstart запускает его из NGC container и предлагает проверять готовность через стандартный endpoint.
- Несколько моделей и единый протокол. MLServer описан как open-source inference server с
REST/gRPC, совместимостью сV2, multi-model serving и adaptive batching. Вокруг него или аналогичных серверов можно строить более широкий слой MLOps/LLMOps, например в Kubernetes.
Для LLM-проектов serving особенно заметен на этапе, когда вы решаете, какую именно модель выкатывать: базовую или instruct, какие параметры декодирования передавать, например Top-p / Nucleus Sampling, и как обрабатывать пользовательские сценарии вроде zero-shot prompting. Если вы выбираете между более тяжёлой цепочкой рассуждений и обычным ответом, полезно отдельно посмотреть сравнение reasoning model vs обычная LLM, потому что требования к инференсу и задержке будут разными.
Практический пример
Задача: быстро понять, что слой serving не просто запущен, а действительно готов принимать запросы.
Два минимальных сценария из официальных материалов:
# BentoML: локальный server для разработки
bentoml serve
# По документации локальный endpoint по умолчанию
http://localhost:3000/
# Проверка готовности на стороне клиента
client.is_ready()
# Triton: проверка readiness endpoint
curl -v localhost:8000/v2/health/ready
# Сигнал готовности в quickstart Triton:
# endpoint возвращает HTTP 200
# и модели имеют статус READY
Здесь важно не путать «процесс стартовал» и «модель готова к инференсу». Для production-практики это разные состояния: именно поэтому документация Triton и BentoML отдельно показывает механизмы readiness-check.
Чем отличается от близких терминов
| Термин | Что означает | Чем отличается от model serving |
|---|---|---|
| Inference | Сам процесс получения предсказания или ответа от модели. | Model serving шире: он организует доступ к инференсу как к сервису. |
| Inference server | Конкретный серверный компонент, например Triton или MLServer. | Это часть serving-слоя, а не всегда вся эксплуатационная система целиком. |
| MLOps/LLMOps framework | Более широкий слой оркестрации и эксплуатации, например Seldon Core для Kubernetes. | Framework может включать model serving, но не сводится только к нему. |
Если вам нужен короткий ориентир: inference отвечает на вопрос «как модель считает ответ», inference server — «каким сервером это отдаётся», а model serving — «как всё это публикуется и поддерживается в работе для клиента или приложения».
Ограничения и заблуждения
- Заблуждение: model serving = обучение модели. Нет. В источниках речь идёт об инференсе и инфраструктуре вокруг него, а не о training или fine-tuning.
- Заблуждение: любой quickstart подходит для production. Нет. KServe отдельно предупреждает, что quickstart предназначен только для экспериментов.
- Заблуждение: один продукт закрывает весь стек. Не всегда. Triton и MLServer — это inference servers; KServe и Seldon Core добавляют Kubernetes-уровень и более широкую эксплуатационную оболочку.
- Практическое ограничение: документацию нужно читать по правильной ветке. В собранных материалах по KServe есть расхождение: landing page показывает версию
0.18, а в quickstart встречаются versioned install snippets, которые требуют отдельной проверки ветки документации перед внедрением. - Ограничение по закупке и лицензированию. В проверенном пакете нет публичных цен и региональной доступности managed/commercial вариантов; для Seldon Core README отдельно отсылает коммерческие вопросы на официальный сайт. Для выбора поставщика этого материала недостаточно.
- Платформенные ограничения тоже важны. В карточках кандидатов из source pack указано, что BentoML по умолчанию поднимает локальный endpoint, а production scaling вы настраиваете сами; для Triton отмечено, что CPU-only режим поддерживается, но GPU-only модели без GPU не загрузятся.
Редакционное ограничение: этот материал объясняет термин и сравнивает типичные OSS-инструменты только по официальной документации и релизам, проверенным на 2026-08-14. Он не заменяет проектный аудит production-архитектуры.
Практический вердикт: если вам нужно понять термин, запомните простое правило: model serving начинается там, где обученная модель превращается в доступный и проверяемый сервис инференса. Для локального старта удобно смотреть на BentoML, для выделенного inference server — на Triton или MLServer, а для Kubernetes-эксплуатации — на KServe и Seldon, но выбор зависит от среды и требований к готовности.
Связанные термины и инструменты
- Base model vs instruct model: чем отличаются базовая и instruct-модель — помогает понять, что именно вы выкатываете в serving.
- Top-p / Nucleus Sampling — параметр декодирования, который часто передаётся на этапе инференса.
- Zero-shot prompting — тип запроса, который serving-слой должен доставить в модель без дообучения.
- Reasoning model vs обычная LLM: что выбрать на практике — полезно, если вы оцениваете, как архитектурный выбор повлияет на serving и задержку.
Вопросы и ответы
Model serving и inference server — это одно и то же?
Не совсем. Inference server — это конкретный серверный компонент, а model serving — более широкий эксплуатационный слой вокруг доступа к модели для инференса.
Можно ли считать локальный запуск через BentoML полноценным model serving?
Для разработки — да: документация BentoML прямо говорит, что bentoml serve поднимает локальный model server. Но вопросы production-масштабирования в этом случае остаются на вашей стороне.
Подходит ли KServe quickstart для production?
Нет. В официальном quickstart KServe прямо указано, что он предназначен только для экспериментов, и отдельно задано требование Kubernetes 1.32+.
Как проверить, что сервер serving действительно готов?
В Triton quickstart это делается через curl -v localhost:8000/v2/health/ready: нужен HTTP 200 и статус моделей READY. В BentoML документация показывает проверку через client.is_ready().
Источники
- Desiderata for next generation of ML model serving
- Getting Started | KServe
- Quickstart Guide | KServe
- Releases · kserve/kserve · GitHub
- NVIDIA Triton Inference Server
- Quickstart Guide | NVIDIA Triton Inference Server
- Releases · triton-inference-server/server · GitHub
- Services | BentoML
- Clients | BentoML
- Releases · bentoml/BentoML · GitHub
- SeldonIO/seldon-core
- Releases · SeldonIO/seldon-core · GitHub
- Core Features | Seldon Core 2
- MLServer