Автор: Дмитрий Раков

Введение

Сегодня мы поговорим о процессе внедрения нейронных сетей и фреймворках сервинга — инструментах, которые значительно его упрощают.

Мы познакомимся с основными концепциями и примерами с кодом, которые помогут глубже погрузиться в тему:

  1. Рассмотрим, как и зачем встраивать модель в сервис, а также обсудим важные аспекты проектирования встраиваемых систем и клиент-серверных приложений.
  2. Изучим аспекты дизайна клиент-серверного приложения в контексте нейронных сетей и подходы к обработке данных в различных сценариях.
  3. Углубимся в принципы работы asyncio и обсудим мотивацию использования сервинг-фреймворков.
  4. Рассмотрим общие компоненты и архитектуру сервинг-фреймворков, а также их особенности на примере TorchServe и Triton Inference Server.
  5. Разберём применение Triton Inference Server, создадим базовое приложение на его основе и FastAPI, которое можно будет использовать в качестве примера при самостоятельной работе.

Итак, давайте начинать! 🙂

Зачем встраивать модель в сервис?

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

После стадии исследования у нас обычно появляются следующие артефакты:

Мы можем провести локальное тестирование модели на этом наборе данных, а также оценить её на внешних тестовых наборах и провести дополнительный анализ её поведения.

Если цель — показать высокие результаты на научном датасете, то на этом этапе наша работа может быть закончена (при удовлетворённости результатом 🙂). Однако в большинстве случаев модель должна быть доступна не только нам, но и другим пользователям.

Поэтому давайте разберём несколько основных направлений использования модели в продуктовой среде.